name: CI on: push: branches: ["main"] pull_request: branches: ["main"] permissions: contents: read jobs: compile: # Byte-compile every first-party .py to catch syntax errors. No deps. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: py_compile first-party sources run: | git ls-files '*.py' | grep -vE '^(yt_dlp|spotify_dl)/' | xargs python -m py_compile echo "All first-party sources compile." unit: # Pure-logic tests; tested modules guard heavy deps, so only pytest needed. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install test deps run: | python -m pip install --upgrade pip pip install pytest - name: Run unit tests run: pytest tests/unit -v integration: # Boot the Flask services and assert the X-Conjurer-Api-Key auth contract. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install service deps run: | python -m pip install --upgrade pip pip install pytest flask waitress requests - name: Run integration tests run: pytest tests/integration -v