Rework once again how to detect a failure in an application:

IF errorlevel 1 only works for positive error code
  IF not errorlevel 0 only works for negative error code
There are not reliable. So, use && and || instead.

Remove expected failure on test as all tests pass now
(and it was broken).
This commit is contained in:
Patrick Pelissier committed 2021-01-10 18:08:48 +01:00
1 parent c9ed4ba820
commit aefba70c1e
1 file changed
+5 -14
+5 -14
View File
@@ -39,10 +39,6 @@ SET PATH=%PATH%;%VCINSTALLDIR%\Tools\Llvm\x64\bin
REM Remove previous results
DEL *.log *.dat
REM List the expected failure (compiler internal error)
set "expectedFailure1=test-msnapshot.c"
set "expectedFailure2=test-none.c"
REM Select compiler to use (either cl or clang-cl)
set "compiler=%1"
@@ -56,29 +52,24 @@ for %%f in (test-*.c) do (
echo Testing %%f
REM Copy the test file as a C++ file as CL.EXE only support C++ file
del test.exe
copy %%f test.cpp
if not ERRORLEVEL 0 EXIT /B 1
copy %%f test.cpp || EXIT /B 1
REM Compile the test suite
REM /Zc:preprocessor is mandatory to have a compliant preprocessor
REM /Zc:__cplusplus is needed to report the real value of __cplusplus, so that M*LIB uses the C++ atomic, and not its emulation.
REM Enable warnings and basic optimization
REM Inform M*LIB to use Annex K by defining __STDC_WANT_LIB_EXT1__
echo Compiling %%f with %compiler%
%compiler% /I.. /O2 /W3 /std:c++14 /Zc:__cplusplus /Zc:preprocessor /D__STDC_WANT_LIB_EXT1__ test.cpp > %%f.log 2>&1
if not ERRORLEVEL 0 (
%compiler% /I.. /O2 /W3 /std:c++14 /Zc:__cplusplus /Zc:preprocessor /D__STDC_WANT_LIB_EXT1__ test.cpp > %%f.log 2>&1 || (
echo *** BUILD ERROR for %%f *** >> %%f.log
type %%f.log
if /i "%%f" NEQ "%expectedFailure1%" if /i "%%f" NEQ "%expectedFailure2%" EXIT /B 1
EXIT /B 1
)
REM Execute it
echo Running %%f
test.exe >> %%f.log 2>&1
if not ERRORLEVEL 0 (
test.exe >> %%f.log 2>&1 && echo Test OK for %%f >> %%f.log || (
echo *** RUNTIME ERROR for %%f *** >> %%f.log
type %%f.log
if /i "%%f" NEQ "%expectedFailure%" if /i "%%f" NEQ "%expectedFailure2%" EXIT /B 1
) ELSE (
echo Test OK for %%f >> %%f.log
EXIT /B 1
)
type %%f.log
)