name: Sanitize env: CARGO_TERM_COLOR: always RUSTFLAGS: -D warnings on: workflow_call: jobs: check_undefined_behaviour: name: Sanitizer checks runs-on: ubuntu-latest timeout-minutes: 20 env: TREE_SITTER: ${{ github.workspace }}/target/release/tree-sitter steps: - name: Checkout source code uses: actions/checkout@v4 - name: Install UBSAN library run: sudo apt-get update -y && sudo apt-get install -y libubsan1 - run: rustup toolchain install stable --profile minimal - uses: Swatinem/rust-cache@v2 - run: cargo build --release - run: script/fetch-fixtures - uses: ./.github/actions/cache id: cache - if: ${{ steps.cache.outputs.cache-hit != 'true' }} run: script/generate-fixtures - name: Run main tests with undefined behaviour sanitizer (UBSAN) env: CFLAGS: -fsanitize=undefined RUSTFLAGS: ${{ env.RUSTFLAGS }} -lubsan run: cargo test -- --test-threads 1 - name: Run main tests with address sanitizer (ASAN) env: ASAN_OPTIONS: verify_asan_link_order=0 CFLAGS: -fsanitize=address RUSTFLAGS: ${{ env.RUSTFLAGS }} -lasan --cfg sanitizing run: cargo test -- --test-threads 1