diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..fc7625c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,361 @@ +name: Test + +on: [pull_request, merge_group] + +jobs: + test-ubuntu-22-04: + name: Ubuntu 22.04 + runs-on: ubuntu-22.04 + steps: + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + + - uses: actions/checkout@v4 + + - name: install-prerequisites + run: | + sudo apt-get update + sudo apt-get -y install {gcc,g++}-{9,10,11,12} clang-{11,12,13,14,15} + conda create -y --name cuda-env + conda activate cuda-env + conda install -y cuda-minimal-build + rm -f "$CONDA/envs/cuda-env/bin/ld" + + - name: build-gcc-9 + run: | + cd tests + mkdir build-gcc-9 + cd build-gcc-9 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-10 + run: | + cd tests + mkdir build-gcc-10 + cd build-gcc-10 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-11 + run: | + cd tests + mkdir build-gcc-11 + cd build-gcc-11 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-12 + run: | + cd tests + mkdir build-gcc-12 + cd build-gcc-12 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + + - name: build-clang-11 + run: | + cd tests + mkdir build-clang-11 + cd build-clang-11 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-12 + run: | + cd tests + mkdir build-clang-12 + cd build-clang-12 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-13 + run: | + cd tests + mkdir build-clang-13 + cd build-clang-13 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-14 + run: | + cd tests + mkdir build-clang-14 + cd build-clang-14 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-15 + run: | + cd tests + mkdir build-clang-15 + cd build-clang-15 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + + - name: run-gcc-9 + run: | + cd tests/build-gcc-9 + ../runalltests.sh + - name: run-gcc-10 + run: | + cd tests/build-gcc-10 + ../runalltests.sh + - name: run-gcc-11 + run: | + cd tests/build-gcc-11 + ../runalltests.sh + - name: run-gcc-12 + run: | + cd tests/build-gcc-12 + ../runalltests.sh + + - name: run-clang-11 + run: | + cd tests/build-clang-11 + ../runalltests.sh + - name: run-clang-12 + run: | + cd tests/build-clang-12 + ../runalltests.sh + - name: run-clang-13 + run: | + cd tests/build-clang-13 + ../runalltests.sh + - name: run-clang-14 + run: | + cd tests/build-clang-14 + ../runalltests.sh + - name: run-clang-15 + run: | + cd tests/build-clang-15 + ../runalltests.sh + + test-ubuntu-20-04: + name: Ubuntu 20.04 + runs-on: ubuntu-20.04 + steps: + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + + - uses: actions/checkout@v4 + + - name: install-prerequisites + run: | + sudo apt-get update + sudo apt-get -y install {gcc,g++}-{7,8,9,10} clang-{7,8,9,10,11,12} + conda create -y --name cuda-env + conda activate cuda-env + conda install -y cuda-minimal-build + rm -f "$CONDA/envs/cuda-env/bin/ld" + + - name: build-gcc-7 + run: | + cd tests + mkdir build-gcc-7 + cd build-gcc-7 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-8 + run: | + cd tests + mkdir build-gcc-8 + cd build-gcc-8 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-9 + run: | + cd tests + mkdir build-gcc-9 + cd build-gcc-9 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-gcc-10 + run: | + cd tests + mkdir build-gcc-10 + cd build-gcc-10 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + + - name: build-clang-7 + run: | + cd tests + mkdir build-clang-7 + cd build-clang-7 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-7 -DCMAKE_CXX_COMPILER=clang++-7 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-8 + run: | + cd tests + mkdir build-clang-8 + cd build-clang-8 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-9 + run: | + cd tests + mkdir build-clang-9 + cd build-clang-9 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-10 + run: | + cd tests + mkdir build-clang-10 + cd build-clang-10 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clang++-10 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-11 + run: | + cd tests + mkdir build-clang-11 + cd build-clang-11 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + - name: build-clang-12 + run: | + cd tests + mkdir build-clang-12 + cd build-clang-12 + conda activate cuda-env + unset NVCC_PREPEND_FLAGS + cmake .. -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DCMAKE_CUDA_COMPILER="$CONDA/envs/cuda-env/bin/nvcc" + make -j2 + + - name: run-gcc-7 + run: | + cd tests/build-gcc-7 + ../runalltests.sh + - name: run-gcc-8 + run: | + cd tests/build-gcc-8 + ../runalltests.sh + - name: run-gcc-9 + run: | + cd tests/build-gcc-9 + ../runalltests.sh + - name: run-gcc-10 + run: | + cd tests/build-gcc-10 + ../runalltests.sh + + - name: run-clang-7 + run: | + cd tests/build-clang-7 + ../runalltests.sh + - name: run-clang-8 + run: | + cd tests/build-clang-8 + ../runalltests.sh + - name: run-clang-9 + run: | + cd tests/build-clang-9 + ../runalltests.sh + - name: run-clang-10 + run: | + cd tests/build-clang-10 + ../runalltests.sh + - name: run-clang-11 + run: | + cd tests/build-clang-11 + ../runalltests.sh + - name: run-clang-12 + run: | + cd tests/build-clang-12 + ../runalltests.sh + + test-windows-2022: + name: Windows Server 2022 + runs-on: windows-2022 + steps: + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + + - uses: actions/checkout@v4 + + - name: install-prerequisites + shell: cmd + run: | + conda create -y --name cuda-env + conda activate cuda-env + conda install -y cuda-minimal-build + + - name: build + shell: cmd + run: | + cd tests + mkdir build + cd build + conda activate cuda-env + "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" && cmake -G "NMake Makefiles" .. && nmake + + - name: run + shell: cmd + run: | + cd tests/build + ../runalltests.bat + + test-windows-2019: + name: Windows Server 2019 + runs-on: windows-2019 + steps: + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + + - uses: actions/checkout@v4 + + - name: install-prerequisites + shell: cmd + run: | + conda create -y --name cuda-env + conda activate cuda-env + conda install -y cuda-minimal-build + + - name: build + shell: cmd + run: | + cd tests + mkdir build + cd build + conda activate cuda-env + "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" && cmake -G "NMake Makefiles" .. && nmake + + - name: run + shell: cmd + run: | + cd tests/build + ../runalltests.bat diff --git a/tests/runalltests.bat b/tests/runalltests.bat new file mode 100755 index 0000000..72f4974 --- /dev/null +++ b/tests/runalltests.bat @@ -0,0 +1,30 @@ +runtest.exe -t attributes +runtest.exe -t attributes -i inj +runtest.exe -t calls +runtest.exe -t calls -i inj +runtest.exe -t calls -i calls +runtest.exe -t categories +runtest.exe -t categories -i inj +runtest.exe -t coverage +runtest.exe -t coverage -i inj +runtest.exe -t coveragec +runtest.exe -t coveragec -i inj +runtest.exe -t coverage-counter +runtest.exe -t coverage-counter -i inj +runtest.exe -t coverage-cu +runtest.exe -t coverage-cu -i inj +runtest.exe -t coverage-mem +runtest.exe -t coverage-mem -i inj +runtest.exe -t coverage-memcudart +runtest.exe -t coverage-memcudart -i inj +runtest.exe -t coverage-payload +runtest.exe -t coverage-payload -i inj +runtest.exe -t domains +runtest.exe -t domains -i inj +runtest.exe -t linkerdupes +runtest.exe -t linkerdupes -i inj +runtest.exe -t regstrings +runtest.exe -t regstrings -i inj +runtest.exe -t self +runtest.exe -t self -i inj +runtest.exe -t self -i self diff --git a/tests/runalltests.sh b/tests/runalltests.sh new file mode 100755 index 0000000..fca839d --- /dev/null +++ b/tests/runalltests.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -ex +./runtest -t attributes +./runtest -t attributes -i inj +./runtest -t calls +./runtest -t calls -i inj +./runtest -t calls -i calls +./runtest -t categories +./runtest -t categories -i inj +./runtest -t coverage +./runtest -t coverage -i inj +./runtest -t coveragec +./runtest -t coveragec -i inj +./runtest -t coverage-counter +./runtest -t coverage-counter -i inj +./runtest -t coverage-cu +./runtest -t coverage-cu -i inj +./runtest -t coverage-mem +./runtest -t coverage-mem -i inj +./runtest -t coverage-memcudart +./runtest -t coverage-memcudart -i inj +./runtest -t coverage-payload +./runtest -t coverage-payload -i inj +./runtest -t domains +./runtest -t domains -i inj +./runtest -t linkerdupes +./runtest -t linkerdupes -i inj +./runtest -t regstrings +./runtest -t regstrings -i inj +./runtest -t self +./runtest -t self -i inj +./runtest -t self -i self