diff --git a/.codecov.yml b/.codecov.yml index ffa259b..2733b79 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -9,9 +9,8 @@ coverage: project: # project is the overall code coverage of the whole codebase default: if_ci_failed: success # per default, codecov would fail if any CI fails - target: auto # the target coverage, usually the code coverage of the base-branch - threshold: 0.02% # codecov/project fails if there is a drop of more than 0.02% - patch: # patch is the code-coverage of the changed lines in the PR + informational: true # the codecov/patch status is never "fail" + patch: # patch is the code-coverage of the changed lines in the PR and often reports false positives default: if_ci_failed: success # per default, codecov would fail if any CI fails informational: true # the codecov/patch status is never "fail" diff --git a/.github/workflows/ci_coverage.yml b/.github/workflows/ci_coverage.yml index 466dbed..6918198 100644 --- a/.github/workflows/ci_coverage.yml +++ b/.github/workflows/ci_coverage.yml @@ -1,25 +1,21 @@ -name: CI on Linux +name: Coverage on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: coverage-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} + cancel-in-progress: false env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eexuo pipefail {0} jobs: build: @@ -30,127 +26,72 @@ jobs: fail-fast: false matrix: include: - - name: "Coverage gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "gcc13" + compiler: "gcc-13" + build: coverage build_type: Coverage - cxx_flags: "-std=c++23" steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV - # How many commits do we need to fetch to also fetch the branch point? - name: Get fetch depth id: fetch_depth run: echo "depth=$(( ${{ github.event.pull_request.commits }} + 2 ))" >> $GITHUB_OUTPUT - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} fetch-depth: ${{ steps.fetch_depth.outputs.depth }} - submodules: recursive + submodules: false - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 125M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - run: sudo apt-get install --yes ${{ matrix.cxx }} + uses: seqan/actions/setup-cmake@main + with: + cmake: 3.21.7 - name: Install gcovr - env: - CC: ${{ matrix.cc }} run: | sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/${CC/gcc/gcov} 100 - pip install gcovr==5.0 - - - name: Load ccache - uses: actions/cache@v3 - with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version + pip install gcovr==6.0 - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }} -Wno-interference-size" - make -j2 gtest_build - - - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 525M - CCACHE_IGNOREOPTIONS: "-fprofile-abs-path" - run: | - ccache -z - cd build - make -k -j2 - ccache -sv + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - name: Build tests env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 525M CCACHE_IGNOREOPTIONS: "-fprofile-abs-path" run: | ccache -z cd build - make -k -j2 api_test cli_test + make -k -j2 test ccache -sv - - name: Run tests - run: | - cd build - ctest . -j2 --output-on-failure - - name: Generate coverage report run: | - gcovr --gcov-executable ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/gcov.sh \ - --root ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/test/coverage \ + gcovr --gcov-executable ${{ github.workspace }}/.github/workflows/scripts/gcov.sh \ + --root ${{ github.workspace }}/test/coverage \ ${{ github.workspace }}/build \ - --filter ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/include \ - --filter ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/src \ + --filter ${{ github.workspace }}/include \ + --filter ${{ github.workspace }}/src \ --exclude-lines-by-pattern '^\s*$' \ --exclude-lines-by-pattern '^\s*};$' \ - --exclude-lines-by-pattern '^.*GCOVR_EXCL_LINE.*$' \ --exclude-unreachable-branches \ --exclude-throw-branches \ + --exclude-noncode-lines \ -j 2 \ --xml \ --output ${{ github.workspace }}/build/coverage_report.xml - - name: Submit coverage report + - name: Submit coverage build uses: codecov/codecov-action@v3 with: files: ${{ github.workspace }}/build/coverage_report.xml - root_dir: ${{ github.workspace }}/${{ env.REPOSITORY_NAME }} + fail_ci_if_error: false diff --git a/.github/workflows/ci_documentation.yml b/.github/workflows/ci_documentation.yml new file mode 100644 index 0000000..d2eb473 --- /dev/null +++ b/.github/workflows/ci_documentation.yml @@ -0,0 +1,65 @@ +name: Documentation + +on: + push: + pull_request: + workflow_dispatch: + +concurrency: + group: documentation-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'push' }} + +env: + TZ: Europe/Berlin + +defaults: + run: + shell: bash -Eexuo pipefail {0} + +jobs: + build: + name: Documentation + runs-on: ubuntu-22.04 + timeout-minutes: 120 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + submodules: false + + - name: Install CMake + uses: seqan/actions/setup-cmake@main + with: + cmake: 3.21.7 + + - name: Install Doxygen + uses: seqan/actions/setup-doxygen@main + with: + doxygen: 1.9.8 + + - name: Configure + run: | + mkdir build + cd build + cmake .. + + - name: Build documentation + run: | + cd build + make -k -j${{ matrix.test_threads }} doc 2>doxygen_warnings.txt + cat doxygen_warnings.txt + test ! -s doxygen_warnings.txt + + - name: Package documentation + if: matrix.build == 'documentation' + continue-on-error: true + run: tar -zcf documentation.tar.gz build + + - name: Upload documentation + if: matrix.build == 'documentation' + continue-on-error: true + uses: actions/upload-artifact@v3 + with: + name: documentation + path: documentation.tar.gz diff --git a/.github/workflows/ci_linux.yml b/.github/workflows/ci_linux.yml index ff9001f..350aa8b 100644 --- a/.github/workflows/ci_linux.yml +++ b/.github/workflows/ci_linux.yml @@ -1,25 +1,21 @@ -name: CI on Linux +name: Linux on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: linux-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name != 'push' }} env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eeuxo pipefail {0} jobs: build: @@ -27,105 +23,62 @@ jobs: runs-on: ubuntu-22.04 timeout-minutes: 120 strategy: - fail-fast: true + fail-fast: false matrix: include: - - name: "Unit gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "clang17" + compiler: "clang-17" + build: unit build_type: Release - cxx_flags: "-std=c++23" + cxx_flags: "-stdlib=libc++" - - name: "Unit gcc11" - cxx: "g++-11" - cc: "gcc-11" + - name: "gcc13" + compiler: "gcc-13" + build: unit build_type: Release - cxx_flags: "-std=c++23" - - name: "Unit gcc10" - cxx: "g++-10" - cc: "gcc-10" + - name: "gcc12" + compiler: "gcc-12" + build: unit build_type: Release - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + - name: "gcc11" + compiler: "gcc-11" + build: unit + build_type: Release + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive + fetch-depth: 1 + submodules: false - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 75M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - run: sudo apt-get install --yes ${{ matrix.cxx }} - - - name: Load ccache - uses: actions/cache@v3 + if: contains(matrix.compiler, 'intel') == false + uses: seqan/actions/setup-cmake@main with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version + cmake: 3.21.7 - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} + - name: Configure run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - make -j2 gtest_build + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M run: | - ccache -z cd build make -k -j2 - ccache -sv - - - name: Build tests - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - run: | - ccache -z - cd build - make -k -j2 api_test cli_test - ccache -sv - - name: Run tests + - name: Build and run tests run: | cd build - ctest . -j2 --output-on-failure + make -k -j2 test diff --git a/.github/workflows/ci_macos.yml b/.github/workflows/ci_macos.yml index 83baac0..df85dbd 100644 --- a/.github/workflows/ci_macos.yml +++ b/.github/workflows/ci_macos.yml @@ -1,25 +1,21 @@ -name: CI on macOS +name: macOS on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: macos-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name != 'push' }} env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eeuxo pipefail {0} jobs: build: @@ -27,106 +23,61 @@ jobs: runs-on: macos-12 timeout-minutes: 120 strategy: - fail-fast: true + fail-fast: false matrix: include: - - name: "Unit gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "clang17" + compiler: "clang-17" + build: unit build_type: Release - cxx_flags: "-std=c++23" - - name: "Unit gcc11" - cxx: "g++-11" - cc: "gcc-11" + - name: "gcc13" + compiler: "gcc-13" + build: unit build_type: Release - cxx_flags: "-std=c++23" - - name: "Unit gcc10" - cxx: "g++-10" - cc: "gcc-10" + - name: "gcc12" + compiler: "gcc-12" + build: unit build_type: Release - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + - name: "gcc11" + compiler: "gcc-11" + build: unit + build_type: Release + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive + fetch-depth: 1 + submodules: false - - name: Configure Homebrew - uses: Homebrew/actions/setup-homebrew@master + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 75M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_via_brew.sh ccache - - - name: Install compiler ${{ matrix.cxx }} - env: - CC: ${{ matrix.cc }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_via_brew.sh $(echo ${CC/clang/llvm} | awk -F '-' '{print $1, $2}') - - - name: Load ccache - uses: actions/cache@v3 + if: contains(matrix.compiler, 'intel') == false + uses: seqan/actions/setup-cmake@main with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version - sudo xcode-select -s '/Applications/Xcode_13.4.1.app/Contents/Developer' # https://github.com/actions/runner-images/issues/6350 + cmake: 3.21.7 - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} + - name: Configure run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - make -j3 gtest_build + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M run: | - ccache -z cd build make -k -j3 - ccache -sv - - - name: Build tests - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - run: | - ccache -z - cd build - make -k -j3 api_test cli_test - ccache -sv - - name: Run tests + - name: Build and run tests run: | cd build - ctest . -j3 --output-on-failure + make -k -j3 test diff --git a/.github/workflows/ci_misc.yml b/.github/workflows/ci_misc.yml deleted file mode 100644 index 049767d..0000000 --- a/.github/workflows/ci_misc.yml +++ /dev/null @@ -1,175 +0,0 @@ -name: CI misc - -on: - push: - branches: - - 'main' - pull_request: - workflow_dispatch: - -concurrency: - group: misc-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 - SHARG_NO_VERSION_CHECK: 1 - TZ: Europe/Berlin - -defaults: - run: - shell: bash -ex {0} - -jobs: - build: - name: ${{ matrix.name }} - runs-on: ubuntu-22.04 - timeout-minutes: 120 - strategy: - fail-fast: false - matrix: - include: - - name: "Documentation" - build: documentation - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - doxygen: 1.9.4 - requires_toolchain: false - requires_ccache: false - skip_build_tests: true - skip_run_tests: false - - name: "Header gcc12" - cxx: "g++-12" - cc: "gcc-12" - build_type: Release - build: header - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - requires_toolchain: true - requires_ccache: true - skip_build_tests: false - skip_run_tests: true - - name: "Header gcc10" - cxx: "g++-10" - cc: "gcc-10" - build_type: Release - build: header - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - requires_toolchain: true - requires_ccache: true - skip_build_tests: false - skip_run_tests: true - - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV - - - name: Checkout - uses: actions/checkout@v3 - with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive - - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh - - - name: Install CMake - env: - BUILD: ${{ matrix.build }} - CMAKE_VERSION: ${{ matrix.cmake }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install Doxygen - if: matrix.build == 'documentation' - env: - DOXYGEN_VERSION: ${{ matrix.doxygen }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_doxygen.sh - - - name: Install ccache - if: matrix.requires_ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - if: matrix.requires_toolchain - run: sudo apt-get install --yes ${{ matrix.cxx }} - - - name: Load ccache - if: matrix.requires_ccache - uses: actions/cache@v3 - with: - path: .ccache - key: ${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ matrix.name }}-ccache-${{ github.ref }} - ${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env doxygen --version || true - env ${{ matrix.cxx }} --version || true - - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} - run: | - mkdir build - cd build - header_test_flag=$(echo "${{ env.REPOSITORY_NAME }}_HEADER_TEST_ONLY" | tr '[:lower:]' '[:upper:]') - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ - -D${header_test_flag}=${{ matrix.build == 'header' && 'ON' || 'OFF'}} - if [[ "${{ matrix.build }}" =~ ^(header)$ ]]; then - make -j${{ matrix.build_threads }} gtest_build - fi - - - name: Build tests - if: ${{!matrix.skip_build_tests}} - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - CMAKE_BUILD_PARALLEL_LEVEL: ${{ matrix.build_threads }} - run: | - ccache -p || true - cd build - make -k test - ccache -s || true - - - name: Run tests - if: ${{!matrix.skip_run_tests}} - run: | - cd build - if [[ "${{ matrix.build }}" =~ ^(documentation)$ ]]; then - make -k -j${{ matrix.test_threads }} doc 2>doxygen_warnings.txt - cat doxygen_warnings.txt - test ! -s doxygen_warnings.txt - else - ctest . -j${{ matrix.test_threads }} --output-on-failure - fi - - - name: Package documentation - if: matrix.build == 'documentation' - continue-on-error: true - run: tar -zcf documentation.tar.gz build - - - name: Upload documentation - if: matrix.build == 'documentation' - continue-on-error: true - uses: actions/upload-artifact@v3 - with: - name: documentation - path: documentation.tar.gz diff --git a/.github/workflows/scripts/gcov.sh b/.github/workflows/scripts/gcov.sh new file mode 100755 index 0000000..258340d --- /dev/null +++ b/.github/workflows/scripts/gcov.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2006-2023, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2023, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +set -Eeuo pipefail + +args=${@/--branch-counts/""} +args=${args/--branch-probabilities/""} + +exec gcov $args