Skip to content

Commit 1e2cb05

Browse files
committed
cmake: Split test cases to improve parallelism
1 parent 225103b commit 1e2cb05

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

src/CMakeLists.txt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,46 @@ if(SECP256K1_BUILD_TESTS)
144144
list(APPEND TEST_DEFINITIONS SUPPORTS_CONCURRENCY=1)
145145
endif()
146146

147+
set(test_targets "")
148+
set(test_names "")
149+
# Start with the longest-running tests.
150+
list(APPEND test_targets ellswift)
151+
list(APPEND test_names ellswift)
152+
list(APPEND test_targets ecmult_constants)
153+
list(APPEND test_names ecmult_constants)
154+
list(APPEND test_targets "ecmult_pre_g wnaf point_times_order ecmult_near_split_bound ecmult_chain ecmult_gen_blind ecmult_const_tests ecmult_multi_tests ec_combine")
155+
list(APPEND test_names ecmult)
156+
# Continue with the remaining tests.
157+
list(APPEND test_targets integer scalar field group ec ecdh ecdsa recovery extrakeys schnorrsig musig)
158+
list(APPEND test_names integer scalar field group ec ecdh ecdsa recovery extrakeys schnorrsig musig)
159+
# Combine short, trivial tests for log brevity.
160+
list(APPEND test_targets "general hash utils")
161+
list(APPEND test_names "general,hash,utils")
162+
147163
function(add_executable_and_tests verify)
148164
if(verify)
149165
set(verify_definition VERIFY)
150166
set(exe_name tests)
167+
set(label secp256k1_verify)
151168
else()
152169
set(verify_definition "")
153170
set(exe_name noverify_tests)
171+
set(label secp256k1_noverify)
154172
endif()
155173
add_executable(${exe_name} tests.c)
156174
target_link_libraries(${exe_name} secp256k1_precomputed secp256k1_asm)
157175
target_compile_definitions(${exe_name} PRIVATE ${verify_definition} ${TEST_DEFINITIONS})
158-
add_test(NAME secp256k1_${exe_name} COMMAND ${exe_name})
176+
foreach(test_target test_name IN ZIP_LISTS test_targets test_names)
177+
string(REPLACE " " ";" test_target "${test_target}")
178+
list(TRANSFORM test_target PREPEND "--target=")
179+
add_test(NAME ${label}::${test_name}
180+
COMMAND ${exe_name} ${test_target} --log=1
181+
COMMAND_EXPAND_LISTS
182+
)
183+
set_tests_properties(${label}::${test_name} PROPERTIES
184+
SKIP_REGULAR_EXPRESSION "module disabled"
185+
)
186+
endforeach()
159187
endfunction()
160188

161189
add_executable_and_tests(NO)

0 commit comments

Comments
 (0)