# G3 Manual Test Setup This setup supports only TC041-TC066, TC141, TC148, TC149, TC152, and TC153. It prepares deterministic fixtures and native probes; it does not assign runtime results. ## Host Preparation From the `repo-pre-15` root, use an absent output directory: ```sh git rev-parse HEAD tests/prepare_g3_fixtures.sh /work/build/repo-pre15-g3 python3 -B tests/pre15/fixtures/g3.py verify \ --output /work/build/repo-pre15-g3 sha256sum /work/build/repo-pre15-g3/G3-MANIFEST.json ``` The maintained generator is `tests/pre15/fixtures/g3.py`. The compatibility entry point `tests/g3_fixtures.py` delegates to it. Normal generation does not read `tests/results/`; B01 separately proves that the migrated metadata and final-review sets match both archived scripts byte for byte. `G3-MANIFEST.json` records the generator SHA256, erofs-utils identity, exact `mkfs.erofs` argv, canonical source-tree inventories, image hashes, and expected directory sets. Record this manifest, all checksum files, the exact source commit, and the KLD SHA256. Transfer the fixtures, sources, and only these native probes to the FreeBSD 15 guest: ```text readdir_probe.c g3_vfs_probe.c stat_special.c nfs_fh_tool.c mmap_fault.c sparse_hole_probe.c ``` ## Guest Preparation Build the KLD natively from an archive exported from the recorded commit. Build the probes directly: ```sh cc -O2 -Wall -Wextra -Werror -std=c17 readdir_probe.c -o readdir_probe cc -O2 -Wall -Wextra -Werror -std=c17 g3_vfs_probe.c -o g3_vfs_probe cc -O2 -Wall -Wextra -Werror -std=c17 stat_special.c -o stat_special cc -O2 -Wall -Wextra -Werror -std=c17 nfs_fh_tool.c -o nfs_fh_tool cc -O2 -Wall -Wextra -Werror -std=c17 mmap_fault.c -o mmap_fault cc -O2 -Wall -Wextra -Werror -std=c17 sparse_hole_probe.c \ -o sparse_hole_probe ``` Before the first test, require no EROFS mount, no md provider, and no stale EROFS KLD. Load only the exact KLD under test. For each test, attach a fresh dynamic vnode md, mount read-only, execute that numbered Markdown procedure, then unmount and detach before continuing. The report records the literal command, exit status or syscall errno, relevant fixture/data/KLD hashes, dmesg delta, and cleanup state for every test. ## Common Mount Pattern ```sh mkdir -p /tmp/repo-pre15-g3/mnt unit=$(mdconfig -a -t vnode -f IMAGE) mount -t erofs -o ro "/dev/$unit" /tmp/repo-pre15-g3/mnt # Execute exactly one numbered test. umount /tmp/repo-pre15-g3/mnt mdconfig -d -u "$unit" ``` TC153 additionally creates and removes its documented multi-terabyte sparse provider. Final cleanup requires zero EROFS mounts, zero owned md providers, the test KLD unloaded, and all guest-generated sparse files removed.