Skip to content

Commit fa05ee0

Browse files
committed
Merge bitcoin/bitcoin#30772: build: Fix / improve coverage scripts
d9fcbfc build: Add `JOBS` variable support to `CoverageFuzz.cmake` script (Hennadii Stepanov) e7cf4a6 build: Add missed `-g` for "Coverage" build configuration (Hennadii Stepanov) fe2003a build: Add `COMMAND_ERROR_IS_FATAL` to every process in coverage scrips (Hennadii Stepanov) Pull request description: The first commit ensures early error catching. The second commit adds the `-g` flag that was missed during the migration from Autotools. This PR is intended to be tested with GCC compiler (as clang support is still under [scrutiny](hebasto/bitcoin#341)). Depending on the `lcov` version, additional flags `-DCMAKE_C_FLAGS="-fprofile-update=atomic" -DCMAKE_CXX_FLAGS="-fprofile-update=atomic"` may be required. ACKs for top commit: maflcko: review ACK d9fcbfc tdb3: cr re ACK d9fcbfc Tree-SHA512: 0998411dc1ccd60d7bd6b36f4e2881f699202c65dcc8c177b46380d0f255d291d9537f1dc6fb35478b632f3515d3484d8e7d2877126c57e3f02b21f90160f1eb
2 parents 79772cd + d9fcbfc commit fa05ee0

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

cmake/module/ProcessConfigurations.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ else()
163163
unset(cxx_flags_debug_overridden)
164164
endif()
165165

166-
set(CMAKE_CXX_FLAGS_COVERAGE "-Og --coverage")
167-
set(CMAKE_OBJCXX_FLAGS_COVERAGE "-Og --coverage")
166+
set(CMAKE_CXX_FLAGS_COVERAGE "-g -Og --coverage")
167+
set(CMAKE_OBJCXX_FLAGS_COVERAGE "-g -Og --coverage")
168168
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage")
169169
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "--coverage")
170170
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)

cmake/script/Coverage.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,32 @@ execute_process(
2121
execute_process(
2222
COMMAND ${LCOV_COMMAND} --capture --directory src --test-name test_bitcoin --output-file test_bitcoin.info
2323
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
24+
COMMAND_ERROR_IS_FATAL ANY
2425
)
2526
execute_process(
2627
COMMAND ${LCOV_COMMAND} --zerocounters --directory src
2728
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
29+
COMMAND_ERROR_IS_FATAL ANY
2830
)
2931
execute_process(
3032
COMMAND ${LCOV_FILTER_COMMAND} test_bitcoin.info test_bitcoin_filtered.info
3133
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
34+
COMMAND_ERROR_IS_FATAL ANY
3235
)
3336
execute_process(
3437
COMMAND ${LCOV_COMMAND} --add-tracefile test_bitcoin_filtered.info --output-file test_bitcoin_filtered.info
3538
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
39+
COMMAND_ERROR_IS_FATAL ANY
3640
)
3741
execute_process(
3842
COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --add-tracefile test_bitcoin_filtered.info --output-file test_bitcoin_coverage.info
3943
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
44+
COMMAND_ERROR_IS_FATAL ANY
4045
)
4146
execute_process(
4247
COMMAND ${GENHTML_COMMAND} test_bitcoin_coverage.info --output-directory test_bitcoin.coverage
4348
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
49+
COMMAND_ERROR_IS_FATAL ANY
4450
)
4551

4652
execute_process(
@@ -51,27 +57,33 @@ execute_process(
5157
execute_process(
5258
COMMAND ${LCOV_COMMAND} --capture --directory src --test-name functional-tests --output-file functional_test.info
5359
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
60+
COMMAND_ERROR_IS_FATAL ANY
5461
)
5562
execute_process(
5663
COMMAND ${LCOV_COMMAND} --zerocounters --directory src
5764
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
65+
COMMAND_ERROR_IS_FATAL ANY
5866
)
5967
execute_process(
6068
COMMAND ${LCOV_FILTER_COMMAND} functional_test.info functional_test_filtered.info
6169
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
70+
COMMAND_ERROR_IS_FATAL ANY
6271
)
6372
execute_process(
6473
COMMAND ${LCOV_COMMAND} --add-tracefile functional_test_filtered.info --output-file functional_test_filtered.info
6574
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
75+
COMMAND_ERROR_IS_FATAL ANY
6676
)
6777
execute_process(
6878
COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --add-tracefile test_bitcoin_filtered.info --add-tracefile functional_test_filtered.info --output-file total_coverage.info
6979
COMMAND ${GREP_EXECUTABLE} "%"
7080
COMMAND ${AWK_EXECUTABLE} "{ print substr($3,2,50) \"/\" $5 }"
7181
OUTPUT_FILE coverage_percent.txt
7282
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
83+
COMMAND_ERROR_IS_FATAL ANY
7384
)
7485
execute_process(
7586
COMMAND ${GENHTML_COMMAND} total_coverage.info --output-directory total.coverage
7687
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
88+
COMMAND_ERROR_IS_FATAL ANY
7789
)

cmake/script/CoverageFuzz.cmake

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,46 @@ if(NOT DEFINED FUZZ_CORPORA_DIR)
88
set(FUZZ_CORPORA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/qa-assets/fuzz_corpora)
99
endif()
1010

11+
set(fuzz_test_runner test/fuzz/test_runner.py ${FUZZ_CORPORA_DIR})
12+
if(DEFINED JOBS)
13+
list(APPEND fuzz_test_runner -j ${JOBS})
14+
endif()
15+
1116
execute_process(
12-
COMMAND test/fuzz/test_runner.py ${FUZZ_CORPORA_DIR} --loglevel DEBUG
17+
COMMAND ${fuzz_test_runner} --loglevel DEBUG
1318
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
1419
COMMAND_ERROR_IS_FATAL ANY
1520
)
1621
execute_process(
1722
COMMAND ${LCOV_COMMAND} --capture --directory src --test-name fuzz-tests --output-file fuzz.info
1823
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
24+
COMMAND_ERROR_IS_FATAL ANY
1925
)
2026
execute_process(
2127
COMMAND ${LCOV_COMMAND} --zerocounters --directory src
2228
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
29+
COMMAND_ERROR_IS_FATAL ANY
2330
)
2431
execute_process(
2532
COMMAND ${LCOV_FILTER_COMMAND} fuzz.info fuzz_filtered.info
2633
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
34+
COMMAND_ERROR_IS_FATAL ANY
2735
)
2836
execute_process(
2937
COMMAND ${LCOV_COMMAND} --add-tracefile fuzz_filtered.info --output-file fuzz_filtered.info
3038
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
39+
COMMAND_ERROR_IS_FATAL ANY
3140
)
3241
execute_process(
3342
COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --add-tracefile fuzz_filtered.info --output-file fuzz_coverage.info
3443
COMMAND ${GREP_EXECUTABLE} "%"
3544
COMMAND ${AWK_EXECUTABLE} "{ print substr($3,2,50) \"/\" $5 }"
3645
OUTPUT_FILE coverage_percent.txt
3746
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
47+
COMMAND_ERROR_IS_FATAL ANY
3848
)
3949
execute_process(
4050
COMMAND ${GENHTML_COMMAND} fuzz_coverage.info --output-directory fuzz.coverage
4151
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
52+
COMMAND_ERROR_IS_FATAL ANY
4253
)

cmake/script/CoverageInclude.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,15 @@ list(APPEND LCOV_FILTER_COMMAND -p "depends")
4545
execute_process(
4646
COMMAND ${LCOV_COMMAND} --capture --initial --directory src --output-file baseline.info
4747
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
48+
COMMAND_ERROR_IS_FATAL ANY
4849
)
4950
execute_process(
5051
COMMAND ${LCOV_FILTER_COMMAND} baseline.info baseline_filtered.info
5152
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
53+
COMMAND_ERROR_IS_FATAL ANY
5254
)
5355
execute_process(
5456
COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --output-file baseline_filtered.info
5557
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
58+
COMMAND_ERROR_IS_FATAL ANY
5659
)

0 commit comments

Comments
 (0)