mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-10-17 02:29:46 +00:00
Add a test/ subdirectory (mirroring apps/system/uorb/test/) with
cmocka-based unit tests covering the NxInit logic most prone to
regression:
- init_parse_arguments(): plain/quoted arguments, "--" separator vs.
"--option" long options (regression coverage for a previously fixed
bug), argv-capacity truncation (asserting the exact folded contents
of the last slot, not just its presence).
- init_parse_config_file()/init_parse_config_lines()/
init_parse_config_buffer(): section routing, blank/whitespace-only
line skipping, unknown-section rejection, over-length line rejection,
and a line straddling two read-buffer refills, exercised through both
the file-based and buffer-based entry points.
- Action event matching: exact match, invert (!=), fnmatch wildcards,
and AND semantics across multiple events per action.
- Service conflict detection: duplicate service name rejection,
override replacing an earlier duplicate, and the SERVICE_ARGS_MAX
boundary built dynamically from CONFIG_SYSTEM_NXINIT_SERVICE_ARGS_MAX
rather than a hardcoded value.
Test sources compile action.c/parser.c/service.c a second time into a
separate nxinit_unit_test program, gated behind new
CONFIG_SYSTEM_NXINIT_TEST (depends on TESTING_CMOCKA); the default init
program is unaffected. The CMake path builds a dedicated
nxinit_unit_test target (with test/test_nxinit.c placed first in SRCS
so nuttx_add_application() renames its main() correctly); the Make path
appends the test sources into the shared CSRCS list.
Supporting bits required to make the suite exercise the real code:
- init_parse_config_buffer() is declared in parser.h and made
non-static so the buffer-based boundary test can call it directly,
alongside the existing init_parse_config_file() entry point.
- CONFIG_SYSTEM_NXINIT_ACTION_EVENTS_MAX default is raised from 1 to 2
so an action can carry more than one event ("on evA && evB"), which
the multi-event AND-semantics test exercises; a single event slot
made that test dead code.
- CONFIG_SYSTEM_NXINIT_TEST_STACKSIZE defaults to 8192: several parser
test cases build multi-hundred-byte stack buffers on top of cmocka's
own overhead, and the previous DEFAULT_TASK_STACKSIZE (2048)
overflowed the test task's stack silently on real hardware (no crash
dump, no watchdog reset, output just stopped) partway through the
suite.
Testing:
Built via `make CROSSDEV=riscv-none-elf-` for
esp32p4-pico-wifi-wareshare:nsh (CONFIG_SYSTEM_NXINIT_TEST=y) and ran
nxinit_unit_test on real esp32p4-pico-wifi-wareshare hardware over
UART:
nsh> nxinit_unit_test
[==========] nxinit_tests: Running 18 test(s).
...
[==========] nxinit_tests: 18 test(s) run.
[ PASSED ] 18 test(s).
nxstyle clean on all touched files.
Assisted-by: GitHubCopilot:claude-sonnet-5
Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
|
||
|---|---|---|
| .. | ||
| adb | ||
| adcscope | ||
| argtable3 | ||
| batterydump | ||
| cdcacm | ||
| cfgdata | ||
| cle | ||
| composite | ||
| conntrack | ||
| coredump | ||
| cpuload | ||
| critmon | ||
| cu | ||
| curl | ||
| dd | ||
| debugpoint | ||
| dhcp6c | ||
| dhcpc | ||
| dumpstack | ||
| expat | ||
| fastboot | ||
| fdt | ||
| flash_eraseall | ||
| flatbuffers | ||
| gcov | ||
| gdbstub | ||
| gprof | ||
| hex2bin | ||
| hexed | ||
| hostname | ||
| i2c | ||
| iptables | ||
| irtest | ||
| kbd | ||
| libffi | ||
| libuv | ||
| lm75 | ||
| lsan | ||
| lzf | ||
| mdio | ||
| microros | ||
| netdb | ||
| nsh | ||
| ntpc | ||
| nxcamera | ||
| nxcodec | ||
| nxdiag | ||
| nxinit | ||
| nxlooper | ||
| nxmbclient | ||
| nxpkg | ||
| nxplayer | ||
| nxrecorder | ||
| nxstore | ||
| ofloader | ||
| ping | ||
| ping6 | ||
| popen | ||
| psmq | ||
| ptpd | ||
| readline | ||
| resmonitor | ||
| sched_note | ||
| sensorscope | ||
| sensortest | ||
| setlogmask | ||
| settings | ||
| smf | ||
| spi | ||
| stackmonitor | ||
| stty | ||
| sudo | ||
| syslogd | ||
| system | ||
| taskset | ||
| tcpdump | ||
| tee | ||
| telnet | ||
| telnetd | ||
| termcurses | ||
| toybox | ||
| trace | ||
| ubloxmodem | ||
| uniqueid | ||
| uorb | ||
| usbmsc | ||
| vi | ||
| vncviewer | ||
| xipfs | ||
| ymodem | ||
| zlib | ||
| zmodem | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Make.defs | ||
| Makefile | ||