diff --git a/.github/workflows/make-coverage-html.yml b/.github/workflows/make-coverage-html.yml new file mode 100644 index 0000000..319da88 --- /dev/null +++ b/.github/workflows/make-coverage-html.yml @@ -0,0 +1,64 @@ +# yamllint disable rule:line-length +# This workflow runs make coverage/html and verifies that the coverage HTML report is generated. +# yamllint enable rule:line-length + +--- +name: Make Coverage HTML + +on: # yamllint disable-line rule:truthy + push: + branches: ["main"] + pull_request: + branches: ["main"] + workflow_dispatch: + +jobs: + make-coverage-html: + name: "Run make coverage/html and verify coverage HTML" + runs-on: ubuntu-24.04 + steps: + - name: Checkout repository + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + + - name: Install/Adjust VCPKG + shell: bash + run: | + echo "VCPKG_ROOT=/usr/local/share/vcpkg" >> $GITHUB_ENV + + - name: Install Tools + run: | + sudo apt-get update + sudo apt-get install lcov + + - name: Check Tools + run: | + echo "-----------" + make --version + echo "-----------" + cmake --version + echo "-----------" + vcpkg --version + echo "-----------" + lcov --version + echo "-----------" + + - name: Run coverage HTML target + run: make coverage/html + + - name: Verify coverage HTML artifact + shell: bash + run: | + if [ ! -f coverage/index.html ]; then + echo "Coverage HTML file not found: coverage-report/index.html" + exit 1 + fi + if [ ! -s coverage/index.html ]; then + echo "Coverage HTML file is empty: coverage-report/index.html" + exit 1 + fi + + - name: Upload coverage HTML artifact + uses: actions/upload-artifact@v7 + with: + name: coverage-report + path: coverage diff --git a/Makefile b/Makefile index 7cb855f..e83ebf7 100644 --- a/Makefile +++ b/Makefile @@ -103,8 +103,13 @@ coverage: test coverage/html: coverage genhtml ${COVERAGE_TOOL_OPTS} -o coverage/ --show-details --legend coverage/lcov.info - open coverage/index.html - + @if [ "$$(uname)" = "Darwin" ]; then \ + open coverage/index.html; \ + elif [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "mingw32" ] || [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "mingw64" ] || [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "cygwin" ]; then \ + cmd /c start coverage/index.html; \ + else \ + echo "Coverage HTML generated: coverage/index.html"; \ + fi outdated: update: dependencies outdated