2424 - name : Set up Python
2525 uses : actions/setup-python@v6.3.0
2626 with :
27- python-version : " 3.12.13 "
27+ python-version : " 3.12"
2828 cache : " pip"
2929 cache-dependency-path : |
3030 pyproject.toml
6565 - name : Run PowerShell Lint
6666 shell : pwsh
6767 run : |
68- $scriptPaths = @("./install_dependencies.ps1", "./run_local_pipeline.ps1")
68+ $scriptPaths = @(
69+ "./install_dependencies.ps1",
70+ "./run_local_pipeline.ps1",
71+ "./.github/scripts/Invoke-PowerShellLint.ps1"
72+ )
6973 & ./.github/scripts/Invoke-PowerShellLint.ps1 -ScriptPaths $scriptPaths -MaxCyclomaticComplexity 9 -MaxNestingDepth 4
7074
7175 - name : Run Markdown auto-delinter (mdformat)
9296 run : |
9397 poetry run ruff check modules auto_subtitle.py tests
9498
99+ - name : Run Ruff format check
100+ run : |
101+ poetry run ruff format --check .
102+
95103 - name : Run Flake8
96104 run : |
97105 poetry run flake8 modules auto_subtitle.py tests
@@ -122,7 +130,7 @@ jobs:
122130
123131 - name : Run Radon Complexity (A-grade enforced)
124132 run : |
125- poetry run radon cc auto_subtitle.py modules tests/modules tests/orchestration -s -a | tee radon_report.txt
133+ poetry run radon cc auto_subtitle.py modules tests -s -a | tee radon_report.txt
126134
127135 {
128136 echo "## Radon Cyclomatic Complexity"
@@ -139,7 +147,7 @@ jobs:
139147
140148 - name : Run Radon Maintainability Index (A-grade enforced)
141149 run : |
142- poetry run radon mi auto_subtitle.py modules tests/modules tests/orchestration -s | tee radon_mi_report.txt
150+ poetry run radon mi auto_subtitle.py modules tests -s | tee radon_mi_report.txt
143151
144152 {
145153 echo "## Radon Maintainability Index (A-grade enforced)"
@@ -156,7 +164,7 @@ jobs:
156164
157165 - name : Run Radon Halstead Metrics (hal)
158166 run : |
159- poetry run radon hal auto_subtitle.py modules tests/modules tests/orchestration | tee radon_hal_report.txt
167+ poetry run radon hal auto_subtitle.py modules tests | tee radon_hal_report.txt
160168
161169 {
162170 echo "## Radon Halstead Metrics"
@@ -177,7 +185,7 @@ jobs:
177185 - name : Set up Python
178186 uses : actions/setup-python@v6.3.0
179187 with :
180- python-version : " 3.12.13 "
188+ python-version : " 3.12"
181189 cache : " pip"
182190 cache-dependency-path : |
183191 pyproject.toml
@@ -208,7 +216,7 @@ jobs:
208216
209217 - name : Run Tests with Coverage
210218 run : |
211- poetry run pytest --cov=auto_subtitle --cov=modules --cov-branch --cov-report=xml --cov-report=json --cov-report=term --cov-fail-under=90 tests/
219+ poetry run pytest -m "not e2e" - -cov=auto_subtitle --cov=modules --cov-branch --cov-report=xml --cov-report=json --cov-report=term --cov-fail-under=90 tests/
212220
213221 - name : Enforce Per-File Coverage >= 90%
214222 run : |
@@ -241,7 +249,7 @@ jobs:
241249 - name : Set up Python
242250 uses : actions/setup-python@v6.3.0
243251 with :
244- python-version : " 3.12.13 "
252+ python-version : " 3.12"
245253 cache : " pip"
246254 cache-dependency-path : |
247255 pyproject.toml
@@ -279,3 +287,67 @@ jobs:
279287 run : |
280288 poetry run python tests/tools/transform_metrics.py coverage.xml assets/coverage.svg
281289 cat coverage_summary.md >> $GITHUB_STEP_SUMMARY
290+
291+ e2e_real_dependencies :
292+ name : " 🚀 Real Dependencies E2E (${{ matrix.os }})"
293+ needs : [static_analysis, technical_validation]
294+ strategy :
295+ fail-fast : false
296+ matrix :
297+ os : [ubuntu-latest, macos-latest, windows-latest]
298+ runs-on : ${{ matrix.os }}
299+ steps :
300+ - uses : actions/checkout@v7.0.0
301+ with :
302+ persist-credentials : false
303+
304+ - name : Set up Python
305+ uses : actions/setup-python@v6.3.0
306+ with :
307+ python-version : " 3.12"
308+
309+ - name : Install FFmpeg (macOS)
310+ if : runner.os == 'macOS'
311+ run : brew install ffmpeg
312+ env :
313+ HOMEBREW_NO_REQUIRE_TAP_TRUST : " 1"
314+
315+ - name : Install FFmpeg (Linux)
316+ if : runner.os == 'Linux'
317+ run : |
318+ sudo apt-get update
319+ sudo apt-get install -y ffmpeg
320+
321+ - name : Install FFmpeg (Windows)
322+ if : runner.os == 'Windows'
323+ run : choco install ffmpeg --no-progress -y
324+ shell : pwsh
325+
326+ - name : Install Poetry
327+ run : python -m pip install "poetry==${{ env.POETRY_VERSION }}"
328+
329+ - name : Configure Poetry In-Project Virtualenv
330+ run : poetry config virtualenvs.in-project true
331+
332+ - name : Install Real ML & Test Dependencies (Linux)
333+ if : runner.os == 'Linux'
334+ run : poetry install -v --with ml,dev --no-root
335+ env :
336+ POETRY_REQUESTS_TIMEOUT : " 300"
337+
338+ - name : Install E2E Test Dependencies (macOS/Windows)
339+ if : runner.os != 'Linux'
340+ run : poetry install -v --only main,dev --no-root
341+
342+ - name : Run Real Dependencies E2E Test Suite (Linux)
343+ if : runner.os == 'Linux'
344+ run : poetry run pytest -m e2e tests/e2e/test_real_pipeline.py -v
345+
346+ - name : Run Real Dependencies E2E Smoke Tests (macOS)
347+ if : runner.os == 'macOS'
348+ run : poetry run pytest -m e2e -k "not real_nllb_translator_cpu_execution" tests/e2e/test_real_pipeline.py -v
349+
350+ - name : Run Real Dependencies E2E Smoke Tests (Windows)
351+ if : runner.os == 'Windows'
352+ shell : pwsh
353+ run : poetry run pytest -m e2e -k "not real_nllb_translator_cpu_execution" tests/e2e/test_real_pipeline.py -v
0 commit comments