108: end-to-end tests + determinism + CI dedup #47

Merged
ykp merged 1 commit from feat/108-e2e-tests into main 2026-10-07 09:20:01 +02:00
Owner

Step 108 — End-to-end tests + determinism

CI fix — double execution

.forgejo/workflows/ci.yml: restricted push trigger to main only, added pull_request trigger. Previously on: push ran on every branch push — when pushing to a branch with an open PR, Forgejo triggered the workflow twice (once for push, once implicitly for the PR).

New test files

  • tests/support/testgnss_test_data.py — make_synthetic_gps_sig(), make_synthetic_interference_sig() helpers
  • tests/test_testgnss_determinism.py — 2 tests verifying byte-identical surfaces on repeated runs
  • tests/test_testgnss_interference.py — 3 tests: monotonic peak-to-floor degradation vs C/I, +60 dB ≈ clean, −60 dB heavily buried
  • tests/test_testgnss_gensig_compat.py — optional cross-check against gensig reference reader (skipped when checkout absent)

Verification

All testgnss tests pass (no regression)
ruff check src/testgnss/ tests/ → All checks passed

This closes the testgnss implementation. All 8 steps (101–108) are complete.

## Step 108 — End-to-end tests + determinism ### CI fix — double execution `.forgejo/workflows/ci.yml`: restricted push trigger to `main` only, added `pull_request` trigger. Previously `on: push` ran on every branch push — when pushing to a branch with an open PR, Forgejo triggered the workflow twice (once for push, once implicitly for the PR). ### New test files - **tests/support/testgnss_test_data.py** — `make_synthetic_gps_sig()`, `make_synthetic_interference_sig()` helpers - **tests/test_testgnss_determinism.py** — 2 tests verifying byte-identical surfaces on repeated runs - **tests/test_testgnss_interference.py** — 3 tests: monotonic peak-to-floor degradation vs C/I, +60 dB ≈ clean, −60 dB heavily buried - **tests/test_testgnss_gensig_compat.py** — optional cross-check against gensig reference reader (skipped when checkout absent) ### Verification ``` All testgnss tests pass (no regression) ruff check src/testgnss/ tests/ → All checks passed ``` This closes the testgnss implementation. All 8 steps (101–108) are complete.
108(testgnss): E2E tests + determinism + CI dedup
All checks were successful
ci / test (3.12) (pull_request) Successful in 2m51s
ci / test (3.14) (pull_request) Successful in 2m53s
ci / test (3.9) (pull_request) Successful in 2m24s
ci / testgnss (3.12) (pull_request) Successful in 2m22s
ci / testgnss (3.14) (pull_request) Successful in 1m57s
ci / testgnss (3.9) (pull_request) Successful in 1m53s
d4ae29ec80
- .forgejo/workflows/ci.yml: restrict push trigger to main only,
  add pull_request trigger to avoid double CI runs on PR branches
- tests/support/testgnss_test_data.py: synthetic GPS/interference .sig
  file generation helpers
- tests/test_testgnss_determinism.py: 2 tests — identical surfaces
  for signal alone and with interference (seed-fixed)
- tests/test_testgnss_interference.py: 3 tests — monotonic peak-to-floor
  degradation, C/I=+60dB ≈ clean, C/I=-60dB heavily buried
- tests/test_testgnss_gensig_compat.py: optional byte-compatibility
  cross-check against gensig reference reader (skipped when absent)
- Backlog: 107 moved to docs/done/
ykp merged commit 141d47283f into main 2026-10-07 09:20:01 +02:00
ykp deleted branch feat/108-e2e-tests 2026-10-07 09:20:01 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ykp/gengnss!47
No description provided.