dosutils: match Novell paths for flags and trustees

Move FLAG, GRANT and REMOVE closer to the request paths used by the
Novell tools and extend the DOS comparison tests.

FLAG now reads attributes through the old NCP22 directory scan path and
writes them through NCP22/25 Set Directory/File Information. This keeps
extended attributes such as Delete Inhibit and Rename Inhibit intact and
matches the Novell behavior observed in the server logs.

GRANT now prefers NCP22/27 SetTrustee with an NCP87 fallback. Supervisor
rights are expanded like Novell does, so granting S sends and reports the
full SRWCEMFA mask. The visible output, path formatting and error text
are adjusted to match the Novell baseline.

REMOVE now prefers NCP22/2B DelTrustee with an NCP87 fallback. The
DelTrustee request layout is corrected, /SUBDIRS handling is aligned
with Novell, and the output/error text is matched to the baseline.

The FLAG, FLAGDIR, GRANT and REMOVE tests now compare NPUBLIC baselines
against the PUBLIC implementations and add delayed NOPASSUSER readback
checks using DLYSTRT and the maintainer LOGIN password option.
This commit is contained in:
Mario Fetka
2026-05-28 07:54:41 +02:00
parent 0fa4a6f700
commit 5da600c2a5
23 changed files with 2653 additions and 659 deletions

101
test/flag/FLGC.BAT Normal file
View File

@@ -0,0 +1,101 @@
@ECHO OFF
REM FLGC.BAT - helper for FLGTSTA user-context FLAG tests.
C:
CD \FLGTMP
ECHO FLGC helper started. > C:\FLGTMP\HELPER.TXT
ECHO Running FLAG as NOPASSUSER, then relogging SUPERVISOR. >> C:\FLGTMP\HELPER.TXT
LOGOUT > C:\FLGTMP\D00_LOG.OUT
LOGIN NOPASSUSER > C:\FLGTMP\D01_LGIN.OUT
F:
CD \
ECHO Starting U10 read...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > C:\FLGTMP\UNOV\U10_READ.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > C:\FLGTMP\UPUB\U10_READ.OUT
ECHO Starting U11 N...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > C:\FLGTMP\UNOV\U11_N.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > C:\FLGTMP\UPUB\U11_N.OUT
ECHO Starting U12 H...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > C:\FLGTMP\UNOV\U12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > C:\FLGTMP\UPUB\U12_H.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U12_H.OUT
ECHO Starting U13 RO...
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > C:\FLGTMP\UNOV\U13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> C:\FLGTMP\UNOV\U13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > C:\FLGTMP\UPUB\U13_RO.OUT
PUBLIC\FLAG F:\FLGTEST\BETA.TXT >> C:\FLGTMP\UPUB\U13_RO.OUT
ECHO Starting U14 A...
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > C:\FLGTMP\UNOV\U14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> C:\FLGTMP\UNOV\U14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > C:\FLGTMP\UPUB\U14_A.OUT
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> C:\FLGTMP\UPUB\U14_A.OUT
ECHO Starting U15 SY...
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > C:\FLGTMP\UNOV\U15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> C:\FLGTMP\UNOV\U15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > C:\FLGTMP\UPUB\U15_SY.OUT
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> C:\FLGTMP\UPUB\U15_SY.OUT
ECHO Starting U16 DI RI...
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > C:\FLGTMP\UNOV\U16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> C:\FLGTMP\UNOV\U16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > C:\FLGTMP\UPUB\U16_DIRI.OUT
PUBLIC\FLAG F:\FLGTEST\EPS.TXT >> C:\FLGTMP\UPUB\U16_DIRI.OUT
ECHO Starting U17 mixed...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > C:\FLGTMP\UNOV\U17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > C:\FLGTMP\UPUB\U17_MIX.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U17_MIX.OUT
ECHO Starting U18 clear...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > C:\FLGTMP\UNOV\U18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > C:\FLGTMP\UPUB\U18_CLR.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U18_CLR.OUT
ECHO Starting U90 missing...
NPUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > C:\FLGTMP\UNOV\U90_MISS.OUT
PUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > C:\FLGTMP\UPUB\U90_MISS.OUT
LOGOUT > C:\FLGTMP\D02_LGOT.OUT
F:
CD \
IF EXIST \LOGIN\LOGIN.EXE GOTO HAVELOGIN
ECHO F:\LOGIN\LOGIN.EXE not found. >> C:\FLGTMP\HELPER.TXT
GOTO END
:HAVELOGIN
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\FLGTMP\D03_LGSU.OUT
F:
CD \
IF EXIST \FLGTSTA.BAT GOTO QUEUEP2
ECHO F: not restored or FLGTSTA missing. >> C:\FLGTMP\HELPER.TXT
GOTO END
:QUEUEP2
C:
CD \FLGTMP
DLYSTRT /T:2 F:\FLGTSTA.BAT PART2 > C:\FLGTMP\D04_P2.OUT
:END

View File

@@ -1,55 +1,55 @@
@ECHO OFF
REM FLGTSTA.BAT
REM Automated Novell FLAG baseline for MARS NWE.
REM FLAG compare test.
REM
REM Run while already logged in and with F: mapped to SYS.
REM Direct part:
REM OUT = Novell baseline using \NPUBLIC\FLAG
REM PUBOUT = our implementation using \PUBLIC\FLAG
REM
REM Test tree:
REM F:\FLGTEST
REM Result tree:
REM F:\FLGCMP
REM User-context part:
REM NOPASSUSER logs in via DLYSTRT helper and runs the same effective tests.
REM UNOV = Novell FLAG as NOPASSUSER
REM UPUB = Public FLAG as NOPASSUSER
REM
REM Scope:
REM FLAG on files only.
REM For the automatic NOPASSUSER block set:
REM SET LGNTPWD=your-supervisor-password
IF "%1"=="" GOTO PART1
IF "%1"=="PART2" GOTO PART2
IF "%1"=="part2" GOTO PART2
IF "%1"=="Part2" GOTO PART2
ECHO Usage: FLGTSTA [PART2]
GOTO END
:PART1
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
REM --- Clean generated test/result directories. ---
IF EXIST FLGTEST\NUL DELTREE /Y FLGTEST\*.*
IF EXIST FLGCMP\NUL DELTREE /Y FLGCMP\*.*
IF EXIST FLGTMP\NUL DELTREE /Y FLGTMP\*.*
IF NOT EXIST FLGTEST\NUL MD FLGTEST
IF NOT EXIST FLGTMP\NUL MD FLGTMP
IF NOT EXIST FLGCMP\NUL MD FLGCMP
IF NOT EXIST FLGCMP\OUT\NUL MD FLGCMP\OUT
IF NOT EXIST FLGCMP\PUBOUT\NUL MD FLGCMP\PUBOUT
IF NOT EXIST FLGCMP\SETUP\NUL MD FLGCMP\SETUP
IF NOT EXIST FLGCMP\UNOV\NUL MD FLGCMP\UNOV
IF NOT EXIST FLGCMP\UPUB\NUL MD FLGCMP\UPUB
IF NOT EXIST FLGCMP\USETUP\NUL MD FLGCMP\USETUP
IF EXIST F:\FLGCMP\RUN.LOG DEL F:\FLGCMP\RUN.LOG
IF EXIST F:\FLGCMP\SUMMARY.TXT DEL F:\FLGCMP\SUMMARY.TXT
IF EXIST F:\FLGCMP\COMPARE.LOG DEL F:\FLGCMP\COMPARE.LOG
IF EXIST F:\FLGCMP\UCOMP.LOG DEL F:\FLGCMP\UCOMP.LOG
IF EXIST F:\FLGCMP\FLGTSTA.ZIP DEL F:\FLGCMP\FLGTSTA.ZIP
IF EXIST F:\FLGCMP\ZIP.LOG DEL F:\FLGCMP\ZIP.LOG
IF EXIST F:\FLGCMP\OUT\F01_BASE.OUT DEL F:\FLGCMP\OUT\F01_BASE.OUT
IF EXIST F:\FLGCMP\OUT\F02_FLAGN.OUT DEL F:\FLGCMP\OUT\F02_FLAGN.OUT
IF EXIST F:\FLGCMP\OUT\F03_SET1.OUT DEL F:\FLGCMP\OUT\F03_SET1.OUT
IF EXIST F:\FLGCMP\OUT\F04_NDIR1.OUT DEL F:\FLGCMP\OUT\F04_NDIR1.OUT
IF EXIST F:\FLGCMP\OUT\F05_FILTER.OUT DEL F:\FLGCMP\OUT\F05_FILTER.OUT
IF EXIST F:\FLGCMP\OUT\F06_CLEAR.OUT DEL F:\FLGCMP\OUT\F06_CLEAR.OUT
IF EXIST F:\FLGCMP\OUT\F07_COMBO.OUT DEL F:\FLGCMP\OUT\F07_COMBO.OUT
IF EXIST F:\FLGCMP\OUT\F08_COPYREN.OUT DEL F:\FLGCMP\OUT\F08_COPYREN.OUT
IF EXIST F:\FLGCMP\OUT\F09_FINAL.OUT DEL F:\FLGCMP\OUT\F09_FINAL.OUT
REM Clean test files.
IF EXIST F:\FLGTEST\ALPHA.TXT DEL F:\FLGTEST\ALPHA.TXT
IF EXIST F:\FLGTEST\BETA.TXT DEL F:\FLGTEST\BETA.TXT
IF EXIST F:\FLGTEST\GAMMA.DAT DEL F:\FLGTEST\GAMMA.DAT
IF EXIST F:\FLGTEST\DELTA.BIN DEL F:\FLGTEST\DELTA.BIN
IF EXIST F:\FLGTEST\EPS.TXT DEL F:\FLGTEST\EPS.TXT
IF EXIST F:\FLGTEST\RENAMED.TXT DEL F:\FLGTEST\RENAMED.TXT
IF EXIST F:\FLGTEST\COPY.TXT DEL F:\FLGTEST\COPY.TXT
ECHO FLGTSTA FLAG baseline > F:\FLGCMP\RUN.LOG
ECHO Run while already logged in. >> F:\FLGCMP\RUN.LOG
ECHO Date/time stamp skipped to avoid DOS prompt. >> F:\FLGCMP\RUN.LOG
ECHO FLGTSTA FLAG compare > F:\FLGCMP\RUN.LOG
ECHO Direct compare: NPUBLIC\FLAG vs PUBLIC\FLAG. >> F:\FLGCMP\RUN.LOG
ECHO User context: NOPASSUSER via DLYSTRT if LGNTPWD is set. >> F:\FLGCMP\RUN.LOG
ECHO. >> F:\FLGCMP\RUN.LOG
ECHO ALPHA FILE > F:\FLGTEST\ALPHA.TXT
@@ -58,111 +58,134 @@ ECHO GAMMA FILE > F:\FLGTEST\GAMMA.DAT
ECHO DELTA FILE > F:\FLGTEST\DELTA.BIN
ECHO EPS FILE > F:\FLGTEST\EPS.TXT
ECHO === F01 base FLAG/NDIR readback === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
ECHO Starting D10 read normal...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > F:\FLGCMP\OUT\D10_READ.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > F:\FLGCMP\PUBOUT\D10_READ.OUT
ECHO === F02 explicit FLAG N cleanup === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
ECHO Starting D11 FLAG N...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\OUT\D11_N.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\PUBOUT\D11_N.OUT
ECHO === F03 set individual flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +Sy >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
ECHO Starting D12 +H...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\OUT\D12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\PUBOUT\D12_H.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D12_H.OUT
ECHO === F04 NDIR after flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F04_NDIR1.OUT
NPUBLIC\NDIR F:\FLGTEST /DATES >> F:\FLGCMP\OUT\F04_NDIR1.OUT
NPUBLIC\NDIR F:\FLGTEST /RIGHTS >> F:\FLGCMP\OUT\F04_NDIR1.OUT
ECHO Starting D13 +RO...
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > F:\FLGCMP\OUT\D13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\D13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > F:\FLGCMP\PUBOUT\D13_RO.OUT
PUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\PUBOUT\D13_RO.OUT
ECHO === F05 NDIR filters for flags === >> F:\FLGCMP\RUN.LOG
ECHO --- /H --- > F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /H >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /RO --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /RO >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /A --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /A >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /SY --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /SY >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /NOT H --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /NOT H >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /NOT RO --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /NOT RO >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO Starting D14 +A...
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > F:\FLGCMP\OUT\D14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\D14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > F:\FLGCMP\PUBOUT\D14_A.OUT
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\PUBOUT\D14_A.OUT
ECHO === F06 clear individual flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H > F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT -RO >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT -A >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN -Sy >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT -DI -RI >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
ECHO Starting D15 +SY...
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > F:\FLGCMP\OUT\D15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\D15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > F:\FLGCMP\PUBOUT\D15_SY.OUT
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\PUBOUT\D15_SY.OUT
ECHO === F07 combined flags and FLAG N reset === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +A +Sy > F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO +DI +RI >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\NDIR F:\FLGTEST >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
ECHO Starting D16 +DI +RI...
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > F:\FLGCMP\OUT\D16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\D16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > F:\FLGCMP\PUBOUT\D16_DIRI.OUT
PUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\PUBOUT\D16_DIRI.OUT
ECHO === F08 copy/rename smoke === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
COPY F:\FLGTEST\EPS.TXT F:\FLGTEST\COPY.TXT > F:\FLGCMP\OUT\F08_COPYREN.OUT
REN F:\FLGTEST\COPY.TXT RENAMED.TXT >> F:\FLGCMP\OUT\F08_COPYREN.OUT
IF EXIST F:\FLGTEST\RENAMED.TXT ECHO OK RENAMED.TXT exists >> F:\FLGCMP\OUT\F08_COPYREN.OUT
IF NOT EXIST F:\FLGTEST\RENAMED.TXT ECHO FAIL RENAMED.TXT missing >> F:\FLGCMP\OUT\F08_COPYREN.OUT
NPUBLIC\FLAG F:\FLGTEST\RENAMED.TXT >> F:\FLGCMP\OUT\F08_COPYREN.OUT
NPUBLIC\NDIR F:\FLGTEST >> F:\FLGCMP\OUT\F08_COPYREN.OUT
ECHO Starting D17 mixed flags...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > F:\FLGCMP\OUT\D17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > F:\FLGCMP\PUBOUT\D17_MIX.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D17_MIX.OUT
ECHO === F09 final file cleanup/readback === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
IF EXIST F:\FLGTEST\RENAMED.TXT NPUBLIC\FLAG F:\FLGTEST\RENAMED.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F09_FINAL.OUT
ECHO Starting D18 clear flags...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > F:\FLGCMP\OUT\D18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > F:\FLGCMP\PUBOUT\D18_CLR.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D18_CLR.OUT
ECHO === SUMMARY === > F:\FLGCMP\SUMMARY.TXT
ECHO FLGTSTA FLAG baseline finished. >> F:\FLGCMP\SUMMARY.TXT
ECHO. >> F:\FLGCMP\SUMMARY.TXT
ECHO Expected: >> F:\FLGCMP\SUMMARY.TXT
ECHO - F03 shows H on ALPHA, RO on BETA, A on GAMMA, Sy on DELTA. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F05 filters isolate H, RO, A, Sy and NOT variants. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F06 clears the individual flags. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F07 combined flags set and reset with N. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F09 final readback shows normal usable files. >> F:\FLGCMP\SUMMARY.TXT
ECHO Optional pack results with FLGTZIP.BAT. >> F:\FLGCMP\SUMMARY.TXT
ECHO Starting D90 missing file...
NPUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > F:\FLGCMP\OUT\D90_MISS.OUT
PUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > F:\FLGCMP\PUBOUT\D90_MISS.OUT
ECHO Comparing direct FLAG outputs... > F:\FLGCMP\COMPARE.LOG
FOR %%F IN (D10_READ.OUT D11_N.OUT D12_H.OUT D13_RO.OUT D14_A.OUT D15_SY.OUT D16_DIRI.OUT D17_MIX.OUT D18_CLR.OUT D90_MISS.OUT) DO FC F:\FLGCMP\OUT\%%F F:\FLGCMP\PUBOUT\%%F >> F:\FLGCMP\COMPARE.LOG
REM Prepare user-context test tree.
ECHO Preparing NOPASSUSER FLAG matrix... >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\GRANT ALL FOR F:\FLGTEST TO USER NOPASSUSER > F:\FLGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\ALPHA.TXT TO USER NOPASSUSER /FILES > F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\BETA.TXT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\GAMMA.DAT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\DELTA.BIN TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\EPS.TXT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
IF "%LGNTPWD%"=="" GOTO NEEDPWD
IF EXIST C:\FLGTMP DELTREE /Y C:\FLGTMP > NUL
MD C:\FLGTMP
MD C:\FLGTMP\UNOV
MD C:\FLGTMP\UPUB
COPY F:\FLGC.BAT C:\FLGTMP\FLGC.BAT > NUL
COPY F:\PUBLIC\DLYSTRT.EXE C:\FLGTMP\DLYSTRT.EXE > NUL
C:
CD \FLGTMP
DLYSTRT /T:2 FLGC.BAT
GOTO END
:NEEDPWD
ECHO LGNTPWD is not set. User-context FLAG block skipped. >> F:\FLGCMP\RUN.LOG
ECHO.
ECHO FLGTSTA fertig.
ECHO Ergebnisse liegen in F:\FLGCMP
ECHO Optional: FLGTZIP ausfuehren.
ECHO LGNTPWD ist nicht gesetzt. User-Kontext wurde nicht gestartet.
ECHO Beispiel:
ECHO SET LGNTPWD=dein-supervisor-passwort
ECHO FLGTSTA
GOTO END
:PART2
F:
CD \
IF NOT EXIST FLGCMP\UNOV\NUL MD FLGCMP\UNOV
IF NOT EXIST FLGCMP\UPUB\NUL MD FLGCMP\UPUB
IF EXIST F:\FLGCMP\UCOMP.LOG DEL F:\FLGCMP\UCOMP.LOG
COPY C:\FLGTMP\UNOV\*.OUT F:\FLGCMP\UNOV > NUL
COPY C:\FLGTMP\UPUB\*.OUT F:\FLGCMP\UPUB > NUL
IF EXIST C:\FLGTMP\HELPER.TXT COPY C:\FLGTMP\HELPER.TXT F:\FLGCMP > NUL
ECHO Comparing NOPASSUSER FLAG outputs... > F:\FLGCMP\UCOMP.LOG
FOR %%F IN (U10_READ.OUT U11_N.OUT U12_H.OUT U13_RO.OUT U14_A.OUT U15_SY.OUT U16_DIRI.OUT U17_MIX.OUT U18_CLR.OUT U90_MISS.OUT) DO FC F:\FLGCMP\UNOV\%%F F:\FLGCMP\UPUB\%%F >> F:\FLGCMP\UCOMP.LOG
ECHO FLGTSTA summary > F:\FLGCMP\SUMMARY.TXT
ECHO Direct compare: F:\FLGCMP\COMPARE.LOG >> F:\FLGCMP\SUMMARY.TXT
ECHO User compare: F:\FLGCMP\UCOMP.LOG >> F:\FLGCMP\SUMMARY.TXT
ECHO Optional: FLGTZIP ausfuehren. >> F:\FLGCMP\SUMMARY.TXT
ECHO.
ECHO FLGTSTA PART2 fertig. Optional FLGTZIP ausfuehren.
GOTO END
:END

View File

@@ -1,26 +1,25 @@
@ECHO OFF
REM FLGTZIP.BAT
REM Optional packer for FLGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FLGCMP
IF EXIST FLGTSTA.ZIP DEL FLGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FLGTSTA.ZIP > ZIP.LOG
ZIP -r FLGTSTA.ZIP RUN.LOG SUMMARY.TXT OUT >> 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 \FLGTEST\NUL DELTREE /Y \FLGTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FLGCMP\FLGTSTA.ZIP
ECHO F:\FLGCMP\ZIP.LOG
ECHO.
@ECHO OFF
REM FLGTZIP.BAT
REM Optional packer for FLGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FLGCMP
IF EXIST FLGTSTA.ZIP DEL FLGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FLGTSTA.ZIP > ZIP.LOG
ZIP -r FLGTSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT OUT PUBOUT SETUP UNOV UPUB USETUP >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \FLGTEST\NUL DELTREE /Y \FLGTEST >> ZIP.LOG
IF EXIST \FLGTMP\NUL DELTREE /Y \FLGTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FLGCMP\FLGTSTA.ZIP
ECHO F:\FLGCMP\ZIP.LOG
ECHO.

View File

@@ -1,35 +1,50 @@
# FLAG automated test
Novell FLAG baseline using `NPUBLIC\FLAG`.
## Run
Run while already logged in and with `F:` mapped to `SYS`.
```text
FLGTSTA
FLGTZIP
```
Result:
```text
F:\FLGCMP\FLGTSTA.ZIP
```
Linux package with server log:
```sh
sudo ./mars_packtest_v3.sh flgtsta 5 mario
```
## Coverage
- file flag display
- `FLAG ... N`
- set/clear `H`, `RO`, `A`, `Sy`, `DI`, `RI`
- combined flags
- NDIR readback
- NDIR filters `/H`, `/RO`, `/A`, `/SY`, `/NOT H`, `/NOT RO`
- copy/rename smoke check
- final cleanup
# FLAG automated compare test
Compares Novell `NPUBLIC\FLAG` against the current `PUBLIC\FLAG`.
## Run
For the direct compare only:
```text
FLGTSTA
```
For the full automatic NOPASSUSER context block, set the maintainer-login
password first:
```text
SET LGNTPWD=your-supervisor-password
FLGTSTA
```
`FLGTSTA` starts `C:\FLGTMP\FLGC.BAT` through `DLYSTRT`, logs in as
`NOPASSUSER`, runs `NPUBLIC\FLAG` and `PUBLIC\FLAG`, logs back in as
`SUPERVISOR` with `F:\LOGIN\LOGIN /PWD:`, and then queues
`FLGTSTA PART2`.
Package manually:
```text
FLGTZIP
```
## Result directories
```text
F:\FLGCMP\OUT Novell FLAG direct baseline
F:\FLGCMP\PUBOUT PUBLIC FLAG direct output
F:\FLGCMP\COMPARE.LOG direct FC compare
F:\FLGCMP\UNOV Novell FLAG as NOPASSUSER
F:\FLGCMP\UPUB PUBLIC FLAG as NOPASSUSER
F:\FLGCMP\UCOMP.LOG NOPASSUSER FC compare
```
## Coverage
- `FLAG` display
- `FLAG ... N`
- set/clear `H`, `RO`, `A`, `SY`, `DI`, `RI`
- mixed flag combinations
- missing-file behavior
- same cases as `NOPASSUSER`