name: Sanitize env: CARGO_TERM_COLOR: always RUSTFLAGS: "-D warnings" on: workflow_call: jobs: check_undefined_behaviour: name: Sanitizer checks runs-on: ubuntu-latest env: TREE_SITTER: ${{ github.workspace }}/target/release/tree-sitter steps: - name: Checkout source code uses: actions/checkout@v3 - name: Install UBSAN library run: sudo apt-get update -y && sudo apt-get install -y libubsan1 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Build CLI run: cargo build --release - name: Fetch fixtures run: script/fetch-fixtures - name: Generate fixtures run: script/generate-fixtures - name: Run main tests with undefined behaviour sanitizer (UBSAN) env: UBSAN_OPTIONS: halt_on_error=1 CFLAGS: -fsanitize=undefined RUSTFLAGS: ${{ env.RUSTFLAGS }} -lubsan run: cargo test -- --test-threads 1 - name: Run main tests with address sanitizer (ASAN) env: ASAN_OPTIONS: halt_on_error=1 CFLAGS: -fsanitize=address RUSTFLAGS: ${{ env.RUSTFLAGS }} -Zsanitizer=address --cfg=sanitizing run: | rustup install nightly rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu cargo +nightly test -Z build-std --target x86_64-unknown-linux-gnu -- --test-threads 1