-
Notifications
You must be signed in to change notification settings - Fork 43
Combine upload of R and JS coverage #260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 16 commits
4f66215
d5b7a2e
a2f1ce1
38acf60
1bdfce0
d4edb31
d44e6e0
e9d98bf
559209f
ecc349e
afd4306
53bbce8
58c00fd
3ee5b4b
7fbb434
fcc6079
a442a58
8a2c8b6
4be6d28
c4c6d4d
2e06d40
1620d93
4702d43
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,20 +6,54 @@ on: | |
| branches: [main, master] | ||
|
|
||
| jobs: | ||
| R-CMD-check: | ||
| r-tests: | ||
| runs-on: ubuntu-latest | ||
| name: R coverage tests | ||
| env: | ||
| TEST_SUITE: R_coverage | ||
| GITHUB_PAT: ${{ secrets.PAT_GITHUB }} | ||
| GH_ACTION: "ENABLED" | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - name: install and update texlive | ||
| run: /usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt update -y -qq | ||
| - run: /usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt install tidy texlive texlive-fonts-extra -y | ||
| - uses: r-lib/actions/setup-r@v2 | ||
| - uses: r-lib/actions/setup-r-dependencies@v2 | ||
|
|
||
| - name: install package | ||
| run: R CMD INSTALL . | ||
|
|
||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| test-suite: [ R_coverage, JS_coverage, CRAN ] | ||
| - name: git config user.name | ||
| run: git config --global user.name "GitHub Actions" | ||
|
|
||
| - name: git config user.email | ||
| run: git config --global user.email toby.hocking@r-project.org | ||
|
|
||
| name: ${{ matrix.test-suite }} | ||
| env: | ||
| TEST_SUITE: ${{ matrix.test-suite }} | ||
| - name: Run R tests and generate coverage | ||
| run: | | ||
| Rscript -e "if (!requireNamespace('covr', quietly=TRUE)) install.packages('covr'); cov <- covr::package_coverage(type='tests', test_files = "tests/testthat.R"); covr::to_cobertura(cov, file='r-coverage.xml')" | ||
|
|
||
| - name: Normalize R coverage paths | ||
| run: | | ||
| if [ -f "r-coverage.xml" ]; then | ||
| perl -0777 -pe "s|<sources>.*?</sources>|<sources><source>.</source></sources>|s" -i r-coverage.xml | ||
| sed -i 's|\\\\|/|g' r-coverage.xml | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can these two please be combined into a single R script? |
||
| fi | ||
|
|
||
| - name: Upload R coverage artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: r-coverage | ||
| path: r-coverage.xml | ||
|
|
||
| js-tests: | ||
| runs-on: ubuntu-latest | ||
| name: JS coverage tests | ||
| env: | ||
| TEST_SUITE: JS_coverage | ||
| GITHUB_PAT: ${{ secrets.PAT_GITHUB }} | ||
| GH_ACTION: "ENABLED" | ||
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - name: install and update texlive | ||
|
|
@@ -38,48 +72,84 @@ jobs: | |
| run: git config --global user.email toby.hocking@r-project.org | ||
|
|
||
| - name: Setup Node.js | ||
| if: matrix.test-suite == 'JS_coverage' | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: '18' | ||
|
|
||
| - name: Install Node.js dependencies | ||
| if: matrix.test-suite == 'JS_coverage' | ||
| run: | | ||
| npm install v8-to-istanbul | ||
| echo "Node modules installed" | ||
|
|
||
| - name: run tests | ||
| run: npm install v8-to-istanbul | ||
|
|
||
| - name: Run JS tests and convert coverage | ||
| run: | | ||
| if [ "$TEST_SUITE" == "CRAN" ]; then | ||
| bash build.sh | ||
| elif [ "$TEST_SUITE" == "JS_coverage" ]; then | ||
| echo "Running testthat with JS coverage collection..." | ||
| Rscript -e "source('tests/testthat.R', chdir = TRUE)" | ||
| else | ||
| echo "Running testthat with R coverage collection..." | ||
| Rscript -e 'covr::codecov(quiet = FALSE, type = "tests", test_files = "tests/testthat.R", flags = "r")' | ||
| fi | ||
| Rscript -e "source('tests/testthat.R', chdir = TRUE)" | ||
|
|
||
| - name: Convert JS coverage to Istanbul format | ||
| if: matrix.test-suite == 'JS_coverage' | ||
| run: | | ||
| if [ -f "tests/testthat/js-coverage.json" ]; then | ||
| echo "Converting JS coverage to LCOV format..." | ||
| echo "Converting JS coverage to Istanbul format..." | ||
| node v8-to-istanbul.js | ||
| else | ||
| echo "No JS coverage file found" | ||
| exit 1 | ||
| fi | ||
|
|
||
| - name: Upload JS coverage to Codecov | ||
| if: matrix.test-suite == 'JS_coverage' | ||
| - name: Upload JS coverage artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: js-coverage | ||
| path: coverage-istanbul.json | ||
|
|
||
| CRAN: | ||
| runs-on: ubuntu-latest | ||
| name: CRAN checks | ||
| env: | ||
| TEST_SUITE: CRAN | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. would it be better if this job be moved to a separate file? |
||
| GITHUB_PAT: ${{ secrets.PAT_GITHUB }} | ||
| GH_ACTION: "ENABLED" | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - name: install and update texlive | ||
| run: /usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt update -y -qq | ||
| - run: /usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt install tidy texlive texlive-fonts-extra -y | ||
| - uses: r-lib/actions/setup-r@v2 | ||
| - uses: r-lib/actions/setup-r-dependencies@v2 | ||
|
|
||
| - name: install package | ||
| run: R CMD INSTALL . | ||
|
|
||
| - name: git config user.name | ||
| run: git config --global user.name "GitHub Actions" | ||
|
|
||
| - name: git config user.email | ||
| run: git config --global user.email toby.hocking@r-project.org | ||
|
|
||
| - name: run CRAN build | ||
| run: bash build.sh | ||
|
|
||
| upload-coverage: | ||
| runs-on: ubuntu-latest | ||
| name: Upload combined coverage to Codecov | ||
| needs: [r-tests, js-tests] | ||
| if: always() | ||
| env: | ||
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
| steps: | ||
| - name: Checkout repository (needed so Codecov can find source files) | ||
| uses: actions/checkout@v3 | ||
|
|
||
| - name: Download R coverage artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: r-coverage | ||
| path: ./ | ||
|
|
||
| - name: Download JS coverage artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: js-coverage | ||
| path: ./ | ||
|
|
||
| - name: Upload to Codecov | ||
| run: | | ||
| if [ -f "coverage-istanbul.json" ]; then | ||
| curl -Os https://uploader.codecov.io/latest/linux/codecov | ||
| chmod +x codecov | ||
| ./codecov -f coverage-istanbul.json -t ${{ secrets.CODECOV_TOKEN }} --flags javascript | ||
| else | ||
| echo "No coverage file found" | ||
| exit 1 | ||
| fi | ||
| curl -Os https://uploader.codecov.io/latest/linux/codecov | ||
| chmod +x codecov | ||
| ./codecov -f "r-coverage.xml" -f "coverage-istanbul.json" -t $CODECOV_TOKEN | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these are only required for CRAN checks, not testing, so please remove.