From ae844ec4c5aca027ecf87c1f150bc6bd647e75c0 Mon Sep 17 00:00:00 2001 From: Ivan Yonchovski Date: Tue, 18 Jul 2023 01:32:55 +0300 Subject: [PATCH] Restore coverage (#74) * Restore coverage * use nimble setup for now * Update codecov.yml * fix lcov * re-add nim binary to lockfile --------- Co-authored-by: Jaremy Creechley --- .github/workflows/ci.yml | 2 +- .github/workflows/codecov.yml | 69 +++++++++++++++++++++++++++++++++++ build.nims | 7 ++-- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b9f644c..7693595 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,7 +92,7 @@ jobs: path: | ~/.nimble ${{ github.workspace }}/.nimble - key: ${{ matrix.target.os }}-${{ matrix.target.cpu }}-dotnimble-${{ hashFiles('nimble.lock') }} + key: ${{ matrix.builder }}-${{ matrix.target.cpu }}-dotnimble-${{ hashFiles('nimble.lock') }} - name: Setup Nimble uses: "./.github/actions/install_nimble" diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 0000000..63a900d --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,69 @@ +name: Generate and upload code coverage + +on: + #On push to common branches, this computes the "bases stats" for PRs + push: + branches: + - main + pull_request: + workflow_dispatch: + +jobs: + All_Tests: + name: All tests + runs-on: ubuntu-20.04 + strategy: + matrix: + nim-options: [ + "" + ] + test-program: [ + "test" + ] + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Environment setup + run: | + sudo apt-get update + sudo apt-get install -y lcov build-essential git curl + mkdir coverage + + - name: Restore nimble dependencies from cache + id: nimble_deps + uses: actions/cache@v3 + with: + path: | + ~/.nimble + key: ubuntu-20.04-amd64-${{ hashFiles('nimble.lock') }} + + - name: Setup Nimble + uses: "./.github/actions/install_nimble" + with: + os: linux + cpu: x64 + + - name: Setup Env + run: | + nimble -v + + - name: Setup Deps + run: | + nimble install -d + nimble setup + + - name: Run tests + run: | + nimble -y --verbose coverage + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v2 + with: + directory: ./coverage/ + fail_ci_if_error: true + files: ./coverage/coverage.f.info + flags: unittests + name: codecov-umbrella + verbose: true diff --git a/build.nims b/build.nims index 164c795..b4c5d7f 100644 --- a/build.nims +++ b/build.nims @@ -42,11 +42,11 @@ task coverage, "generates code coverage report": var nimSrcs = "" for f in walkDirRec(".", {pcFile}): - if f.endswith(".nim"): nimSrcs.add " " & f.quoteShell() + if f.endswith(".nim"): nimSrcs.add " " & f.absolutePath.quoteShell() echo "======== Running Tests ======== " exec("nim c -r tests/coverage.nim") - # exec("rm nimcache/*.c") + exec("rm nimcache/*.c") rmDir("coverage"); mkDir("coverage") echo " ======== Running LCOV ======== " exec("lcov --capture --directory nimcache --output-file coverage/coverage.info") @@ -54,5 +54,6 @@ task coverage, "generates code coverage report": echo " ======== Generating HTML coverage report ======== " exec("genhtml coverage/coverage.f.info --output-directory coverage/report ") echo " ======== Opening HTML coverage report in browser... ======== " - exec("open coverage/report/index.html") + if findExe("open") != "": + exec("open coverage/report/index.html")