From ef8d203f268e5834d4868dc864d1cbcf9c283992 Mon Sep 17 00:00:00 2001 From: michelou Date: Wed, 26 Apr 2006 16:00:17 +0000 Subject: added batch file test/scalatest.bat added companion file test/diff.exe (GNU diffutils 2.8.7) --- test/scalatest.bat | 280 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 test/scalatest.bat (limited to 'test/scalatest.bat') diff --git a/test/scalatest.bat b/test/scalatest.bat new file mode 100644 index 0000000000..f7a531520e --- /dev/null +++ b/test/scalatest.bat @@ -0,0 +1,280 @@ +@echo off + +rem ########################################################################## +rem # Copyright (c) 2002-06 LAMP/EPFL +rem # +rem # This is free software; see the distribution for copying conditions. +rem # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A +rem # PARTICULAR PURPOSE. +rem ########################################################################## + +if "%OS%"=="Windows_NT" ( + @setlocal + call :set_home +) else ( + set _SCALA_HOME=%SCALA_HOME% + if "%_SCALA_HOME%"=="" goto err_home +) + +set _JAVACMD=%JAVACMD% +if "%_JAVACMD%"=="" set _JAVACMD=java + +set _NORUN= +set _TYPE=auto +set _SHOWLOG= +set _SHOWDIFF= +set _FAILED= + +set _ARGS= +:loop +rem Argument %1 may contain quotes so we use parentheses here +if (%1)==() goto exec +if (%1)==(--auto) set _TYPE=auto & goto next +if (%1)==(--run) set _TYPE=run & goto next +if (%1)==(--jvm) set _TYPE=jvm & goto next +if (%1)==(--pos) set _TYPE=pos & goto next +if (%1)==(--neg) set _TYPE=neg & goto next +if (%1)==(--msil) set _TYPE=msil & goto next +if (%1)==(--no-run) set _NORUN=1 & goto next +if (%1)==(--show-log) set _SHOWLOG=1 & goto next +if (%1)==(--show-diff) set _SHOWDIFF=1 & goto next +if (%1)==(--failed) set _FAILED=1 & goto next +if (%1)==(--help) call :prt_help & goto :eof +if (%1)==(-h) call :prt_help & goto :eof +if (%1)==(-?) call :prt_help & goto :eof +if (%1)==(--version) call :prt_version & goto :eof +if (%1)==(-v) call :prt_version & goto :eof +call :chk_option %1 +if errorlevel 0 goto err_opt +set _ARGS=%_ARGS% %1 +:next +shift +goto loop + +:exec +set _SCALA=%_BINDIR%scala +set _SCALAC=%_BINDIR%scalac -encoding iso-8859-1 +set _SCALAP=%_BINDIR%scalap +set _DIFF=%_BINDIR%diff.exe --text --strip-trailing-cr + +set _SRCDIR=%_SCALA_HOME%\misc\scala-test\files +set _OBJDIR= +set _TMPDIR=%TEMP% + +if not "%_OBJDIR%"=="" ( + if not exist "%_OBJDIR%" mkdir "%_OBJDIR%" +) +if not "%_TMPDIR%"=="" ( + if not exist "%_TMPDIR%" mkdir "%_TMPDIR%" +) + +call :prt_dir "Source directory is :" "%_SRCDIR%" +call :prt_dir "Scala binaries are in:" "%_BINDIR%" +call :set_version +call :prt_dir "Java runtime is :" "%_JVM_VERSION%" + +set _FILES_POS= +set _FILES_RUN= +set _FILES_JVM= +set _FILES_NEG= +set _FILES_MSIL= + +if %_TYPE%==pos ( + set _FILES_POS=%_SRCDIR%\pos +) else if %_TYPE%==run ( + set _FILES_RUN=%_SRCDIR%\run +) else if %_TYPE%==jvm ( + set _FILES_JVM=%_SRCDIR%\jvm + set _FILES_RUN=%_SRCDIR%\run +) else if %_TYPE%==neg ( + set _FILES_NEG=%_SRCDIR%\neg +) else if %_TYPE%==msil ( + set _FILES_MSIL=%_SRCDIR%\msil +) else if %_TYPE%==auto ( + set _FILES_POS=%_SRCDIR%\pos + set _FILES_NEG=%_SRCDIR%\neg + set _FILES_JVM=%_SRCDIR%\jvm + set _FILES_RUN=%_SRCDIR%\run +) else ( + goto err_test +) +:start +call :chk_all +goto end + +rem ########################################################################## +rem # subroutines +rem # NB. goto/call commands use only the first 8 characters of a label + +:prt_dir + echo %~1 %~2 + goto :eof + +:prt_header + echo. + echo %~1 + goto :eof + +:prt_help + echo Usage: scalatest [OPTION]... + echo. + echo --auto use filenames to select the test to run + echo --run next files test the interpreter and all backends + echo --jvm next files test the JVM backend + echo --pos next files test a compilation success + echo --neg next files test a compilation failure + echo --msil next files test the .NET backend + echo --no-run run no test, use results of last run + echo --show-log show output of failed tests + echo --show-diff show differences between actual and expected output + echo --failed test only files that failed last time + echo --help, -h, -? display this help and exit + echo --version, -v output version information and exit + goto :eof + +:prt_version + echo Scala test suite 0.9.1 -- (c) 2002-2006 LAMP/EPFL + goto :eof + +:prt_status + set _MSG=testing: [...]\%~1\%2 + if not "%_STATUS%"=="0" goto failed + set /a _CNT_SUCCESS=_CNT_SUCCESS+1 + echo %_MSG% [OK] + goto :eof + :failed + set /a _CNT_FAILURE=_CNT_FAILURE+1 + echo %_MSG% [FAILED] + if not "%_SHOWLOG%"=="" type %_LOGFILE% + goto :eof + +rem Variable "%~dps0" works on WinXP SP2 or newer +rem (see http://support.microsoft.com/?kbid=833431) +rem set _SCALA_HOME=%~dps0.. +:set_home + set _BINDIR= + for %%i in (%~sf0) do set _BINDIR=%_BINDIR%%%~dpsi + set _SCALA_HOME=%_BINDIR%.. + goto :eof + +:set_version + set _TMPFILE=%_TMPDIR%\.version + %_JAVACMD% -version 2> %_TMPFILE% + for /f "skip=2 tokens=*" %%f in (%_TMPFILE%) do @set _VERSION=%%f + set _JVM_VERSION=%_VERSION% + goto :eof + +:chk_option + echo %~1 | findstr /r /c:"-.*" 1>NUL + goto :eof + +rem Tests a compilation success. +:test_pos + rmdir /s/q %_DSTBASE%.obj 2>NUL + mkdir %_DSTBASE%.obj + call %_SCALAC% -d %_DSTBASE%.obj %1 1>NUL 2>NUL + if errorlevel 1 goto status_pos + set _STATUS=0 + goto next_pos + :status_pos + set _STATUS=1 + :next_pos + rmdir /s/q %_DSTBASE%.obj + goto :eof + +rem Tests a compilation failure. +:test_neg + rmdir /s/q %_DSTBASE%.obj 2>NUL + mkdir %_DSTBASE%.obj + call %_SCALAC% -d %_DSTBASE%.obj %1 1>NUL 2>NUL + if errorlevel 1 goto status_neg + set _STATUS=1 + goto next_neg + :status_neg + set _STATUS=0 + :next_neg + rmdir /s/q %_DSTBASE%.obj + goto :eof + +rem Tests the JVM backend. +:test_jvm + rmdir /s/q %_DSTBASE%.obj 2>NUL + mkdir %_DSTBASE%.obj + call %_SCALAC% -d %_DSTBASE%.obj %1 2>NUL + if errorlevel 1 goto status_jvm + call %_SCALA% -cp %_DSTBASE%.obj Test "jvm" 1>%_LOGFILE% 2>NUL + if errorlevel 1 goto status_jvm + set _STATUS=0 + goto next_jvm + :status_jvm + set _STATUS=1 + :next_jvm + rmdir /s/q %_DSTBASE%.obj + goto :eof + +:chk_test + set _DSTDIR=%_OBJDIR%%_SRCDIR% + set _TESTNAME=%~n1 + set _DSTBASE=%_DSTDIR%%_TESTNAME%-%_KIND% + set _LOGFILE=%_DSTBASE%.log + + if not '%_HEADER%'=='' call :prt_header %_HEADER% & set _HEADER= + + if %_KIND%=="jvm" call :test_jvm %1 & goto status + if %_KIND%=="pos" call :test_pos %1 & goto status + if %_KIND%=="neg" call :test_neg %1 & goto status + goto :eof + :status + call :prt_status %_KIND% %~nx1 + goto :eof + +:chk_file + set _CNT_SUCCESS=0 + set _CNT_FAILURE=0 + for %%f in (%1\*.scala) do call :chk_test %%f + set /a _CNT_TOTAL=_CNT_SUCCESS+_CNT_FAILURE + if "%_CNT_FAILURE%"=="0" goto success + echo %_CNT_FAILURE% of %_CNT_TOTAL% tests failed + goto :eof + :success + echo All of %_CNT_TOTAL% tests were successful + goto :eof + +:chk_kind + set _HEADER=%1 + shift + set _KIND=%1 + shift + :loop_kind + if "%1"=="" goto done + call :chk_file %1 + shift + goto loop_kind + :done + goto :eof + +rem Checks everything. +:chk_all + call :chk_kind "Testing JVM backend" "jvm" %_FILES_RUN% %_FILES_JVM% + call :chk_kind "Testing compiler (on files whose compilation should succeed)" "pos" %_FILES_POS% + call :chk_kind "Testing compiler (on files whose compilation should fail)" "neg" %_FILES_NEG% + call :chk_kind "Testing .NET backend" "msil" %_FILES_MSIL% + goto :eof + +rem ########################################################################## +rem # errors + +:err_home +echo ERROR: Windows NT or newer is required to run this batch command. +goto end + +:err_test +echo ERROR: Illegal test type %_TYPE%. +goto end + +:err_opt +echo ERROR: Unknown option %1 +goto end + +:end +if "%OS%"=="Windows_NT" @endlocal -- cgit v1.2.3