Files
mars-dosutils/test/whoami/WHOSTA.BAT
Mario Fetka 4ad455c6df dosutils: add maintainer helpers and compare-ready tools
Add maintainer-only support used by the automated DOS compatibility
tests.

This introduces the MAINTAINER_BUILD option for the DOS tools. In
maintainer builds, LOGIN accepts the hidden /PWD: and /PASSWORD:
arguments for automated test relogin, and the DLYSTRT helper is built to
delay-start DOS batch files after the invoking batch has returned to the
prompt.

Add the WHOAMI utility and wire it into the NET command dispatch. Also
adjust SLIST and RIGHTS output to match Novell behavior more closely,
including server-not-found handling, path formatting, Supervisor rights,
missing-path errors and usage text.

Extend the test scripts to compare NPUBLIC Novell baselines against the
PUBLIC implementations. LOGIN/LOGOUT can now run automatically via
DLYSTRT and the maintainer LOGIN password option. RIGHTS gains an
additional NOPASSUSER effective-rights matrix that covers single rights,
mixed rights, Supervisor rights, ALL/N and file trustee cases.

Normal builds remain free of maintainer-only helpers and hidden password
handling.
2026-05-27 20:14:01 +02:00

162 lines
6.8 KiB
Batchfile

@ECHO OFF
REM WHOSTA.BAT
REM Automated WHOAMI baseline and PUBLIC comparison test for MARS NWE.
REM
REM Run while logged in as SUPERVISOR or the user whose context should be captured.
REM Uses \NPUBLIC\WHOAMI as Novell baseline and \PUBLIC\WHOAMI as implementation under test.
REM
REM Result tree:
REM F:\WHOCMP
REM OUT Novell baseline output
REM PUBOUT PUBLIC implementation output
REM COMPARE.LOG FC comparison OUT vs PUBOUT
F:
CD \
REM --- Clean generated result directory (contents only). ---
IF EXIST WHOCMP\NUL DELTREE /Y WHOCMP\*.*
IF NOT EXIST WHOCMP\NUL MD WHOCMP
IF NOT EXIST WHOCMP\OUT\NUL MD WHOCMP\OUT
IF NOT EXIST WHOCMP\PUBOUT\NUL MD WHOCMP\PUBOUT
ECHO WHOSTA WHOAMI baseline and PUBLIC comparison test > F:\WHOCMP\RUN.LOG
ECHO Run this while logged in as the target user, normally SUPERVISOR. >> F:\WHOCMP\RUN.LOG
ECHO Captures \NPUBLIC\WHOAMI output and compares it with \PUBLIC\WHOAMI. >> F:\WHOCMP\RUN.LOG
ECHO. >> F:\WHOCMP\RUN.LOG
ECHO === Novell baseline: \NPUBLIC\WHOAMI === >> F:\WHOCMP\RUN.LOG
ECHO === D01 default WHOAMI === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI > F:\WHOCMP\OUT\D01_BASE.OUT
ECHO === D02 explicit server MARS === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI MARS > F:\WHOCMP\OUT\D02_MARS.OUT
ECHO === D10 /SECURITY === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /SECURITY > F:\WHOCMP\OUT\D10_SECUR.OUT
ECHO === D11 /GROUPS === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /GROUPS > F:\WHOCMP\OUT\D11_GROUP.OUT
ECHO === D12 /WORKGROUPS === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /WORKGROUPS > F:\WHOCMP\OUT\D12_WORK.OUT
ECHO === D13 /RIGHTS === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /RIGHTS > F:\WHOCMP\OUT\D13_RIGHT.OUT
ECHO === D14 /SYSTEM === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /SYSTEM > F:\WHOCMP\OUT\D14_SYST.OUT
ECHO === D15 /OBJECT === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /OBJECT > F:\WHOCMP\OUT\D15_OBJ.OUT
ECHO === D16 /ALL === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /ALL > F:\WHOCMP\OUT\D16_ALL.OUT
ECHO === D90 missing server / negative server case === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI NWBYGONE01 > F:\WHOCMP\OUT\D90_MISS.OUT
ECHO === D91 unknown option === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /BOGUS > F:\WHOCMP\OUT\D91_BOGUS.OUT
ECHO === D99 usage/help === >> F:\WHOCMP\RUN.LOG
\NPUBLIC\WHOAMI /? > F:\WHOCMP\OUT\D99_HELP.OUT
ECHO. >> F:\WHOCMP\RUN.LOG
ECHO === PUBLIC implementation: \PUBLIC\WHOAMI === >> F:\WHOCMP\RUN.LOG
ECHO === P01 default WHOAMI === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI > F:\WHOCMP\PUBOUT\D01_BASE.OUT
ECHO === P02 explicit server MARS === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI MARS > F:\WHOCMP\PUBOUT\D02_MARS.OUT
ECHO === P10 /SECURITY === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /SECURITY > F:\WHOCMP\PUBOUT\D10_SECUR.OUT
ECHO === P11 /GROUPS === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /GROUPS > F:\WHOCMP\PUBOUT\D11_GROUP.OUT
ECHO === P12 /WORKGROUPS === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /WORKGROUPS > F:\WHOCMP\PUBOUT\D12_WORK.OUT
ECHO === P13 /RIGHTS === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /RIGHTS > F:\WHOCMP\PUBOUT\D13_RIGHT.OUT
ECHO === P14 /SYSTEM === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /SYSTEM > F:\WHOCMP\PUBOUT\D14_SYST.OUT
ECHO === P15 /OBJECT === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /OBJECT > F:\WHOCMP\PUBOUT\D15_OBJ.OUT
ECHO === P16 /ALL === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /ALL > F:\WHOCMP\PUBOUT\D16_ALL.OUT
ECHO === P90 missing server / negative server case === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI NWBYGONE01 > F:\WHOCMP\PUBOUT\D90_MISS.OUT
ECHO === P91 unknown option === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /BOGUS > F:\WHOCMP\PUBOUT\D91_BOGUS.OUT
ECHO === P99 usage/help === >> F:\WHOCMP\RUN.LOG
\PUBLIC\WHOAMI /? > F:\WHOCMP\PUBOUT\D99_HELP.OUT
ECHO === FC compare OUT vs PUBOUT === > F:\WHOCMP\COMPARE.LOG
ECHO D01_BASE.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D01_BASE.OUT F:\WHOCMP\PUBOUT\D01_BASE.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D02_MARS.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D02_MARS.OUT F:\WHOCMP\PUBOUT\D02_MARS.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D10_SECUR.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D10_SECUR.OUT F:\WHOCMP\PUBOUT\D10_SECUR.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D11_GROUP.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D11_GROUP.OUT F:\WHOCMP\PUBOUT\D11_GROUP.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D12_WORK.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D12_WORK.OUT F:\WHOCMP\PUBOUT\D12_WORK.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D13_RIGHT.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D13_RIGHT.OUT F:\WHOCMP\PUBOUT\D13_RIGHT.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D14_SYST.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D14_SYST.OUT F:\WHOCMP\PUBOUT\D14_SYST.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D15_OBJ.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D15_OBJ.OUT F:\WHOCMP\PUBOUT\D15_OBJ.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D16_ALL.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D16_ALL.OUT F:\WHOCMP\PUBOUT\D16_ALL.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D90_MISS.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D90_MISS.OUT F:\WHOCMP\PUBOUT\D90_MISS.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D91_BOGUS.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D91_BOGUS.OUT F:\WHOCMP\PUBOUT\D91_BOGUS.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO. >> F:\WHOCMP\COMPARE.LOG
ECHO D99_HELP.OUT >> F:\WHOCMP\COMPARE.LOG
FC F:\WHOCMP\OUT\D99_HELP.OUT F:\WHOCMP\PUBOUT\D99_HELP.OUT >> F:\WHOCMP\COMPARE.LOG
ECHO === SUMMARY === > F:\WHOCMP\SUMMARY.TXT
ECHO WHOSTA WHOAMI baseline and comparison finished. >> F:\WHOCMP\SUMMARY.TXT
ECHO. >> F:\WHOCMP\SUMMARY.TXT
ECHO OUT = Novell baseline from \NPUBLIC\WHOAMI. >> F:\WHOCMP\SUMMARY.TXT
ECHO PUBOUT = implementation output from \PUBLIC\WHOAMI. >> F:\WHOCMP\SUMMARY.TXT
ECHO COMPARE.LOG contains FC comparisons for all captured files. >> F:\WHOCMP\SUMMARY.TXT
ECHO. >> F:\WHOCMP\SUMMARY.TXT
ECHO Expected coverage: >> F:\WHOCMP\SUMMARY.TXT
ECHO - D01 captures default identity output for the current login context. >> F:\WHOCMP\SUMMARY.TXT
ECHO - D02 captures explicit server syntax with MARS. >> F:\WHOCMP\SUMMARY.TXT
ECHO - D10-D16 capture documented option variants. >> F:\WHOCMP\SUMMARY.TXT
ECHO - D90-D91 capture missing-server and bad-option behavior. >> F:\WHOCMP\SUMMARY.TXT
ECHO - D99 captures Usage text from WHOAMI /?. >> F:\WHOCMP\SUMMARY.TXT
ECHO. >> F:\WHOCMP\SUMMARY.TXT
ECHO Optional: WHOZIP ausfuehren. >> F:\WHOCMP\SUMMARY.TXT
ECHO WHOSTA fertig.
ECHO Ergebnisse liegen in F:\WHOCMP
ECHO Vergleich liegt in F:\WHOCMP\COMPARE.LOG
ECHO Optional: WHOZIP ausfuehren.