Files
erofs-freebsd-out-tree/tests/TC161-build-nm-failure.md
T
2026-08-13 10:44:59 +02:00

39 lines
1.3 KiB
Markdown

# Test Case: Build Undefined-Symbol Tool Failure
**Test ID**: TC161-build-nm-failure
**Category**: Build Qualification
**Priority**: Critical
**Regression**: `nm -u | awk` could pass when `nm` itself failed
## Objective
Verify that `build.sh` treats `nm` failure as fatal independently of the awk
`bcmp` check, safely removes its temporary output, preserves prior module output,
and still builds both supported configurations normally.
## Procedure
1. On FreeBSD 15, run normal exact-source builds with `WITH_ZSTDIO=0` and 1.
Require both SUCCESS lines and save each module hash.
2. Create a private executable `nm` shim containing:
```sh
#!/bin/sh
exit 73
```
3. Put only that shim directory before the normal system paths and run
`WITH_ZSTDIO=0 ./build.sh`, capturing stdout/stderr and exit status.
4. Require nonzero status, `ERROR: nm failed while checking erofs.ko`, no SUCCESS
line, unchanged hash for the previously published `build/erofs.ko`, and no
`build/obj/nm-undef.*` file.
5. Run one final normal build to prove the trap and shim did not contaminate the
environment.
## Expected Results
- The shimmed build fails after module linkage and before publication.
- Awk cannot convert an `nm` execution failure into PASS.
- Temporary output is removed on failure and normal dual-configuration builds
remain successful.