Files
Adafruit_GPS/extras/tests
ladyadaandLimor Fried fd0fd87951 Check documentation with the CI Doxygen version
Document the deleted assignment return and add a local check using the
same Doxygen 1.8.13 binary, configuration, and warning policy as CI.
Run it before regression tests to expose documentation failures early.

Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 17:01:10 -04:00
..
2026-09-15 15:41:15 -04:00
2026-09-15 15:41:15 -04:00

Regression tests

Run every test on Linux with Python 3 and g++:

python3 extras/tests/run_tests.py

The runner discovers every .cpp and .ino in the test subdirectories. Each C++ test supplies main(). Each Arduino sketch supplies setup(), loop(), and a testsPassed flag that remains false until all checks pass. The runner calls setup() and loop() once and returns failure when that flag is false. New tests are picked up automatically without editing CI.

All tests use AddressSanitizer and UndefinedBehaviorSanitizer. Compiler warnings, failed checks, sanitizer findings, and a 30-second execution timeout fail the job. Other tests still run after an individual failure.

The Arduino sketches use the real library sources with NMEA extensions enabled, including the marine and RMB checks. extras/test_support provides serial output and a real monotonic clock; the wakeup timeout test takes ten seconds. I2C, SPI, GPIO, and hardware serial input abort if used. This runs the parser and mock-stream regressions, not physical GPS/SD hardware or MCU emulation. The sketches remain usable on Arduino boards with the normal Arduino core.

Check documentation before pushing, on Linux or Windows through WSL:

bash extras/tests/check_doxygen.sh

This requires curl and tar and downloads the same Doxygen 1.8.13 binary and default configuration used by Adafruit's documentation deployment job. Any Doxygen output or missing HTML fails the check; a newer system Doxygen is not a substitute. Build files and the diagnostic log stay in a temporary directory outside the checkout. CI runs this check before the regression tests, so documentation failures appear without waiting for all Arduino builds.