diff --git a/.github/workflows/make-coverage-html.yml b/.github/workflows/make-coverage-html.yml new file mode 100644 index 0000000..65f41c5 --- /dev/null +++ b/.github/workflows/make-coverage-html.yml @@ -0,0 +1,61 @@ +# 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 + +env: + REPORT_DIR: "./coverage/" + REPORT_FILE: "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: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: "1.26.x" + + - name: Build + run: go build -v ./... + + - name: Tool test + run: | + go version + make --version + + - name: Run coverage HTML target + run: make coverage/html + + - name: Verify coverage HTML artifact + shell: bash + run: | + if [ ! -f $REPORT_DIR/$REPORT_FILE ]; then + echo "Coverage HTML file not found: $REPORT_DIR/$REPORT_FILE" + exit 1 + fi + if [ ! -s $REPORT_DIR/$REPORT_FILE ]; then + echo "Coverage HTML file is empty: $REPORT_DIR/$REPORT_FILE" + exit 1 + fi + + - name: Upload coverage HTML artifact + uses: actions/upload-artifact@v7 + with: + name: coverage-report-html + path: ${{ env.REPORT_DIR }} diff --git a/Makefile b/Makefile index 97f5f8a..82682db 100644 --- a/Makefile +++ b/Makefile @@ -114,7 +114,15 @@ coverage: test coverage/html: coverage.out $(GOCOVER) -html=coverage.out -o ./coverage/coverage.html - open ./coverage/coverage.html + + + @if [ "$$(uname)" = "Darwin" ]; then \ + open ./coverage/coverage.html; \ + elif [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "mingw32" ] || [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "mingw64" ] || [ "$$(uname | tr '[:upper:]' '[:lower:]')" = "cygwin" ]; then \ + cmd /c start ./coverage/coverage.html; \ + else \ + echo "Coverage HTML generated: ./coverage/coverage.html"; \ + fi outdated: $(GO) list -m -u all