Reserve a browser-independent output-control lane beside the Reference Shelf, measure output labels with the same node font used by the toggle renderers, add regression coverage, and release Image Conveyor v1.7.3.
100 lines
3.9 KiB
YAML
100 lines
3.9 KiB
YAML
name: tests
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22.7.0"
|
|
|
|
- name: Install test dependencies
|
|
run: python -m pip install --upgrade pillow
|
|
|
|
- name: Run Python tests
|
|
run: python -m unittest discover -s tests -p 'test_*.py' -v
|
|
|
|
- name: Run frontend pure-function tests
|
|
run: node --test tests/*.mjs
|
|
|
|
- name: Check JavaScript syntax
|
|
run: |
|
|
node --check web/image_conveyor.js
|
|
node --check web/image_conveyor_math.mjs
|
|
node --check web/image_conveyor_library_ops.js
|
|
node --check web/image_conveyor_drag_ops.js
|
|
node --check web/image_conveyor_drag_math.mjs
|
|
node --check web/image_conveyor_followup_fixes.js
|
|
node --check web/image_conveyor_followup_math.mjs
|
|
node --check web/image_conveyor_interaction_guards.js
|
|
node --check web/image_conveyor_queue_qol.js
|
|
node --check web/image_conveyor_queue_qol_math.mjs
|
|
node --check web/image_conveyor_pointer_drag.js
|
|
node --check web/image_conveyor_middle_autoscroll.js
|
|
node --check web/image_conveyor_middle_autoscroll_math.mjs
|
|
node --check web/image_conveyor_reference_toggle_lane.js
|
|
node --check web/image_conveyor_reference_toggle_lane_math.mjs
|
|
node --check web/image_conveyor_reference_toggles.js
|
|
node --check web/image_conveyor_reference_toggles_math.mjs
|
|
node --check web/image_conveyor_reference_branch_pruning.js
|
|
node --check web/image_conveyor_reference_branch_pruning_math.mjs
|
|
node --check web/image_conveyor_reference_autosave.js
|
|
node --check web/image_conveyor_reference_autosave_math.mjs
|
|
node --check web/image_conveyor_toggle_state_sync.js
|
|
node --check web/image_conveyor_toggle_state_math.mjs
|
|
node --check web/image_conveyor_character_folder_readiness.js
|
|
node --check web/image_conveyor_character_folder_readiness_math.mjs
|
|
node --check web/image_conveyor_character_materialization_sync.js
|
|
node --check web/image_conveyor_character_materialization_sync_math.mjs
|
|
|
|
- name: Check Python syntax
|
|
run: python -m py_compile __init__.py image_conveyor.py image_conveyor_server.py image_conveyor_library_ops.py image_conveyor_drag_ops.py image_conveyor_drag_v2_ops.py image_conveyor_toggle_runtime.py image_conveyor_character_consistency.py
|
|
|
|
- name: Check whitespace errors
|
|
shell: bash
|
|
env:
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
BASE_REF: ${{ github.base_ref }}
|
|
BEFORE_SHA: ${{ github.event.before }}
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
if [[ "$EVENT_NAME" == "pull_request" && -n "$BASE_REF" ]]; then
|
|
git fetch --no-tags origin "$BASE_REF:refs/remotes/origin/$BASE_REF"
|
|
compare_ref="origin/$BASE_REF"
|
|
elif [[ "$EVENT_NAME" == "push" && -n "$BEFORE_SHA" && "$BEFORE_SHA" != "0000000000000000000000000000000000000000" ]]; then
|
|
if ! git cat-file -e "$BEFORE_SHA^{commit}" 2>/dev/null; then
|
|
git fetch --no-tags origin "$BEFORE_SHA"
|
|
fi
|
|
compare_ref="$BEFORE_SHA"
|
|
elif git rev-parse --verify origin/main >/dev/null 2>&1; then
|
|
compare_ref="origin/main"
|
|
elif git rev-parse --verify HEAD^ >/dev/null 2>&1; then
|
|
compare_ref="HEAD^"
|
|
else
|
|
compare_ref="HEAD"
|
|
fi
|
|
|
|
merge_base="$(git merge-base HEAD "$compare_ref")"
|
|
git diff --check "$merge_base"...HEAD
|