@@ -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