tests: add Novell DOS tool baseline suite

Add DOS-side baseline scripts for the Novell tools used to compare the
reimplemented public utilities.

The suite covers the current baseline set:

  MAP
  SLIST
  WHOAMI
  LOGIN / LOGOUT
  NDIR
  NCOPY
  FLAG
  FLAGDIR
  CREATOR
  RIGHTS
  GRANT
  REVOKE
  REMOVE

It also includes supporting trustee, rights, rename, move, delete and
file-operation tests.

Each test writes reproducible output into a per-tool CMP directory and
provides a matching ZIP helper for collecting the results. The ZIP
helpers clean generated test trees afterwards so SYS: does not keep
accumulating temporary directories.

This is the Novell baseline layer only. A later change can extend the
same scripts to run the full comparison cycle:

  NPUBLIC baseline -> PUBLIC implementation -> NPUBLIC control
This commit is contained in:
Mario Fetka
2026-05-27 13:31:46 +02:00
parent 0df41482c7
commit f214e89d69
65 changed files with 4831 additions and 0 deletions

46
test/remove/README.md Normal file
View File

@@ -0,0 +1,46 @@
# REMOVE baseline test
`RMVSTA.BAT` captures Novell `\NPUBLIC\REMOVE` behavior for trustee removal.
Run as `SUPERVISOR` or a user with Access Control rights:
```bat
F:
CD \
RMVSTA
RMVZIP
```
Result directory:
```text
F:\RMVCMP
```
Test directory:
```text
F:\RMVTEST
```
The setup uses `\NPUBLIC\GRANT` to create trustees for user `MARIO`, then runs `\NPUBLIC\REMOVE` for the baseline.
Note: Novell `REMOVE` help names the recursive option `/Subdirs`; this test uses `/SUBDIRS`, not `/SUBDIRECTORIES`.
Captured cases:
- `D01` help / usage
- `D02` no arguments
- `D10` remove `USER MARIO` from a directory
- `D11` remove `MARIO` without the explicit `USER` keyword
- `D20` `/SUBDIRS`
- `D21` `/FILES` on an explicit file
- `D22` `/FILES` on all files in a directory
- `D30` relative path from `F:\RMVTEST`
- `D90` no trustee
- `D91` missing user
- `D92` missing path
- `D93` `/FILES` and `/SUBDIRS` together
- `D94` bad grammar
`RMVZIP.BAT` packages `RUN.LOG`, `SUMMARY.TXT`, `OUT`, and `SETUP`, then removes the generated `F:\RMVTEST` tree so the SYS root does not accumulate test directories.

116
test/remove/RMVSTA.BAT Normal file
View File

@@ -0,0 +1,116 @@
@ECHO OFF
REM RMVSTA.BAT
REM Automated REMOVE baseline test for MARS NWE.
REM
REM Run as SUPERVISOR or a user with Access Control on F:\RMVTEST.
REM Uses \NPUBLIC\REMOVE as Novell baseline.
REM Setup uses \NPUBLIC\GRANT to create trustee assignments.
REM
REM Result tree:
REM F:\RMVCMP
REM Test tree:
REM F:\RMVTEST
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
IF EXIST RMVTEST\NUL DELTREE /Y RMVTEST\*.*
IF EXIST RMVCMP\NUL DELTREE /Y RMVCMP\*.*
IF NOT EXIST RMVTEST\NUL MD RMVTEST
IF NOT EXIST RMVTEST\ONE\NUL MD RMVTEST\ONE
IF NOT EXIST RMVTEST\TREE\NUL MD RMVTEST\TREE
IF NOT EXIST RMVTEST\TREE\SUB1\NUL MD RMVTEST\TREE\SUB1
IF NOT EXIST RMVTEST\TREE\SUB2\NUL MD RMVTEST\TREE\SUB2
IF NOT EXIST RMVTEST\FILES\NUL MD RMVTEST\FILES
IF NOT EXIST RMVTEST\OPTBOTH\NUL MD RMVTEST\OPTBOTH
IF NOT EXIST RMVTEST\OPTBOTH\SUB\NUL MD RMVTEST\OPTBOTH\SUB
IF NOT EXIST RMVCMP\NUL MD RMVCMP
IF NOT EXIST RMVCMP\OUT\NUL MD RMVCMP\OUT
IF NOT EXIST RMVCMP\SETUP\NUL MD RMVCMP\SETUP
ECHO REMOVE ROOT FILE > F:\RMVTEST\ROOT.TXT
ECHO REMOVE ONE FILE > F:\RMVTEST\ONE\ONE.TXT
ECHO REMOVE TREE ROOT FILE > F:\RMVTEST\TREE\TROOT.TXT
ECHO REMOVE SUB1 FILE > F:\RMVTEST\TREE\SUB1\SUB1.TXT
ECHO REMOVE SUB2 FILE > F:\RMVTEST\TREE\SUB2\SUB2.TXT
ECHO REMOVE FILE A > F:\RMVTEST\FILES\A.TXT
ECHO REMOVE FILE B > F:\RMVTEST\FILES\B.TXT
ECHO REMOVE OPT ROOT > F:\RMVTEST\OPTBOTH\O.TXT
ECHO REMOVE OPT SUB > F:\RMVTEST\OPTBOTH\SUB\S.TXT
ECHO RMVSTA REMOVE baseline test > F:\RMVCMP\RUN.LOG
ECHO Run this as SUPERVISOR or equivalent. >> F:\RMVCMP\RUN.LOG
ECHO Captures \NPUBLIC\REMOVE output against user MARIO. >> F:\RMVCMP\RUN.LOG
ECHO Setup uses \NPUBLIC\GRANT. >> F:\RMVCMP\RUN.LOG
ECHO. >> F:\RMVCMP\RUN.LOG
ECHO === D01 usage/help === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE /? > F:\RMVCMP\OUT\D01_HELP.OUT
ECHO === D02 no arguments === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE > F:\RMVCMP\OUT\D02_NOARGS.OUT
ECHO === D10 remove USER MARIO from directory === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S10_GRANT.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D10_DIR_USER.OUT
ECHO === D11 remove MARIO without USER keyword === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S11_GRANT.OUT
\NPUBLIC\REMOVE MARIO FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D11_DIR_IMPLICIT.OUT
ECHO === D20 remove recursively from subdirectories === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE TO USER MARIO > F:\RMVCMP\SETUP\S20_ROOT.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE\SUB1 TO USER MARIO > F:\RMVCMP\SETUP\S20_SUB1.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE\SUB2 TO USER MARIO > F:\RMVCMP\SETUP\S20_SUB2.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\TREE /SUBDIRS > F:\RMVCMP\OUT\D20_SUBDIRS.OUT
ECHO === D21 remove from explicit file using /FILES === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE\ONE.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S21_FILE.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\ONE\ONE.TXT /FILES > F:\RMVCMP\OUT\D21_FILE.OUT
ECHO === D22 remove from all files in directory using /FILES === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\FILES\A.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S22_A.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\FILES\B.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S22_B.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\FILES /FILES > F:\RMVCMP\OUT\D22_FILES_DIR.OUT
ECHO === D30 relative path from F:\RMVTEST === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S30_GRANT.OUT
CD \RMVTEST
\NPUBLIC\REMOVE USER MARIO FROM ONE > F:\RMVCMP\OUT\D30_REL_DIR.OUT
CD \
ECHO === D90 no trustee === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\EMPTY > F:\RMVCMP\OUT\D90_NO_TRUSTEE.OUT
ECHO === D91 missing user === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER NO_SUCH_USER FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D91_MISSING_USER.OUT
ECHO === D92 missing path === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\MISSING > F:\RMVCMP\OUT\D92_MISSING_PATH.OUT
ECHO === D93 /FILES and /SUBDIRS together === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH TO USER MARIO > F:\RMVCMP\SETUP\S93_DIR.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH\SUB TO USER MARIO > F:\RMVCMP\SETUP\S93_SUB.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH\O.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S93_FILE.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\OPTBOTH /FILES /SUBDIRS > F:\RMVCMP\OUT\D93_BOTH_OPTS.OUT
ECHO === D94 bad grammar / missing name === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D94_BAD_GRAMMAR.OUT
ECHO === SUMMARY === > F:\RMVCMP\SUMMARY.TXT
ECHO RMVSTA REMOVE baseline finished. >> F:\RMVCMP\SUMMARY.TXT
ECHO. >> F:\RMVCMP\SUMMARY.TXT
ECHO Expected coverage: >> F:\RMVCMP\SUMMARY.TXT
ECHO - D10-D11 capture normal directory trustee removal syntax. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D20 captures /SUBDIRS behavior with trustees on start and child dirs. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D21-D22 capture /FILES behavior for explicit file and directory file set. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D30 captures relative path behavior with absolute \NPUBLIC\REMOVE invocation. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D90-D94 capture error and grammar cases. >> F:\RMVCMP\SUMMARY.TXT
ECHO. >> F:\RMVCMP\SUMMARY.TXT
ECHO Optional: RMVZIP ausfuehren. >> F:\RMVCMP\SUMMARY.TXT
ECHO RMVSTA fertig.
ECHO Ergebnisse liegen in F:\RMVCMP
ECHO Optional: RMVZIP ausfuehren.

25
test/remove/RMVZIP.BAT Normal file
View File

@@ -0,0 +1,25 @@
@ECHO OFF
REM RMVZIP.BAT
REM Optional packer for RMVSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \RMVCMP
IF EXIST RMVSTA.ZIP DEL RMVSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating RMVSTA.ZIP > ZIP.LOG
ZIP -r RMVSTA.ZIP RUN.LOG SUMMARY.TXT OUT SETUP >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
REM Keep the CMP/result directory because it contains the ZIP and ZIP.LOG.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \RMVTEST\NUL DELTREE /Y \RMVTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\RMVCMP\RMVSTA.ZIP
ECHO F:\RMVCMP\ZIP.LOG
ECHO.