summaryrefslogtreecommitdiff
path: root/tools/tests
Commit message (Collapse)AuthorAgeFilesLines
* test(build): add make watchdog, the glance memory budget and the glance ↵cirakg9 days2-1/+13
| | | | | | | | | | | | | | | screenshot - make watchdog (in make ci): a stress build encodes, packs, turns into runs and draws the largest code of every 2D symbology at two steps per event on the Forerunner 255S and 70; it fails on a watchdog trip, and the last code left on the screen must decode (bitmap path on the 70). - make memtest checks the glance (DIAG glance, budget 70 % of 64 KB). - screenshots.sh launches the app again after the flow and compares the glance with the favourite's code (glance_code.png on 7 watches); the About goldens show 0.8.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(codes): bound every 2D encoding step under the watchdog; draw large ↵cirakg9 days1-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | codes from runs M6's step sizes were estimates, only exercised with small codes. With the largest inputs the app accepts, every 2D encoder tripped the watchdog on the Forerunner 255S (and the biggest steps were far over the 768 KB watches' limit), so a large code added from the phone would have stopped the app during settings processing at every start. - QR: resumable segmentation, Reed-Solomon, interleaving, function patterns and final mask; mask scoring on rows and columns packed 16 modules per word (same penalties, checked against the per-module rules). - Reed-Solomon: resumable field tables and generator, encoder shifting with native slice. - Data Matrix, Aztec, PDF417: resumable encodation, stuffing, compaction, placement and build; Data Matrix's grid as a byte array (90 KB -> 35 KB); PDF417 refuses text that can't fit the screen before compacting. - Cache format 2 with 16-bit sizes (wide PDF417 was cached wrong); packing in steps; codes drawn as runs, and from a bitmap painted in steps when a frame can't draw all runs. - The job runner does two steps per tick on 768 KB watches; gen_products --check verifies each product's watchdogCount fits that. - CodeView renews full brightness (AMOLED) or the backlight (MIP) for up to a minute from its single ticker; a tap restarts the minute. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* build(lint): validate resource XML against the SDK schema and cross-check ↵cirakg9 days1-0/+108
| | | | | | | | | | the settings form tools/check_resources.py checks every resource file against the SDK's resources.xsd and that settings, properties and strings agree. Adds the pure-Python, MIT-licensed xmlschema to the dev image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare Aztec with aztec_code_generator, decode it and its ↵cirakg10 days1-0/+8
| | | | | | screenshot Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare Data Matrix and PDF417 with references and decode them, ↵cirakg10 days1-1/+25
| | | | | | also from screenshots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare QR with segno, decode QR dumps and the QR screenshotcirakg10 days1-0/+22
| | | | Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare with zxing-cpp reference rows and decode encoder output ↵cirakg10 days1-0/+65
| | | | | | and screenshots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(import): cover parsers, importer and a seeded fuzz corpus; import 100 ↵cirakg10 days1-0/+41
| | | | | | entries in the UI flow Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(ui): drive the simulator with a scripted flow and check every screencirakg10 days2-0/+106
| | | | | | | | | tools/ui_flow.py clicks buttons and taps from the device files, waits for DIAG shown lines and compares 10 screens per watch with goldens on four test and three spot-check devices. Adds the fixture-wrap generator, UI logic tests and driver tests; the launcher opens apps from their glance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(tools): add screenshot, budget and product checks; enforce file headerscirakg11 days9-26/+273
| | | | | | | | | | | | | | | | | | - sim_screenshot.py finds the device drawing in the simulator window, crops the screen and compares it with approved golden images. - check_budgets.py reads key=value DIAG/HARNESS lines (the simulator console escapes quotes, so JSON was dropped). - ciq_test_report.py accepts SDK 9.2.0's real summary line `PASSED (passed=N, failed=N, errors=N)`; a captured log is a fixture. - gen_products.py checks all manifest products are watches with API 5.0+ and at least 512 KB for apps. - lint_project.py rule HDR001: every file carries the Author/Summary header (JSON keys, PNG text chunks; generated package-lock exempt). - make_icon.py --all draws one icon per launcher size in use. - Golden screenshots for fr255s, venusq2, fr70 and fr965. - 44 tests, warnings as errors, ruff and mypy --strict clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(tools): add test-log judge, docs and policy checks with testscirakg11 days6-0/+343
- ciq_test_report.py: decides pass/fail from Run No Evil output instead of monkeydo's unreliable exit code; writes JUnit XML. - check_docs.py: offline check of relative links and GitHub anchors. - lint_project.py: project rules (headers, no logging outside Diag, no secret-like literals, no network APIs or permissions). - check_budgets.py with budgets.json: perf and memory gates. - make_icon.py: reproducible launcher icon. - 31 pytest tests, including Hypothesis fuzzing of the log parser and integration checks against the real docs and sources; ruff and mypy (strict) clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>