Public Access
Add native unit tests for the Nano firmware
- New native environment: pio test -e native - test/mocks: fake Arduino core, EEPROM and recording BROSE9323 driver - test/test_nano: 25 tests covering every command, bitmaps, bad input, flip time storage and the periodic full redraw - Board environments ignore tests so they are never uploaded Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
80f3f78152
commit
8415dee347
8 files changed
+505
-4
No files matched your search
@@ -16,7 +16,8 @@ See README.md for the overview.
|
||||
or `$env:USERPROFILE\.platformio\penv\Scripts\pio.exe run` (PowerShell).
|
||||
- If an ESP32 build fails with `No module named 'intelhex'`, run
|
||||
`~/.platformio/penv/Scripts/python.exe -m pip install intelhex`.
|
||||
- After any change, build both targets: `pio run -e nano -e esp32`.
|
||||
- After any change, build both targets (`pio run`). After Nano changes, also run
|
||||
`pio test -e native`.
|
||||
|
||||
## Constraints
|
||||
|
||||
@@ -55,9 +56,13 @@ See README.md for the overview.
|
||||
- The Nano only replies `READY` (at boot) and `ERR: ...`. There is no per-frame
|
||||
acknowledgement. Whether the Nano's TX is wired to the ESP's RX is unconfirmed, so every
|
||||
wait for a reply needs a timeout.
|
||||
- To test the parser without hardware, compile all `src/nano/*.cpp` files with g++ (Strawberry Perl
|
||||
provides it at `C:\Strawberry\c\bin`) and mock headers for `Arduino.h`, `EEPROM.h` and
|
||||
`BROSE9323.h`.
|
||||
- Unit tests: `pio test -e native` runs `test/test_nano/` on the PC with the fakes in
|
||||
`test/mocks/` (Arduino, EEPROM, and a `BROSE9323` that records calls). It needs gcc on
|
||||
PATH (Strawberry Perl provides it at `C:\Strawberry\c\bin`). Add a test for every
|
||||
protocol change. The mocks only implement what the Nano code uses, so extend them when
|
||||
new Arduino or driver functions are called.
|
||||
- The board environments have `test_ignore = *`, so test firmware is never uploaded. Plain
|
||||
`pio test` runs nothing; always pass `-e native`.
|
||||
|
||||
## Git
|
||||
|
||||
|
||||
Reference in new issue
Block a user