name: coverage

on: [push, pull_request]

jobs:

  codecov:
    timeout-minutes: 15
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Compile tests
      working-directory: build
      env:
        CXXFLAGS: "--coverage -fno-elide-constructors -fno-inline -fno-default-inline"
        CXX: g++
      run: |
        cmake -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON ..
        make -j4
    - name: Run tests
      working-directory: build
      env:
        CTEST_OUTPUT_ON_FAILURE: 1
      run: ctest --timeout 30 -C Debug -j4
    - name: Collect data
      working-directory: build
      run: |
        sudo apt install lcov
        lcov -c -d . -o coverage.info
        lcov -l coverage.info
    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v3
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        files: build/coverage.info
        name: EnTT
        fail_ci_if_error: true
