name: Sunitize

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-D warnings"

on:
  workflow_call:

jobs:
  check_undefined_behaviour:
    name: Undefined behaviour 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: -lubsan
      run: cargo test -- --test-threads 1
