From 43aaf2ac1eb5509b1ac408df0becda5da492fda1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 8 Apr 2020 07:55:46 -0400 Subject: CTestCoverageCollectGCOV: Capture gcov output in log file The output of gcov can be large and we only display it in a failure case. Put it in a log file to avoid accumulating large output in memory. Issue: #20554 --- Modules/CTestCoverageCollectGCOV.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake index ff48cc2..43540da 100644 --- a/Modules/CTestCoverageCollectGCOV.cmake +++ b/Modules/CTestCoverageCollectGCOV.cmake @@ -139,7 +139,8 @@ function(ctest_coverage_collect_gcov) endif() execute_process(COMMAND ${gcov_command} ${GCOV_GCOV_OPTIONS} ${gcda_files} - OUTPUT_VARIABLE out + OUTPUT_FILE "${coverage_dir}/gcov.log" + ERROR_FILE "${coverage_dir}/gcov.log" RESULT_VARIABLE res WORKING_DIRECTORY ${coverage_dir}) @@ -149,7 +150,7 @@ function(ctest_coverage_collect_gcov) if(NOT "${res}" EQUAL 0) if (NOT GCOV_QUIET) - message(STATUS "Error running gcov: ${res} ${out}") + message(STATUS "Error running gcov: ${res}, see\n ${coverage_dir}/gcov.log") endif() endif() # create json file with project information -- cgit v0.12 From 5b12fe463364926a02c83decf9a52ee6de41d3f8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 8 Apr 2020 13:51:36 -0400 Subject: CTestCoverageCollectGCOV: Avoid capturing gcov output in QUIET mode The `QUIET` mode suppresses any mention of our logged output, so do not bother logging it. This also provides a way for users to avoid saving possibly large output on disk. Fixes: #20554 --- Modules/CTestCoverageCollectGCOV.cmake | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake index 43540da..b498086 100644 --- a/Modules/CTestCoverageCollectGCOV.cmake +++ b/Modules/CTestCoverageCollectGCOV.cmake @@ -137,12 +137,23 @@ function(ctest_coverage_collect_gcov) if(NOT DEFINED GCOV_GCOV_OPTIONS) set(GCOV_GCOV_OPTIONS -b -x) endif() + if (GCOV_QUIET) + set(coverage_out_opts + OUTPUT_QUIET + ERROR_QUIET + ) + else() + set(coverage_out_opts + OUTPUT_FILE "${coverage_dir}/gcov.log" + ERROR_FILE "${coverage_dir}/gcov.log" + ) + endif() execute_process(COMMAND ${gcov_command} ${GCOV_GCOV_OPTIONS} ${gcda_files} - OUTPUT_FILE "${coverage_dir}/gcov.log" - ERROR_FILE "${coverage_dir}/gcov.log" RESULT_VARIABLE res - WORKING_DIRECTORY ${coverage_dir}) + WORKING_DIRECTORY ${coverage_dir} + ${coverage_out_opts} + ) if (GCOV_DELETE) file(REMOVE ${gcda_files}) -- cgit v0.12