Update the DOS utilities and test suite with the current Novell comparison state. Validated/updated tool behavior: - improve CREATOR output by showing Novell-style attribute and rights masks - extend FLAGDIR handling with old NCP22 directory attribute read/write fallback paths - expand NDIR Novell-style formatting, filtering, /SUB handling, date output, DI/RI attribute display and richer metadata collection - adjust REVOKE output/grammar, recursive /SUBDIRECTORIES behavior and trustee update/delete paths to better match Novell tools - adjust SLIST header/output behavior for logged-in and logged-out cases - update README status to reflect the currently green/tested tools Test-suite changes: - add/refresh Novell comparison tests for CREATOR, NDIR, REVOKE and SLIST - update NCOPY tests and collection scripts for the current investigation state - refresh per-tool README files and top-level test documentation - keep MAP documented as still separately open NCOPY: - add the current NCOPY implementation and experimental NCP74/server-side-copy scaffolding - build ncopy.c so it stays compile-tested - keep NCOPY disabled in the NET multicall dispatch for now because the server-side-copy/open-handle path is still unsafe and needs further analysis Build: - include ncopy.c in the DOS utility build - drop the temporary MARS_DOSUTILS_VERSION define wiring from CMake
108 lines
4.1 KiB
Markdown
108 lines
4.1 KiB
Markdown
# DOS utility regression tests
|
|
|
|
This directory contains DOS-side comparison and regression tests for the
|
|
`mars-dosutils` tools. The tests are meant for maintainer use against a MARS-NWE
|
|
`SYS:` tree that also contains the original Novell tools in `SYS:NPUBLIC` and
|
|
`SYS:NLOGIN`.
|
|
|
|
Most tests compare captured Novell output with the current public implementation
|
|
byte-for-byte. Some tests also switch to a normal user and read back effective
|
|
rights, because matching command output alone is not enough for trustee tools.
|
|
|
|
## Output naming convention
|
|
|
|
The generated result trees use these names consistently:
|
|
|
|
```text
|
|
OUT Novell reference output from SYS:NPUBLIC or SYS:NLOGIN
|
|
PUBOUT current implementation output from SYS:PUBLIC or SYS:LOGIN
|
|
COMPARE.LOG
|
|
|
|
UNOV Novell readback while logged in as NOPASSUSER
|
|
UPUB public readback while logged in as NOPASSUSER
|
|
UCOMP.LOG
|
|
|
|
LOUT Novell output while logged out, usually from SYS:NLOGIN copy
|
|
LPUBOUT public output while logged out, usually from SYS:LOGIN copy
|
|
LCOMP.LOG
|
|
```
|
|
|
|
Not every test has every directory. For example, SLIST has `LOUT`/`LPUBOUT`,
|
|
while trustee tools usually have `UNOV`/`UPUB`.
|
|
|
|
## User switching and local helpers
|
|
|
|
Tests that must survive a `LOGOUT` use `DLYSTRT.EXE` and a local helper directory
|
|
on `C:`. This is required because logging out removes `F:` and normal network
|
|
mappings. The common pattern is:
|
|
|
|
1. run the main `*STA.BAT` as `SUPERVISOR` from `F:`,
|
|
2. copy the helper `*C.BAT`, `DLYSTRT.EXE`, and required tools to `C:\*TMP`,
|
|
3. queue the helper with `DLYSTRT`,
|
|
4. let the helper log out, perform the user or logged-out checks, log back in,
|
|
5. queue `F:\*STA.BAT PART2`,
|
|
6. compare and package the captured files.
|
|
|
|
For automatic re-login, set the Supervisor password before starting the test:
|
|
|
|
```bat
|
|
SET LGNTPWD=your-supervisor-password
|
|
```
|
|
|
|
`LGNTPWD` is used only by maintainer tests and should not be committed to any
|
|
script or log.
|
|
|
|
## Test index
|
|
|
|
| Directory | Main script | Current purpose/status |
|
|
| --- | --- | --- |
|
|
| `creator/` | `CIXSTA.BAT` | CREATOR metadata/xattr test plus optional `NOPASSUSER` readback. |
|
|
| `flag/` | `FLGTSTA.BAT` | `NPUBLIC\FLAG` vs `PUBLIC\FLAG`, including user-context readback. |
|
|
| `flagdir/` | `FDGTSTA.BAT` | `NPUBLIC\FLAGDIR` vs `PUBLIC\FLAGDIR`, including user-context readback. |
|
|
| `grant/` | `GRNTSTA.BAT` | `NPUBLIC\GRANT` vs `PUBLIC\GRANT`, rights matrix and `NOPASSUSER` readback. |
|
|
| `login/` | `LGNTSTA.BAT` | Maintainer baseline for Novell LOGIN/LOGOUT/MAP flow. |
|
|
| `logout/` | see `login/` | LOGOUT is covered by the LOGIN baseline flow. |
|
|
| `map/` | `MAPTSTA.BAT` | Novell MAP baseline and root/non-root mapping semantics; full PUBLIC comparison still pending. |
|
|
| `ndir/` | `NDIRTSTA.BAT` | `NPUBLIC\NDIR` vs `PUBLIC\NDIR`, matrix, filters, `/SUB`, `/RIGHTS`, user readback. |
|
|
| `remove/` | `RMVSTA.BAT` | `NPUBLIC\REMOVE` vs `PUBLIC\REMOVE`, matrix and `NOPASSUSER` readback. |
|
|
| `revoke/` | `RVKSTA.BAT` | `NPUBLIC\REVOKE` vs `PUBLIC\REVOKE`, matrix and `NOPASSUSER` readback. |
|
|
| `rights/` | `RGHTSTA.BAT` | `NPUBLIC\RIGHTS` vs `PUBLIC\RIGHTS`, direct effective-rights cases. |
|
|
| `slist/` | `SLSTSTA.BAT` | `NPUBLIC\SLIST` vs `PUBLIC\SLIST` while logged in, plus `NLOGIN\SLIST` vs `LOGIN\SLIST` while logged out. |
|
|
| `whoami/` | `WHOSTA.BAT` | `NPUBLIC\WHOAMI` vs `PUBLIC\WHOAMI`. |
|
|
| `rightsuser/` | varies | Additional user-rights experiments. |
|
|
| `renmove/` | varies | Rename/move experiments. |
|
|
| `ncopy/` | varies | NCOPY experiments. |
|
|
| `filer/` | varies | FILER-related notes/experiments. |
|
|
|
|
## Packaging
|
|
|
|
Most test directories have a matching `*ZIP.BAT` that packages the result tree
|
|
under `SYS:`. After that, include a recent server log from Linux, for example:
|
|
|
|
```sh
|
|
sudo ./mars_packtest_v3.sh slststa 5 mario
|
|
```
|
|
|
|
Use the test-specific README for exact ZIP names and any Linux-side collector
|
|
steps.
|
|
|
|
## Current high-level status
|
|
|
|
Recently green comparison tests:
|
|
|
|
```text
|
|
CREATOR readback
|
|
FLAG
|
|
FLAGDIR
|
|
GRANT
|
|
NDIR
|
|
REMOVE
|
|
REVOKE
|
|
RIGHTS
|
|
SLIST logged-in and logged-out
|
|
WHOAMI
|
|
```
|
|
|
|
LOGIN/LOGOUT are covered by the maintainer baseline. MAP still needs a full
|
|
`PUBLIC\MAP` vs Novell comparison beyond the current baseline/semantics test.
|