# Code coverage when running all the tests, lcov published as artifacts name: Code coverage tests run-name: Code coverage tests on: push: branches: - coverage-test - master jobs: build: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - run: uname -a - run: sudo modprobe btrfs - run: sudo apt-get update -qqq - run: sudo apt-get install -y pkg-config gcc liblzo2-dev libzstd-dev libblkid-dev uuid-dev zlib1g-dev libext2fs-dev e2fsprogs libudev-dev python3-sphinx libaio-dev liburing-dev attr jq lcov - name: Configure run: ./autogen.sh && ./configure --disable-documentation - name: Make run: make V=1 D=gcov - name: Tests cli run: sudo make D=gcov TEST_LOG=dump test-cli - name: Tests mkfs run: sudo make D=gcov TEST_LOG=dump test-mkfs - name: Tests check run: sudo make D=gcov TEST_LOG=dump test-check - name: Tests check (lowmem) run: sudo make D=gcov TEST_LOG=dump test-check-lowmem - name: Tests misc run: sudo make D=gcov TEST_LOG=dump test-misc - name: Tests fuzz run: sudo make D=gcov TEST_LOG=dump test-fuzz - name: Tests convert run: sudo make D=gcov TEST_LOG=dump test-convert - name: Test internal APIs run: make D=gcov test-api - name: Libbtrfsutil test run: make D=gcov test-libbtrfsutil - name: Libbtrfs build test run: make D=gcov library-test - name: Tests hash (correctness) run: make D=gcov hash-vectest && ./hash-vectest - name: Generate lcov results run: | lcov -c -d . -o lcov-info genhtml --rc geninfo_unexecuted_blocks=1 -o lcov-out lcov-info - name: Save lcov results uses: actions/upload-artifact@v4 with: name: lcov-out path: lcov-out - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: ${{ github.workspace }}/lcov-info - name: Save logs on failure if: ${{ failure() }} uses: actions/upload-artifact@v4 with: name: test-results path: "tests/*-results.txt" if-no-files-found: ignore