run_tests.sh now understands "slim" and "no-clang" arguments.

This commit is contained in:
bplu4t2f committed 2026-10-10 13:45:52 +02:00
1 parent 561fdf5125
commit 0f3f4bf73c
4 files changed
+176 -31

No files matched your search

+84 -9
View File
@@ -1,5 +1,35 @@
@rem This file runs most of the tests that the CI would run.
@rem It omits time-intensive optimized core library tests and Wycheproof tests.
@rem When the "slim" argument is provided, it omits time-intensive optimized core library tests and Wycheproof tests.
setlocal EnableDelayedExpansion
@echo off
set SLIM=
for %%A in (%*) do (
if "%%A"=="slim" (
set SLIM=1
) else if "%%A"=="no-clang" (
set ODIN_TESTS_NO_CLANG=1
) else (
echo Unrecognized argument: %%A
exit /b
)
)
rem Check if clang is present
if not defined ODIN_TESTS_NO_CLANG (
clang --version
if !ERRORLEVEL! neq 0 (
echo ERROR: clang is not present. Some tests require this.
echo Note: You can try using msvc instead by specifying the "no-clang" argument, or setting ODIN_TESTS_NO_CLANG=1
echo However, some ABI tests will be skipped.
exit /b
)
)
@echo on
@rem Check examples/all
@pushd .
@@ -38,11 +68,56 @@ cd tests\issues
call run.bat || exit /b
@popd
@rem Run ABI tests
@pushd .
cd tests\abi
set ABI_CFLAGS=
call run.bat || exit /b
set ABI_CFLAGS=-O2
call run.bat -o:speed || exit /b
@popd
@rem The ABI tests can be disabled here because they require clang at the moment.
@rem TODO: Maybe try to make them work with msvc as well?
if not defined ODIN_TESTS_NO_CLANG (
@rem Run ABI tests
@pushd .
cd tests\abi
set ABI_CFLAGS=
call run.bat || exit /b
set ABI_CFLAGS=-O2
call run.bat -o:speed || exit /b
@popd
)
@rem More extensive tests (non-slim):
if not defined SLIM (
@echo Running extended tests...
@rem Optimized Core library tests
@pushd tests\core
..\..\odin test speed.odin -o:speed -file -all-packages -vet -vet-tabs -strict-style -vet-style -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true || exit /b
@popd
@rem Wycheproof tests
@pushd tests\core
..\..\odin test crypto/wycheproof -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed || exit /b
@popd
@rem Noise Protocol Framework tests
@pushd tests\core
..\..\odin test crypto/noise -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed || exit /b
@popd
@rem X.509 limbo tests
@pushd tests\core
..\..\odin test crypto/x509_limbo -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed || exit /b
@popd
@echo SUCCESS: Extended tests have been executed successfully.
@echo Note: You can call "run_tests slim" to omit some of the slower tests.
) else (
@echo SUCCESS: Slim tests have been executed successfully.
)
if defined ODIN_TESTS_NO_CLANG (
@echo WARNING: ODIN_TESTS_NO_CLANG specified - ABI tests have been skipped.
)
+76 -6
View File
@@ -7,6 +7,31 @@ set -eu
here=$(cd "$(dirname "$0")" && pwd)
: "${ODIN:=$here/odin}"
SLIM=
for arg in "$@"; do
case "$arg" in
slim)
SLIM=1
;;
no-clang)
export ODIN_TESTS_NO_CLANG=1
;;
*)
echo "Unrecognized argument: $arg"
exit 1
;;
esac
done
if [[ -z "${ODIN_TESTS_NO_CLANG:-}" ]]; then
if ! clang --version >/dev/null 2>&1; then
echo "ERROR: clang is not present. Some tests require this."
echo "Note: You can disable tests that require clang by specifying the \"no-clang\" argument, or setting ODIN_TESTS_NO_CLANG=1"
# TODO: Can we figure out how to make everything work with gcc as well when ODIN_TESTS_NO_CLANG is set?
exit 1
fi
fi
# Check examples/all
"$ODIN" check "$here/examples/all" -vet -vet-tabs -strict-style -vet-style -warnings-as-errors -disallow-do
@@ -43,9 +68,54 @@ rm -rf "$vendor_build"
./run.sh
)
# Run ABI tests
(
cd "$here/tests/abi"
ABI_CFLAGS= ./run.sh
ABI_CFLAGS=-O2 ./run.sh -o:speed
)
# The ABI tests can be disabled because they require clang at the moment.
# TODO: Maybe try to make them work with msvc as well?
if [[ -z "${ODIN_TESTS_NO_CLANG:-}" ]]; then
# Run ABI tests
(
cd "$here/tests/abi"
ABI_CFLAGS= ./run.sh
ABI_CFLAGS=-O2 ./run.sh -o:speed
)
fi
# More extensive tests (non-slim):
if [[ -z "${SLIM:-}" ]]; then
echo "Running extended tests..."
# Optimized Core library tests
(
cd "$here/tests/core"
"$ODIN" test speed.odin -o:speed -file -all-packages -vet -vet-tabs -strict-style -vet-style -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true
)
# Wycheproof tests
(
cd "$here/tests/core"
"$ODIN" test crypto/wycheproof -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed
)
# Noise Protocol Framework tests
(
cd "$here/tests/core"
"$ODIN" test crypto/noise -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed
)
# X.509 limbo tests
(
cd "$here/tests/core"
"$ODIN" test crypto/x509_limbo -vet -vet-tabs -strict-style -vet-style -vet-cast -warnings-as-errors -disallow-do -define:ODIN_TEST_FANCY=false -o:speed
)
echo "SUCCESS: Extended tests have been executed successfully."
echo "Note: You can call \"run_tests slim\" to omit some of the slower tests."
else
echo "SUCCESS: Slim tests have been executed successfully."
fi
if [[ -n "${ODIN_TESTS_NO_CLANG:-}" ]]; then
echo "WARNING: ODIN_TESTS_NO_CLANG specified - ABI tests have been skipped."
fi
+7 -7
View File
@@ -95,12 +95,12 @@ set ODIN=..\..\..\odin
@rem Test clang - improve error message for users that don't have it.
@if "%ISSUES_TESTS_NO_CLANG%" == "" (
@if "%ODIN_TESTS_NO_CLANG%" == "" (
@echo Testing for clang...
clang --version
if !ERRORLEVEL! neq 0 (
@echo ERROR: clang not working. This is required for some tests.
@echo You can try msvc instead: set ISSUES_TESTS_NO_CLANG=1
@echo You can try msvc instead: set ODIN_TESTS_NO_CLANG=1
exit /b
)
) else (
@@ -108,7 +108,7 @@ set ODIN=..\..\..\odin
cl
if !ERRORLEVEL! neq 0 (
@echo ERROR: msvc not working. This is required for some tests.
@echo You can try clang instead: set ISSUES_TESTS_NO_CLANG=
@echo You can try clang instead: set ODIN_TESTS_NO_CLANG=
exit /b
)
)
@@ -116,7 +116,7 @@ set ODIN=..\..\..\odin
@rem #########################################################################################################
@rem "odin test" tests with special needs, or others (e.g. "odin doc"):
@if "%ISSUES_TESTS_NO_CLANG%" == "" (
@if "%ODIN_TESTS_NO_CLANG%" == "" (
clang -c "..\test_issue_5640\test_issue_5640.c" -o test_issue_5640_c.o || exit /b
) else (
cl -c "..\test_issue_5640\test_issue_5640.c" /Fo:test_issue_5640_c.o || exit /b
@@ -124,7 +124,7 @@ set ODIN=..\..\..\odin
%ODIN% test "..\test_issue_5640" %COMMON% || exit /b
@if "%ISSUES_TESTS_NO_CLANG%" == "" (
@if "%ODIN_TESTS_NO_CLANG%" == "" (
clang -c "..\test_issue_6809_6816\test_issue_6809_6816.c" -o test_issue_6809_6816_c.o -O3 || exit /b
) else (
cl -c "..\test_issue_6809_6816\test_issue_6809_6816.c" /Fo:test_issue_6809_6816_c.o -O3 || exit /b
@@ -137,7 +137,7 @@ set ODIN=..\..\..\odin
%ODIN% test "..\test_pr_6470" %COMMON% -define:TEST_EXPECT_FAILURE=true 2>&1 | find /c "Error:" | findstr /x "1" || exit /b
@rem It seems at this point 7010 is not for Windows.
@rem @if "%ISSUES_TESTS_NO_CLANG%" == "" (
@rem @if "%ODIN_TESTS_NO_CLANG%" == "" (
@rem clang -c "..\test_issue_7010\test_issue_7010.c" -o test_issue_7010_c.o || exit /b
@rem %ODIN% test "..\test_issue_7010" %COMMON% || exit /b
@rem ) else (
@@ -157,7 +157,7 @@ set ODIN=..\..\..\odin
%ODIN% test "..\test_lifetime_markers" %COMMON% -o:size -lifetime-markers || exit /b
%ODIN% test "..\test_lifetime_markers" %COMMON% -o:speed -lifetime-markers || exit /b
@if "%ISSUES_TESTS_NO_CLANG%" == "" (
@if "%ODIN_TESTS_NO_CLANG%" == "" (
clang -c "..\test_issue_sysv_abi\test_issue_sysv_abi.c" -o test_issue_sysv_abi_c.o || exit /b
) else (
cl -c "..\test_issue_sysv_abi\test_issue_sysv_abi.c" /Fo:test_issue_sysv_abi_c.o || exit /b
+9 -9
View File
@@ -18,7 +18,7 @@ set -x
# update `run.bat` as well.
# Some tests require a C compiler.
# By default, it uses clang. export ISSUES_TESTS_NO_CLANG=1 to disable these tests.
# By default, it uses clang. export ODIN_TESTS_NO_CLANG=1 to disable these tests.
# TODO: See if we can make the tests work with gcc instead?
#########################################################################################################
@@ -280,11 +280,11 @@ $ODIN run ../test_issue_7798 $COMMON
# Test clang - improve error message for users that don't have it.
#
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
if ! clang --version; then
set +x
echo "ERROR: clang not working. This is required for some tests."
echo "You can disable tests that require clang: export ISSUES_TESTS_NO_CLANG=1"
echo "You can disable tests that require clang: export ODIN_TESTS_NO_CLANG=1"
exit 1
fi
fi
@@ -295,7 +295,7 @@ fi
# "odin test" tests with special needs, or others (e.g. "odin doc"):
#
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
clang -c ../test_issue_5640/test_issue_5640.c -o test_issue_5640_c.o
if [[ "$(uname)" != "NetBSD" ]]; then
@@ -305,7 +305,7 @@ if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
fi
fi
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
clang -c ../test_issue_6809_6816/test_issue_6809_6816.c -o test_issue_6809_6816_c.o -O3
$ODIN test ../test_issue_6809_6816 -o:speed $COMMON
fi
@@ -319,7 +319,7 @@ else
exit 1
fi
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
clang -c ../test_issue_7010/test_issue_7010.c -o test_issue_7010_c.o
$ODIN test ../test_issue_7010 $COMMON
fi
@@ -357,13 +357,13 @@ fi
$ODIN test ../test_lifetime_markers $COMMON -o:size -lifetime-markers
$ODIN test ../test_lifetime_markers $COMMON -o:speed -lifetime-markers
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
clang -c ../test_issue_sysv_abi/test_issue_sysv_abi.c -o test_issue_sysv_abi_c.o
$ODIN test ../test_issue_sysv_abi $COMMON
fi
# AVX-512 asked for through -target-features on the default microarch; needs a CPU that has it
if [[ -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
if grep -qw avx512f /proc/cpuinfo 2>/dev/null; then
clang -c ../test_issue_avx512_vector_abi/test_issue_avx512_vector_abi.c -o test_issue_avx512_vector_abi_c.o -mavx512f
$ODIN test ../test_issue_avx512_vector_abi $COMMON_CHECK -target-features:avx512f
@@ -375,7 +375,7 @@ $ODIN test ../test_issue_loaded_pointer_alignment $COMMON -o:speed
#########################################################################################################
if [[ ! -z ${ISSUES_TESTS_NO_CLANG+x} ]]; then
if [[ ! -z ${ODIN_TESTS_NO_CLANG+x} ]]; then
echo "!!! WARNING !!! Tests that require clang have been skipped"
fi