diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 55d8b96..14d91cb 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -17,6 +17,7 @@ jobs: INTEGRATION_TEST: '1' # Used by the integration tests to locate ffmpeg reliably. FFMPEG_PATH: '/usr/bin/ffmpeg' + TEST_PLAYLIST_URL: 'https://www.youtube.com/playlist?list=PLUmRr21IDW9WCW87FnbWAbIwwZHbf-lAz' steps: - name: Checkout repository diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index aca0175..fd16cbf 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -3,9 +3,11 @@ name: Unit tests on: workflow_dispatch: push: - branches: [ main ] + branches: + - main pull_request: - branches: [ main ] + branches: + - main concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -22,14 +24,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - name: Create venv and install project + - name: Install project run: | set -euo pipefail - python3 -m venv .venv - . .venv/bin/activate python -m pip install --upgrade pip # Install project (editable) and test deps - python -m pip install -e .[test] || python -m pip install -e . + python -m pip install -e . python -m pip install pytest - name: Run tests @@ -37,5 +37,4 @@ jobs: PYTHONPATH: ${{ github.workspace }} run: | set -euo pipefail - . .venv/bin/activate pytest -q diff --git a/tests/test_integration_audio.py b/tests/test_integration_audio.py index e6e00e2..1865ec4 100644 --- a/tests/test_integration_audio.py +++ b/tests/test_integration_audio.py @@ -9,12 +9,14 @@ from src.app.core.sync.executor import ActionExecutor from src.app.core.sync.service import SyncService -PLAYLIST_URL = "https://www.youtube.com/playlist?list=PLUmRr21IDW9WCW87FnbWAbIwwZHbf-lAz" +PLAYLIST_URL = os.getenv("TEST_PLAYLIST_URL") def _require_integration(): if not os.getenv("INTEGRATION_TEST"): pytest.skip("Set INTEGRATION_TEST=1 to enable real download tests") + if not PLAYLIST_URL: + pytest.skip("Set TEST_PLAYLIST_URL to enable real download tests") @pytest.mark.integration diff --git a/tests/test_integration_both.py b/tests/test_integration_both.py index 1107eee..d126e9a 100644 --- a/tests/test_integration_both.py +++ b/tests/test_integration_both.py @@ -9,12 +9,14 @@ from src.app.core.sync.executor import ActionExecutor from src.app.core.sync.service import SyncService -PLAYLIST_URL = "https://www.youtube.com/playlist?list=PLUmRr21IDW9WCW87FnbWAbIwwZHbf-lAz" +PLAYLIST_URL = os.getenv("TEST_PLAYLIST_URL") def _require_integration(): if not os.getenv("INTEGRATION_TEST"): pytest.skip("Set INTEGRATION_TEST=1 to enable real download tests") + if not PLAYLIST_URL: + pytest.skip("Set TEST_PLAYLIST_URL to enable real download tests") @pytest.mark.integration diff --git a/tests/test_integration_video.py b/tests/test_integration_video.py index ebf5157..0a95dff 100644 --- a/tests/test_integration_video.py +++ b/tests/test_integration_video.py @@ -9,12 +9,14 @@ from src.app.core.sync.executor import ActionExecutor from src.app.core.sync.service import SyncService -PLAYLIST_URL = "https://www.youtube.com/playlist?list=PLUmRr21IDW9WCW87FnbWAbIwwZHbf-lAz" +PLAYLIST_URL = os.getenv("TEST_PLAYLIST_URL") def _require_integration(): if not os.getenv("INTEGRATION_TEST"): pytest.skip("Set INTEGRATION_TEST=1 to enable real download tests") + if not PLAYLIST_URL: + pytest.skip("Set TEST_PLAYLIST_URL to enable real download tests") @pytest.mark.integration @@ -55,4 +57,3 @@ def test_integration_download_video(tmp_path): video_dir = save_path / "video" assert video_dir.exists() assert any(p.suffix.lower() == ".mp4" for p in video_dir.glob("*.mp4")) -