Skip to content

Commit f38c533

Browse files
committed
streamline report generation
1 parent f56467a commit f38c533

1 file changed

Lines changed: 30 additions & 152 deletions

File tree

‎.github/workflows/dsBaseClient_test_suite.yaml‎

Lines changed: 30 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -421,44 +421,16 @@ jobs:
421421
with:
422422
path: dsBaseClient
423423

424-
- name: Checkout testStatus
425-
if: ${{ github.actor != 'nektos/act' }} # for local deployment only
426-
uses: actions/checkout@v4
427-
with:
428-
repository: ${{ env.REPO_OWNER }}/testStatus
429-
ref: master
430-
path: testStatus
431-
persist-credentials: false
432-
token: ${{ env.GITHUB_TOKEN }}
433-
434-
- uses: r-lib/actions/setup-pandoc@v2
435-
436424
- uses: r-lib/actions/setup-r@v2
437425
with:
438426
r-version: release
439427
use-public-rspm: true
440428

441-
- name: Install xml-twig-tools
442-
run: |
443-
sudo apt-get update -qq
444-
sudo apt-get install -qq xml-twig-tools -y
445-
446429
- uses: r-lib/actions/setup-r-dependencies@v2
447430
with:
448431
dependencies: 'c("Depends", "Imports", "LinkingTo")'
449432
extra-packages: |
450-
cran::quarto
451-
cran::knitr
452-
cran::kableExtra
453-
cran::rmarkdown
454-
cran::downlit
455433
cran::xml2
456-
cran::purrr
457-
cran::dplyr
458-
cran::stringr
459-
cran::tidyr
460-
cran::readr
461-
cran::magrittr
462434
cran::covr
463435
github::datashield/dsDangerClient
464436
@@ -468,16 +440,20 @@ jobs:
468440
pattern: 'opal-*'
469441
path: dsBaseClient/artifacts
470442

471-
- name: Merge results
443+
- name: Merge results and write job summary
472444
run: |
473445
mkdir -p logs
474-
xml_grep --pretty_print indented --wrap "testsuites" --descr "" --cond "testsuite" artifacts/*/test_results_*.xml > logs/test_results.xml
475446
cat artifacts/*/test_console_output_*.txt > logs/test_console_output.txt
476-
working-directory: dsBaseClient
477447
478-
- name: Merge coverage and write job summary
479-
run: |
480448
Rscript -e '
449+
xml_files <- list.files("artifacts", pattern = "^test_results_.*\\.xml$", recursive = TRUE, full.names = TRUE)
450+
docs <- lapply(xml_files, xml2::read_xml)
451+
root <- xml2::xml_new_root("testsuites")
452+
for (doc in docs) {
453+
for (s in xml2::xml_find_all(doc, ".//testsuite")) xml2::xml_add_child(root, s)
454+
}
455+
xml2::write_xml(root, "logs/test_results.xml")
456+
481457
rds_files <- list.files("artifacts", pattern = "coverage\\.rds$", recursive = TRUE, full.names = TRUE)
482458
if (length(rds_files) > 0) {
483459
tallies <- lapply(rds_files, function(f) covr::tally_coverage(readRDS(f)))
@@ -530,51 +506,14 @@ jobs:
530506
'
531507
working-directory: dsBaseClient
532508

533-
- name: Check for JUnit errors
534-
run: |
535-
issue_count=$(sed 's/failures="0" errors="0"//' test_results.xml | grep -c errors= || true)
536-
echo "Number of testsuites with issues: $issue_count"
537-
sed 's/failures="0" errors="0"//' test_results.xml | grep errors= > issues.log || true
538-
cat issues.log || true
539-
# continue with workflow even when some tests fail
540-
exit 0
541-
working-directory: dsBaseClient/logs
542-
543-
- name: Write versions to file
544-
run: |
545-
echo "branch:${{ env.BRANCH_NAME }}" > ${{ env.WORKFLOW_ID }}.txt
546-
echo "os:$(lsb_release -ds)" >> ${{ env.WORKFLOW_ID }}.txt
547-
echo "R:$(R --version | head -n1)" >> ${{ env.WORKFLOW_ID }}.txt
548-
working-directory: dsBaseClient/logs
549-
550-
- name: Parse results from testthat and covr
551-
run: Rscript --verbose --vanilla ../testStatus/source/parse_test_report.R logs/
552-
working-directory: dsBaseClient
553-
554-
- name: Render report
555-
run: |
556-
cd testStatus
557-
558-
mkdir -p new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
559-
mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
560-
mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest/
561-
562-
cp -rv ../dsBaseClient/logs/* new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
563-
cp -rv ../dsBaseClient/logs/${{ env.WORKFLOW_ID }}.txt new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
564-
565-
R -e 'input_dir <- file.path("../new/logs", Sys.getenv("PROJECT_NAME"), Sys.getenv("BRANCH_NAME"), Sys.getenv("WORKFLOW_ID")); quarto::quarto_render("source/test_report.qmd", execute_params = list(input_dir = input_dir))'
566-
mv source/test_report.html new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/index.html
567-
cp -r new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/* new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest
568-
env:
569-
PROJECT_NAME: ${{ env.PROJECT_NAME }}
570-
BRANCH_NAME: ${{ env.BRANCH_NAME }}
571-
WORKFLOW_ID: ${{ env.WORKFLOW_ID }}
572-
573-
- name: Upload test logs
509+
- name: Upload merged results
574510
uses: actions/upload-artifact@v4
575511
with:
576-
name: dsbaseclient-logs-opal
577-
path: testStatus/new
512+
name: opal-report-results
513+
path: |
514+
dsBaseClient/logs/test_results.xml
515+
dsBaseClient/logs/test_console_output.txt
516+
dsBaseClient/logs/coveragelist.csv
578517
579518
580519
################################################################################
@@ -1097,44 +1036,16 @@ jobs:
10971036
with:
10981037
path: dsBaseClient
10991038

1100-
- name: Checkout testStatus
1101-
if: ${{ github.actor != 'nektos/act' }} # for local deployment only
1102-
uses: actions/checkout@v4
1103-
with:
1104-
repository: ${{ env.REPO_OWNER }}/testStatus
1105-
ref: master
1106-
path: testStatus
1107-
persist-credentials: false
1108-
token: ${{ env.GITHUB_TOKEN }}
1109-
1110-
- uses: r-lib/actions/setup-pandoc@v2
1111-
11121039
- uses: r-lib/actions/setup-r@v2
11131040
with:
11141041
r-version: release
11151042
use-public-rspm: true
11161043

1117-
- name: Install xml-twig-tools
1118-
run: |
1119-
sudo apt-get update -qq
1120-
sudo apt-get install -qq xml-twig-tools -y
1121-
11221044
- uses: r-lib/actions/setup-r-dependencies@v2
11231045
with:
11241046
dependencies: 'c("Depends", "Imports", "LinkingTo")'
11251047
extra-packages: |
1126-
cran::quarto
1127-
cran::knitr
1128-
cran::kableExtra
1129-
cran::rmarkdown
1130-
cran::downlit
11311048
cran::xml2
1132-
cran::purrr
1133-
cran::dplyr
1134-
cran::stringr
1135-
cran::tidyr
1136-
cran::readr
1137-
cran::magrittr
11381049
cran::covr
11391050
github::datashield/dsDangerClient
11401051
@@ -1144,16 +1055,20 @@ jobs:
11441055
pattern: 'armadillo-*'
11451056
path: dsBaseClient/artifacts
11461057

1147-
- name: Merge results
1058+
- name: Merge results and write job summary
11481059
run: |
11491060
mkdir -p logs
1150-
xml_grep --pretty_print indented --wrap "testsuites" --descr "" --cond "testsuite" artifacts/*/test_results_*.xml > logs/test_results.xml
11511061
cat artifacts/*/test_console_output_*.txt > logs/test_console_output.txt
1152-
working-directory: dsBaseClient
11531062
1154-
- name: Merge coverage and write job summary
1155-
run: |
11561063
Rscript -e '
1064+
xml_files <- list.files("artifacts", pattern = "^test_results_.*\\.xml$", recursive = TRUE, full.names = TRUE)
1065+
docs <- lapply(xml_files, xml2::read_xml)
1066+
root <- xml2::xml_new_root("testsuites")
1067+
for (doc in docs) {
1068+
for (s in xml2::xml_find_all(doc, ".//testsuite")) xml2::xml_add_child(root, s)
1069+
}
1070+
xml2::write_xml(root, "logs/test_results.xml")
1071+
11571072
rds_files <- list.files("artifacts", pattern = "coverage\\.rds$", recursive = TRUE, full.names = TRUE)
11581073
if (length(rds_files) > 0) {
11591074
tallies <- lapply(rds_files, function(f) covr::tally_coverage(readRDS(f)))
@@ -1206,48 +1121,11 @@ jobs:
12061121
'
12071122
working-directory: dsBaseClient
12081123

1209-
- name: Check for JUnit errors
1210-
run: |
1211-
issue_count=$(sed 's/failures="0" errors="0"//' test_results.xml | grep -c errors= || true)
1212-
echo "Number of testsuites with issues: $issue_count"
1213-
sed 's/failures="0" errors="0"//' test_results.xml | grep errors= > issues.log || true
1214-
cat issues.log || true
1215-
# continue with workflow even when some tests fail
1216-
exit 0
1217-
working-directory: dsBaseClient/logs
1218-
1219-
- name: Write versions to file
1220-
run: |
1221-
echo "branch:${{ env.BRANCH_NAME }}" > ${{ env.WORKFLOW_ID }}.txt
1222-
echo "os:$(lsb_release -ds)" >> ${{ env.WORKFLOW_ID }}.txt
1223-
echo "R:$(R --version | head -n1)" >> ${{ env.WORKFLOW_ID }}.txt
1224-
working-directory: dsBaseClient/logs
1225-
1226-
- name: Parse results from testthat and covr
1227-
run: Rscript --verbose --vanilla ../testStatus/source/parse_test_report.R logs/
1228-
working-directory: dsBaseClient
1229-
1230-
- name: Render report
1231-
run: |
1232-
cd testStatus
1233-
1234-
mkdir -p new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
1235-
mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
1236-
mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest/
1237-
1238-
cp -rv ../dsBaseClient/logs/* new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
1239-
cp -rv ../dsBaseClient/logs/${{ env.WORKFLOW_ID }}.txt new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/
1240-
1241-
R -e 'input_dir <- file.path("../new/logs", Sys.getenv("PROJECT_NAME"), Sys.getenv("BRANCH_NAME"), Sys.getenv("WORKFLOW_ID")); quarto::quarto_render("source/test_report.qmd", execute_params = list(input_dir = input_dir))'
1242-
mv source/test_report.html new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/index.html
1243-
cp -r new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/* new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest
1244-
env:
1245-
PROJECT_NAME: ${{ env.PROJECT_NAME }}
1246-
BRANCH_NAME: ${{ env.BRANCH_NAME }}
1247-
WORKFLOW_ID: ${{ env.WORKFLOW_ID }}
1248-
1249-
- name: Upload test logs
1124+
- name: Upload merged results
12501125
uses: actions/upload-artifact@v4
12511126
with:
1252-
name: dsbaseclient-logs-armadillo
1253-
path: testStatus/new
1127+
name: armadillo-report-results
1128+
path: |
1129+
dsBaseClient/logs/test_results.xml
1130+
dsBaseClient/logs/test_console_output.txt
1131+
dsBaseClient/logs/coveragelist.csv

0 commit comments

Comments
 (0)