phase_of_moon and friday_13th determined using rn2() instead of local time if fuzzing. Don't reseed using init_random() if fuzzing. Allow set_random to be called outside of hacklib. rn2_on_display_rng uses rn2 if fuzzing so that we have a single source of random that we can ensure is reproducible. Implement rul() that returns a random unsigned long. Fix bug in fuzzer handling of ntposkey which would cause us to use unitialized values for x and y. Added command line arguments to allow auto starting and stopping of fuzzer. Add a logging facility for the fuzzer to use to record activity. Added some scripts used to automate fuzzer testing on windows.
74 lines
1.4 KiB
Batchfile
74 lines
1.4 KiB
Batchfile
REM
|
|
REM runtill target_move
|
|
REM
|
|
echo off
|
|
|
|
SETLOCAL ENABLEEXTENSIONS
|
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
|
|
|
set TARGET_MOVE=%1
|
|
|
|
if %TARGET_MOVE% == "" (
|
|
echo Usage:runtill target_move
|
|
goto :eof
|
|
)
|
|
|
|
set BIN_DIR=..\..\..\..\bin\Debug\Win32
|
|
set SAVED_GAME=%USERNAME%-wizard.NetHack-saved-game
|
|
set LOG_FILE=%BIN_DIR%\runtil.log
|
|
set FUZZER_LOG=%BIN_DIR%\fuzzer.log
|
|
set FUZZER_DIR=%BIN_DIR%\fuzzer
|
|
set BASELINE=%FUZZER_DIR%\fuzzer.log
|
|
|
|
if not exist %FUZZER_DIR% mkdir %FUZZER_DIR%
|
|
|
|
call clean.bat
|
|
|
|
if not exist %FUZZER_DIR%\%SAVED_GAME% (
|
|
%BIN_DIR%\nethack -D -F 0
|
|
|
|
copy %BIN_DIR%\%SAVED_GAME% %FUZZER_DIR%
|
|
)
|
|
|
|
call restore.bat
|
|
|
|
%BIN_DIR%\nethack -D -F %TARGET_MOVE%
|
|
|
|
move %BIN_DIR%\*.snap %BIN_DIR%\snapshots
|
|
copy %FUZZER_LOG% %BASELINE%
|
|
|
|
for /f "tokens=2,3 delims=: usebackq" %%i in (`findstr /c:START %BASELINE%`) do (
|
|
set START_SEED=%%j
|
|
set START_MOVE=%%i
|
|
)
|
|
|
|
for /f "tokens=2,3 delims=: usebackq" %%i in (`findstr /c:STOP %BASELINE%`) do (
|
|
set STOP_SEED=%%j
|
|
set STOP_MOVE=%%i
|
|
)
|
|
|
|
if !STOP_MOVE! LSS %TARGET_MOVE% (
|
|
cls
|
|
echo FAILED: Failed to reach target move. !STOP_MOVE! is not GTE %TARGET_MOVE%.
|
|
exit /b 1
|
|
)
|
|
|
|
call restore.bat
|
|
|
|
%BIN_DIR%\nethack -D -F %TARGET_MOVE%
|
|
|
|
fc %FUZZER_LOG% %BASELINE%
|
|
|
|
if ERRORLEVEL 1 (
|
|
cls
|
|
echo FAILED: Unable to reproduce same timeline
|
|
exit /b 1
|
|
)
|
|
|
|
del /q %FUZZER_DIR%\%SAVED_GAME%
|
|
|
|
copy %BIN_DIR%\%SAVED_GAME% %FUZZER_DIR%
|
|
|
|
echo !START_MOVE! to !STOP_MOVE!.
|
|
echo SUCCESS.
|