Add ASAN/MSAN/UBSAN support to CMake #140
Workflow file for this run
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: ci | |
on: | |
pull_request: | |
paths: | |
- '**' | |
- '!.gitignore' | |
- '!LICENSE' | |
- '!TODO' | |
- '!doc/**' | |
- '!examples/**' | |
- '.github/workflows/ci.yml' | |
push: | |
branches: | |
- master | |
jobs: | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
buildType: [Debug, Release] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: build | |
run: | | |
mkdir build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=${{matrix.buildType}} .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
- name: stats | |
run: | | |
./build/qjs -qd | |
- name: test | |
run: | | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js | |
./build/qjs tests/test_worker.js | |
- name: test 262 | |
run: | | |
time ./build/run-test262 -m -c test262.conf -a | |
linux-asan: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: test | |
env: | |
ASAN_OPTIONS: halt_on_error=1 | |
run: | | |
mkdir build | |
cd build | |
cmake -DCONFIG_ASAN=ON .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js | |
./build/qjs tests/test_worker.js | |
linux-msan: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: test | |
env: | |
MSAN_OPTIONS: halt_on_error=1 | |
run: | | |
mkdir build | |
cd build | |
cmake -DCONFIG_MSAN=ON .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js | |
./build/qjs tests/test_worker.js | |
linux-ubsan: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: test | |
env: | |
UBSAN_OPTIONS: halt_on_error=1 | |
run: | | |
mkdir build | |
cd build | |
cmake -DCONFIG_UBSAN=ON .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js | |
./build/qjs tests/test_worker.js | |
macos: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: build | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y | |
- name: stats | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y qjs | |
./qjs -qd | |
- name: test | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y test | |
macos-asan: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: test | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_ASAN=y ASAN_OPTIONS="halt_on_error=1" test | |
macos-ubsan: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: test | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_UBSAN=y UBSAN_OPTIONS="halt_on_error=1" test | |
macos-cmake: | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
buildType: [Debug, Release] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: build | |
run: | | |
mkdir build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=${{matrix.buildType}} .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
- name: stats | |
run: | | |
./build/qjs -qd | |
- name: test | |
run: | | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js | |
./build/qjs tests/test_worker.js | |
windows-mingw: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: | |
- mingw64 | |
- ucrt64 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{matrix.sys}} | |
install: >- | |
git | |
make | |
pacboy: >- | |
toolchain:p | |
- name: build | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_MINGW=y | |
- name: stats | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_MINGW=y qjs | |
./qjs -qd | |
- name: test | |
run: | | |
make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_MINGW=y test | |
windows-mingw-cmake: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
buildType: [Debug, Release] | |
sys: | |
- mingw64 | |
- ucrt64 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{matrix.sys}} | |
install: >- | |
git | |
make | |
pacboy: >- | |
cmake:p | |
ninja:p | |
toolchain:p | |
- name: build | |
run: | | |
mkdir build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=${{matrix.buildType}} .. | |
cd .. | |
cmake --build build -j$(getconf _NPROCESSORS_ONLN) | |
- name: stats | |
run: | | |
./build/qjs -qd | |
- name: test | |
run: | | |
./build/qjs tests/test_bigint.js | |
./build/qjs tests/test_closure.js | |
./build/qjs tests/test_language.js | |
./build/qjs tests/test_builtin.js | |
./build/qjs tests/test_loop.js | |
./build/qjs tests/test_std.js |