60 minutes is too long, even without any caching. It should at most take 10 minutes, but we add another 10 to account for any variance.
53 lines
1.5 KiB
YAML
53 lines
1.5 KiB
YAML
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
|
|
|
|
- name: Build CLI
|
|
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:
|
|
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
|