Improving unit test coverage for Math functions (#1380) #1844
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Determinism Check | |
env: | |
CONVEX_VS_MESH_HASH: '0x610d538e15420778' | |
RAGDOLL_HASH: '0x275057ded572c916' | |
PYRAMID_HASH: '0x198b8eeaee57e29a' | |
EMSCRIPTEN_VERSION: 3.1.73 | |
UBUNTU_CLANG_VERSION: clang++-15 | |
UBUNTU_GCC_VERSION: g++-12 | |
UBUNTU_GCC_AARCH64_VERSION: aarch64-linux-gnu-g++-12 | |
on: | |
push: | |
branches: [ master ] | |
paths-ignore: | |
- 'Docs/**' | |
- '**.md' | |
pull_request: | |
branches: [ master ] | |
paths-ignore: | |
- 'Docs/**' | |
- '**.md' | |
jobs: | |
linux_clang: | |
runs-on: ubuntu-latest | |
name: Linux Clang Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ctest --output-on-failure --verbose | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
linux_gcc: | |
runs-on: ubuntu-latest | |
name: Linux GCC Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ctest --output-on-failure --verbose | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
msvc_cl: | |
runs-on: windows-latest | |
name: Visual Studio CL Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_vs2022_cl.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=Distribution | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution | |
run: ./UnitTests.exe | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH" | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH" | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH" | |
msvc_cl_32: | |
runs-on: windows-latest | |
name: Visual Studio CL 32-bit Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_vs2022_cl_32bit.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: msbuild Build\VS2022_CL_32BIT\JoltPhysics.sln /property:Configuration=Distribution | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution | |
run: ./UnitTests.exe | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH" | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH" | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH" | |
macos: | |
runs-on: macos-latest | |
name: macOS Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution clang++ -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ctest --output-on-failure --verbose | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
arm_clang: | |
runs-on: ubuntu-latest | |
name: ARM Clang Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Update index | |
run: sudo apt-get update | |
- name: Install Cross Compiler | |
run: sudo apt-get install gcc-12-aarch64-linux-gnu gcc-12-multilib g++-12-multilib libstdc++-12-dev-arm64-cross qemu-user -y | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
arm_clang_32: | |
runs-on: ubuntu-latest | |
name: ARM Clang 32-bit Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Update index | |
run: sudo apt-get update | |
- name: Install Cross Compiler | |
run: sudo apt-get install g++-12-arm-linux-gnueabihf qemu-user -y | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_COMPILE_ARM_TARGET="arm-linux-gnueabihf" -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./UnitTests | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
arm_gcc: | |
runs-on: ubuntu-latest | |
name: ARM GCC Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Update index | |
run: sudo apt-get update | |
- name: Install Cross Compiler | |
run: sudo apt-get install g++-12-aarch64-linux-gnu gcc-12-multilib g++-12-multilib libstdc++-12-dev-arm64-cross qemu-user -y | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_AARCH64_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/Linux_Distribution | |
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} | |
emscripten: | |
runs-on: ubuntu-latest | |
name: Emscripten Determinism Check | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Setup emsdk | |
uses: mymindstorm/setup-emsdk@v14 | |
with: | |
version: ${{env.EMSCRIPTEN_VERSION}} | |
- name: Verify emsdk | |
run: emcc -v | |
- name: Setup Node.js 18.x | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/Build | |
run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc) | |
- name: Unit Tests | |
working-directory: ${{github.workspace}}/Build/WASM_Distribution | |
run: node UnitTests.js | |
- name: Test ConvexVsMesh | |
working-directory: ${{github.workspace}}/Build/WASM_Distribution | |
run: node PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} | |
- name: Test Ragdoll | |
working-directory: ${{github.workspace}}/Build/WASM_Distribution | |
run: node PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} | |
- name: Test Pyramid | |
working-directory: ${{github.workspace}}/Build/WASM_Distribution | |
run: node PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} |