name: sanitizer

on: [push, pull_request]

jobs:

  clang:
    timeout-minutes: 15

    strategy:
      matrix:
        compiler: [clang++]
        id_type: ["std::uint32_t", "std::uint64_t"]
        cxx_std: [cxx_std_20, cxx_std_23]

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Compile tests
      working-directory: build
      env:
        CXX: ${{ matrix.compiler }}
      run: |
        cmake -DENTT_USE_SANITIZER=ON -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON -DENTT_CXX_STD=${{ matrix.cxx_std }} -DENTT_ID_TYPE=${{ matrix.id_type }} ..
        make -j4
    - name: Run tests
      working-directory: build
      env:
        CTEST_OUTPUT_ON_FAILURE: 1
      run: ctest -C Debug -j4
