@@ -132,6 +132,9 @@ jobs:
132132 sudo R -q -e "install.packages(c('devtools','metafor','fields','covr'), dependencies=TRUE, repos='https://cloud.r-project.org')"
133133 sudo R -q -e "install.packages(c('DSI','DSOpal','DSLite'), dependencies=TRUE, repos='https://cloud.r-project.org')"
134134
135+ # XML grep for coverage report merging
136+ sudo apt-get install -qq xml-twig-tools -y
137+
135138 displayName: 'Install all dependencies for dsBaseClient'
136139 condition: succeeded()
137140
@@ -157,8 +160,8 @@ jobs:
157160 echo "Run devtools::document() locally then commit again."
158161 exit 1
159162 else
160- echo "Documentation up to date."
161- exit 0
163+ echo "Documentation up to date."
164+ exit 0
162165 fi
163166
164167 workingDirectory: $(Pipeline.Workspace)/dsBaseClient
@@ -241,34 +244,32 @@ jobs:
241244 # testthat::testpackage uses a MultiReporter, comprised of a ProgressReporter and JunitReporter
242245 # R output and messages are redirected by sink() to test_console_output.txt
243246 # junit reporter output is to test_results.xml
247+ #
248+ # "_-|arg-|smk-|datachk-|disc-|math-|expt-|expt_smk-"
244249 sudo R -q -e '
245250 library(covr);
246- write.csv(
247- coverage_to_list(
248- covr::package_coverage(
249- type = c("none"),
250- code = c(
251- '"'"'library(testthat);
252- output_file <- file("test_console_output.txt");
253- sink(output_file);
254- sink(output_file, type = "message");
255- library(testthat);
256- junit_rep <- JunitReporter$new(file = "test_results.xml");
257- progress_rep <- ProgressReporter$new(max_failures = 999999);
258- multi_rep <- MultiReporter$new(reporters = list(progress_rep, junit_rep));
259- testthat::test_package("$(projectName)", filter = "_-|arg-|smk-|datachk-|disc-|math-|expt-|expt_smk-",reporter = multi_rep, stop_on_failure = FALSE)'"'"')
260- )
261- ),
262- "coveragelist.csv"
263- )'
251+ dsbase.res <- covr::package_coverage(
252+ type = c("none"),
253+ code = c(
254+ '"'"'library(testthat);
255+ output_file <- file("test_console_output_dsbase.txt");
256+ sink(output_file);
257+ sink(output_file, type = "message");
258+ library(testthat);
259+ junit_rep <- JunitReporter$new(
260+ file = "test_results_dsbase.xml");
261+ progress_rep <- ProgressReporter$new(max_failures = 999999);
262+ multi_rep <- MultiReporter$new(reporters = list(progress_rep, junit_rep));
263+ testthat::test_package("$(projectName)", filter = "_-", reporter = multi_rep, stop_on_failure = FALSE)'"'"')
264+ )
265+ )
266+ )
267+ base::saveRDS(dsbase.res, "test_results_dsbase.rds")'
264268
265269 # display the test console output
266- cat test_console_output.txt
267- mv coveragelist.csv $(Pipeline.Workspace)/logs
268- mv test_results.xml $(Pipeline.Workspace)/logs
269- mv test_console_output.txt $(Pipeline.Workspace)/logs
270+ cat test_console_output_dsbase.txt
270271
271- grep --quiet "Failed: 0" $(Pipeline.Workspace)/logs/test_console_output .txt
272+ grep --quiet "Failed: 0" test_console_output_dsbase .txt
272273
273274 workingDirectory: $(Pipeline.Workspace)/dsBaseClient
274275 displayName: 'Code coverage and JUnit report output, with dsBase'
@@ -320,32 +321,45 @@ jobs:
320321 # junit reporter output is to test_results.xml
321322 sudo R -q -e '
322323 library(covr);
324+ dsdanger.res <- covr::package_coverage(
325+ type = c("none"),
326+ code = c(
327+ '"'"'library(testthat);
328+ output_file <- file("test_console_output_dsdanger.txt");
329+ sink(output_file);
330+ sink(output_file, type = "message");
331+ library(testthat);
332+ junit_rep <- JunitReporter$new(file = "test_results_dsdanger.xml");
333+ progress_rep <- ProgressReporter$new(max_failures = 999999);
334+ multi_rep <- MultiReporter$new(reporters = list(progress_rep, junit_rep));
335+ testthat::test_package("$(projectName)", filter = "smk_dgr-",reporter = multi_rep, stop_on_failure = FALSE)'"'"')
336+ )
337+ )
338+ base::saveRDS(dsdanger.res, "test_results_dsdanger.rds")'
339+
340+ # Merge coverage results
341+ cat test_results_dsbase.txt test_results_dsdanger.txt > $(Pipeline.Workspace)/logs/test_console_output.txt
342+ xml_grep --pretty_print indented --wrap "testsuites" --descr "" --cond "testsuite" test_results_dsbase.xml test_results_dsdanger.xml > test_results.xml
343+
344+ # Create 'coveragelist.csv'
345+ sudo R -q -e '
346+ library(covr);
347+ dsbase.res <- base::readRDS("test_results_dsbase.rds")
348+ dsdanger.res <- base::readRDS("test_results_dsdanger.rds")
323349 write.csv(
324- coverage_to_list(
325- covr::package_coverage(
326- type = c("none"),
327- code = c(
328- '"'"'library(testthat);
329- output_file <- file("test_console_output.txt");
330- sink(output_file);
331- sink(output_file, type = "message");
332- library(testthat);
333- junit_rep <- JunitReporter$new(file = "test_results.xml");
334- progress_rep <- ProgressReporter$new(max_failures = 999999);
335- multi_rep <- MultiReporter$new(reporters = list(progress_rep, junit_rep));
336- testthat::test_package("$(projectName)", filter = "_-|smk_dgr-",reporter = multi_rep, stop_on_failure = FALSE)'"'"')
337- )
338- ),
339- "coveragelist.csv"
340- )'
350+ coverage_to_list(
351+ c(dsbase.res, dsdanger.res)
352+ "coveragelist.csv"
353+ )
354+ )'
341355
342356 # display the test console output
343- cat test_console_output.txt
357+ cat test_console_output_dsdanger.txt
358+
344359 mv coveragelist.csv $(Pipeline.Workspace)/logs
345360 mv test_results.xml $(Pipeline.Workspace)/logs
346- mv test_console_output.txt $(Pipeline.Workspace)/logs
347361
348- grep --quiet "Failed: 0" $(Pipeline.Workspace)/logs/test_console_output .txt
362+ grep --quiet "Failed: 0" test_console_output_dsdanger .txt
349363
350364 workingDirectory: $(Pipeline.Workspace)/dsBaseClient
351365 displayName: 'Code coverage and JUnit report output, with dsBase and dsDanger'
0 commit comments