dosutils: align Novell-compatible tests and stage NCOPY work
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
This commit is contained in:
121
test/README.md
121
test/README.md
@@ -1,34 +1,107 @@
|
||||
# MARS dosutils tests
|
||||
# DOS utility regression tests
|
||||
|
||||
This directory contains DOS-side regression and compatibility tests for `mars-dosutils`.
|
||||
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`.
|
||||
|
||||
The tests are grouped by feature so that Novell reference-tool checks and our own tool regressions stay separated but easy to compare.
|
||||
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.
|
||||
|
||||
## Directory layout
|
||||
## Output naming convention
|
||||
|
||||
| Directory | Purpose |
|
||||
| --- | --- |
|
||||
| `flag/` | File/directory attribute tests, Novell `NPUBLIC\FLAG` baseline and MARS `PUBLIC\FLAG` regression notes. |
|
||||
| `flagdir/` | Planned: directory-specific FLAG and recursive attribute tests. |
|
||||
| `grant/` | Planned: trustee grant tests. |
|
||||
| `rights/` | Planned: effective-rights and trustee readback tests. |
|
||||
| `map/` | Planned: MAP command and login-script mapping tests. |
|
||||
| `login/` | Planned: LOGIN/NLOGIN compatibility tests. |
|
||||
| `logout/` | Planned: LOGOUT/NLOGOUT compatibility tests. |
|
||||
The generated result trees use these names consistently:
|
||||
|
||||
## Naming
|
||||
```text
|
||||
OUT Novell reference output from SYS:NPUBLIC or SYS:NLOGIN
|
||||
PUBOUT current implementation output from SYS:PUBLIC or SYS:LOGIN
|
||||
COMPARE.LOG
|
||||
|
||||
DOS-executed files should use 8.3 names. Keep Novell reference tests and MARS tests close together, but name them clearly.
|
||||
UNOV Novell readback while logged in as NOPASSUSER
|
||||
UPUB public readback while logged in as NOPASSUSER
|
||||
UCOMP.LOG
|
||||
|
||||
Suggested suffixes:
|
||||
LOUT Novell output while logged out, usually from SYS:NLOGIN copy
|
||||
LPUBOUT public output while logged out, usually from SYS:LOGIN copy
|
||||
LCOMP.LOG
|
||||
```
|
||||
|
||||
- `*N.BAT` for Novell-only baseline tests using `NPUBLIC`/`NLOGIN`.
|
||||
- `*M.TST` or `*M.BAT` for MARS/dosutils tests using `PUBLIC`/`LOGIN`.
|
||||
- `*CMP.BAT` for comparison/helper scripts.
|
||||
Not every test has every directory. For example, SLIST has `LOUT`/`LPUBOUT`,
|
||||
while trustee tools usually have `UNOV`/`UPUB`.
|
||||
|
||||
## Expected workflow
|
||||
## User switching and local helpers
|
||||
|
||||
1. Run the Novell baseline test first.
|
||||
2. Check the MARS NWE server log for the expected NCP path and completion codes.
|
||||
3. Run or implement the matching MARS/dosutils regression test.
|
||||
4. Keep notes in the feature directory `README.md`.
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user