# Linux NCP smoke tests This directory contains optional Linux-side integration tests for endpoints that are easier to exercise from a Unix host than from the DOS test utilities. The tests use the ncpfs/libncp client library. They are not built by default because they require the host ncpfs development headers/library and a running NetWare-compatible server. Build with: ```sh cmake -DMARS_NWE_BUILD_LINUX_TESTS=ON ... cmake --build . --target afp_entry_id_smoke ``` ## AFP Entry ID smoke test `afp_entry_id_smoke` sends the WebSDK-documented NetWare AFP request: ```text NCP 0x2222/35/12 AFP Get Entry ID From Path Name ``` It uses libncp's `NWRequestSimple()` path, so it goes through the same client transport stack as other Linux ncpfs utilities. Example: ```sh ./tests/linux/afp_entry_id_smoke -S MARS -U SUPERVISOR -P secret SYS:PUBLIC ``` The test accepts NetWare-style `VOL:PATH` arguments. It logs in through libncp, allocates a temporary directory handle for the volume root, and sends only the relative path to `AFP Get Entry ID From Path Name`, matching the WebSDK request layout of `DirectoryHandle + Path String`. Useful smoke cases for a standard MARS-NWE `SYS` volume are: ```sh ./tests/linux/afp_entry_id_smoke -S MARS -U SUPERVISOR -P secret SYS: ./tests/linux/afp_entry_id_smoke -S MARS -U SUPERVISOR -P secret SYS:PUBLIC ./tests/linux/afp_entry_id_smoke -S MARS -U SUPERVISOR -P secret SYS:SYSTEM ./tests/linux/afp_entry_id_smoke -S MARS -U SUPERVISOR -P secret SYS:BURST ``` A successful reply prints the temporary directory handle, the relative request path, and the returned 32-bit AFP Entry ID. Server-side diagnostics currently mark stat-derived temporary IDs with `fallback`; that means the endpoint is reachable, but persistent CNID/AppleDouble entry-id storage is still future Mac-namespace work. If the server was built without the optional Netatalk/libatalk backend, the endpoint is expected to return invalid namespace. To treat that as a successful negative smoke test, use: ```sh ./tests/linux/afp_entry_id_smoke --allow-invalid-namespace -S MARS -U SUPERVISOR -P secret SYS:PUBLIC ``` For path-resolution negative tests, use `--allow-invalid-path` to accept the expected `0x9c` Invalid Path completion.