mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-06 11:18:06 +00:00
Three lightweight static checks, all enrolled in CI's unit-test allowlist along with the new web-cache test: - test_template_targets.py: every literal render_template() target must exist (would have caught the weather/stocks partial 500s at commit time). - test_widget_scripts.py: every widget JS file must be script-included in base.html or explicitly allowlisted with a reason (would have caught the unloaded time-picker/file-upload-single/plugin-file-manager widgets), and allowlisted files must NOT be included (prevents the example widget from shadowing the real color-picker). - test_doc_links.py: relative markdown links in active docs must resolve (docs/archive/ exempt). Each guard was verified to fail against the pre-PR tree and pass now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SXb4mKcAkVaxkeTb3YnAdr
88 lines
2.9 KiB
YAML
88 lines
2.9 KiB
YAML
name: Tests
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [main]
|
|
|
|
# Both jobs only check out the repo and run pytest.
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
plugin-safety:
|
|
name: Plugin safety harness + unit tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
|
with:
|
|
python-version: "3.12"
|
|
cache: pip
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install -r requirements.txt -r requirements-test.txt
|
|
pip install RGBMatrixEmulator
|
|
|
|
- name: Run harness + visual rendering tests
|
|
run: |
|
|
pytest --no-cov \
|
|
test/plugins/test_harness.py \
|
|
test/plugins/test_visual_rendering.py \
|
|
test/plugins/test_plugin_matrix.py
|
|
|
|
unit-tests:
|
|
name: Core unit tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
|
with:
|
|
python-version: "3.12"
|
|
cache: pip
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install -r requirements.txt -r requirements-test.txt
|
|
pip install RGBMatrixEmulator
|
|
|
|
# Safety net for the shared sports/scroll/style infrastructure. These
|
|
# suites existed but were not enrolled in CI, so a refactor of
|
|
# src/base_classes or src/common could regress them silently. Enrolled
|
|
# explicitly (not `pytest test/`) so known hardware-only suites don't
|
|
# break CI; grow this list as more suites are made headless.
|
|
- name: Run core unit suites
|
|
run: |
|
|
pytest --no-cov \
|
|
test/test_skin_system.py \
|
|
test/test_font_manager.py \
|
|
test/test_data_sources.py \
|
|
test/test_api_extractors.py \
|
|
test/test_scroll_helper.py \
|
|
test/test_scroll_helper_continuous.py \
|
|
test/test_adaptive_layout.py \
|
|
test/test_loader_compat_warning.py \
|
|
test/test_sports_base_characterization.py \
|
|
test/test_element_style.py \
|
|
test/test_sports_core_promotions.py \
|
|
test/test_sports_modes_promotions.py \
|
|
test/test_sports_capabilities.py \
|
|
test/test_sports_scroll.py \
|
|
test/test_version_consistency.py \
|
|
test/test_plugin_compatibility_gate.py \
|
|
test/test_install_preserves_existing.py \
|
|
test/test_core_owned_config_keys.py \
|
|
test/test_template_targets.py \
|
|
test/test_widget_scripts.py \
|
|
test/test_doc_links.py \
|
|
test/web_interface/test_cache.py
|