@@ -33,6 +33,7 @@ declare opt_testCase=""
3333declare branchCoverage=lcov_branch_coverage
3434declare -a lcovArgs=(--ignore-errors unused)
3535declare -a lcovCaptureArgs=()
36+ declare -ar lcovCaptureRcArgs=(--rc geninfo_unexecuted_blocks=1)
3637declare -ar lcovExcludeArgs=(--exclude ' */lex.yy.c' --exclude ' */parser.c' --exclude ' */lexer.l' --exclude ' */parser.y' )
3738
3839if [[ $( uname) == " Darwin" ]]; then
@@ -125,8 +126,8 @@ function cov_baseline()
125126 if [ ! -f ${BASELINE_FILE} ]; then
126127 echo " Creating coverage baseline ..."
127128 lcov --capture --initial --no-recursion --directory ${OUT_DIR} --base-directory ${SRC_DIR} \
128- " ${lcovCaptureArgs[@]} " " ${lcovExcludeArgs [@]} " " ${lcovArgs [@]} " --rc " ${branchCoverage} =1 " \
129- --output-file ${BASELINE_FILE}
129+ " ${lcovCaptureArgs[@]} " " ${lcovCaptureRcArgs [@]} " " ${lcovExcludeArgs [@]} " " ${lcovArgs[@]} " \
130+ --rc " ${branchCoverage} =1 " -- output-file ${BASELINE_FILE} || return 1
130131 echo -e " Coverage baseline created in ${BASELINE_FILE} \n"
131132 fi
132133 fi
@@ -175,23 +176,28 @@ function measure_coverage()
175176 mkdir -p " ${testResultsDir} "
176177 cp ${OUT_DIR} /* .gc* " ${testResultsDir} "
177178 lcov --capture --directory " ${testResultsDir} " --base-directory ${SRC_DIR} --test-name " ${tcBaseName} " --quiet \
178- " ${lcovCaptureArgs[@]} " " ${lcovExcludeArgs [@]} " " ${lcovArgs [@]} " --rc " ${branchCoverage} =1 " \
179- --output-file " ${testResultsDir} /coverage.info"
179+ " ${lcovCaptureArgs[@]} " " ${lcovCaptureRcArgs [@]} " " ${lcovExcludeArgs [@]} " " ${lcovArgs[@]} " \
180+ --rc " ${branchCoverage} =1 " -- output-file " ${testResultsDir} /coverage.info" || return 1
180181 echo -n " Coverage: "
181- lcov --summary " ${testResultsDir} /coverage.info" 2>&1 | grep ' lines...' | grep -oP ' \d+\.\d*%'
182+ lcov --summary " ${testResultsDir} /coverage.info" 2>&1 | grep ' lines...' | grep -oP ' \d+\.\d*%' || return 1
182183 fi
183184}
184185
185186
186187function consolidate_coverage()
187188{
188189 if [[ ${opt_coverage} == true ]]; then
190+ local status=0
191+
189192 echo -e " \nConsolidating test coverage ..."
190193 pushd ${OUT_DIR} /test-results || exit 1
191194 find . -name " *.info" | xargs printf -- ' --add-tracefile %s\n' | xargs --exit \
192195 lcov --rc " ${branchCoverage} =1" " ${lcovExcludeArgs[@]} " " ${lcovArgs[@]} " \
193- --output-file ../${COVERAGE_FILE} --add-tracefile ../${BASELINE_FILE}
196+ --output-file ../${COVERAGE_FILE} --add-tracefile ../${BASELINE_FILE} || status= $?
194197 popd || exit 1
198+ if [ ${status} -ne 0 ]; then
199+ return ${status}
200+ fi
195201 echo " "
196202 fi
197203}
@@ -202,7 +208,7 @@ function report_coverage()
202208 local testReportDir=${OUT_DIR} /report
203209 mkdir -p ${testReportDir}
204210 genhtml --title " Boxes / All Tests" --branch-coverage --legend \
205- --output-directory ${testReportDir} ${COVERAGE_FILE}
211+ --output-directory ${testReportDir} ${COVERAGE_FILE} || return 1
206212 echo -e " \nTest coverage report available at ${testReportDir} /index.html"
207213}
208214
@@ -317,7 +323,7 @@ function assert_outcome()
317323
318324parse_arguments " $@ "
319325check_prereqs
320- cov_baseline
326+ cov_baseline || exit $?
321327
322328declare tcBaseName=${opt_testCase% .txt}
323329
@@ -329,11 +335,14 @@ if [ ${opt_suite} == true ]; then
329335
330336 if [ ${opt_coverage_per_test} == false ]; then
331337 tcBaseName=black_box_all
332- measure_coverage
338+ if ! measure_coverage; then
339+ overallResult=1
340+ fi
333341 fi
334342 if [ ${opt_coverage} == true ]; then
335- consolidate_coverage
336- report_coverage
343+ if ! consolidate_coverage || ! report_coverage; then
344+ overallResult=1
345+ fi
337346 fi
338347 exit ${overallResult}
339348fi
@@ -363,7 +372,7 @@ declare -i actualReturnCode=100
363372run_boxes
364373
365374if [ ${opt_coverage_per_test} == true ]; then
366- measure_coverage
375+ measure_coverage || exit $?
367376fi
368377assert_outcome
369378
0 commit comments