name: libakerror CI Build run-name: ${{ gitea.actor }} libakerror test on: [push] jobs: cmake_build: runs-on: ubuntu-latest steps: - run: echo "Triggered by ${{ gitea.event_name }} from ${{ gitea.repository }}@${{ gitea.ref }}. Building on ${{ runner.os }}." - name: Check out repository code uses: actions/checkout@v4 - name: dependencies run: | sudo apt-get update -y sudo apt-get install -y cmake gcc moreutils - name: build and install run: | mkdir installdir cmake -S . -B build -DCMAKE_INSTALL_PREFIX=installdir cmake --build build cmake --install build # --output-junit resolves relative to the test dir, so give an absolute # path to land the report in the workspace root for the reporter below. - name: test (JUnit) run: ctest --test-dir build --output-on-failure --output-junit "$(pwd)/ctest-junit.xml" - name: publish test results if: always() uses: mikepenz/action-junit-report@v4 with: report_paths: 'ctest-junit.xml' check_name: 'ctest results' fail_on_failure: 'true' - run: echo "🍏 This job's status is ${{ job.status }}." mutation_test: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v4 - name: dependencies run: | sudo apt-get update -y sudo apt-get install -y cmake gcc moreutils python3 # Verify the tests actually catch bugs: break the library many ways and # confirm the suite fails. Gated on src/error.c (fast, deterministic). # The threshold keeps headroom below the current score for equivalent # mutants; see tests/MUTATION.md. Run the full default target locally for # deeper (slower) coverage including the macro header. - name: mutation testing run: | python3 scripts/mutation_test.py --target src/error.c --junit mutation-junit.xml --threshold 65 # Publish even when the threshold gate fails, so survivors are visible. # Display-only (fail_on_failure: false); the --threshold above is the gate. - name: publish mutation results if: always() uses: mikepenz/action-junit-report@v4 with: report_paths: 'mutation-junit.xml' check_name: 'mutation results' fail_on_failure: 'false' - run: echo "🍏 This job's status is ${{ job.status }}."