Skip to content

Commit c034027

Browse files
Add CTest labels for selective C++ test execution (#1102)
## Summary - Add two CTest labels — `routing` and `numopt` — to all C++ test executables - Extend `ConfigureTest()` CMake macro with optional `LABELS` keyword (backward compatible) | Label | Scope | |-------|-------| | `routing` | VRP, TSP, distance engine (9 tests) | | `numopt` | LP, MIP, QP, dual simplex, MPS parser, gRPC, CLI (22 tests) | ### Usage ```bash ctest -L routing # only routing tests ctest -L numopt # only numerical optimization tests ctest # all (unchanged default) ``` ## Test plan - [ ] `cmake --build` succeeds - [ ] `ctest -L routing` runs only routing tests - [ ] `ctest -L numopt` runs only numopt tests - [ ] Full CI passes unchanged Authors: - Ramakrishnap (https://github.com/rgsl888prabhu) Approvers: - Miles Lubin (https://github.com/mlubin) - James Lamb (https://github.com/jameslamb) URL: #1102
1 parent 3f0d27f commit c034027

10 files changed

Lines changed: 55 additions & 33 deletions

File tree

cpp/libmps_parser/tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ endfunction()
5353
ConfigureTest(MPS_PARSER_TEST
5454
mps_parser_test.cpp
5555
)
56+
set_tests_properties(MPS_PARSER_TEST PROPERTIES LABELS "numopt")
5657
###################################################################################################

cpp/tests/CMakeLists.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# cmake-format: off
1+
# cmake-format: off
22
# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
@@ -34,8 +34,12 @@ endif()
3434
set(CUOPT_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR})
3535

3636
# ################################################################ ------------------------------------------------------------------
37+
# ConfigureTest(NAME source1.cu source2.cu [LABELS label1 label2 ...])
38+
#
39+
# LABELS sets CTest labels for selective local test execution via `ctest -L <label>`.
3740
function(ConfigureTest CMAKE_TEST_NAME)
38-
add_executable(${CMAKE_TEST_NAME} ${ARGN})
41+
cmake_parse_arguments(CT "" "" "LABELS" ${ARGN})
42+
add_executable(${CMAKE_TEST_NAME} ${CT_UNPARSED_ARGUMENTS})
3943
set_target_properties(${CMAKE_TEST_NAME}
4044
PROPERTIES
4145
CXX_STANDARD 20
@@ -70,6 +74,10 @@ function(ConfigureTest CMAKE_TEST_NAME)
7074

7175
add_test(NAME ${CMAKE_TEST_NAME} COMMAND ${CMAKE_TEST_NAME})
7276

77+
if(CT_LABELS)
78+
set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "${CT_LABELS}")
79+
endif()
80+
7381
install(
7482
TARGETS ${CMAKE_TEST_NAME}
7583
COMPONENT testing
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# cmake-format: off
2-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
55

66
ConfigureTest(WAYPOINT_MATRIXTEST
77
${CMAKE_CURRENT_SOURCE_DIR}/waypoint_matrix_test.cpp
8-
)
8+
LABELS routing)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# cmake-format: off
2-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
55

66
ConfigureTest(DUAL_SIMPLEX_TEST
77
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/solve.cpp
88
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/solve_barrier.cu
9-
)
9+
LABELS numopt)

cpp/tests/linear_programming/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ ConfigureTest(LP_UNIT_TEST
88
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/solver_settings_test.cu
99
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/presolve_test.cu
1010
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/solution_interface_test.cu
11-
)# ##################################################################################################
11+
LABELS numopt)
12+
# ##################################################################################################
1213
# - Linear programming PDLP tests ----------------------------------------------------------------------
1314
ConfigureTest(PDLP_TEST
1415
${CMAKE_CURRENT_SOURCE_DIR}/pdlp_test.cu
15-
)
16+
LABELS numopt)
1617

1718
# ##################################################################################################
1819
# - C API Tests----------------------------------------------------------------------
@@ -64,6 +65,7 @@ if (NOT SKIP_C_PYTHON_ADAPTERS)
6465
endif()
6566

6667
add_test(NAME C_API_TEST COMMAND C_API_TEST)
68+
set_tests_properties(C_API_TEST PROPERTIES LABELS "numopt")
6769

6870
install(
6971
TARGETS C_API_TEST

cpp/tests/linear_programming/grpc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ if(NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "")
3535
endif()
3636

3737
add_test(NAME GRPC_CLIENT_TEST COMMAND GRPC_CLIENT_TEST)
38+
set_tests_properties(GRPC_CLIENT_TEST PROPERTIES LABELS "numopt")
3839

3940
install(
4041
TARGETS GRPC_CLIENT_TEST
@@ -75,6 +76,7 @@ if(NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "")
7576
endif()
7677

7778
add_test(NAME GRPC_PIPE_SERIALIZATION_TEST COMMAND GRPC_PIPE_SERIALIZATION_TEST)
79+
set_tests_properties(GRPC_PIPE_SERIALIZATION_TEST PROPERTIES LABELS "numopt")
7880

7981
install(
8082
TARGETS GRPC_PIPE_SERIALIZATION_TEST
@@ -122,6 +124,7 @@ add_test(
122124
"CUOPT_GRPC_SERVER_PATH=$<TARGET_FILE:cuopt_grpc_server>"
123125
$<TARGET_FILE:GRPC_INTEGRATION_TEST>
124126
)
127+
set_tests_properties(GRPC_INTEGRATION_TEST PROPERTIES LABELS "numopt")
125128

126129
install(
127130
TARGETS GRPC_INTEGRATION_TEST

cpp/tests/mip/CMakeLists.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,48 +7,48 @@
77
# - MIP tests ----------------------------------------------------------------------
88
ConfigureTest(MIP_TEST
99
${CMAKE_CURRENT_SOURCE_DIR}/miplib_test.cu
10-
)
10+
LABELS numopt)
1111
ConfigureTest(PROBLEM_TEST
1212
${CMAKE_CURRENT_SOURCE_DIR}/problem_test.cu
13-
)
13+
LABELS numopt)
1414
ConfigureTest(ELIM_VAR_REMAP_TEST
1515
${CMAKE_CURRENT_SOURCE_DIR}/elim_var_remap_test.cu
16-
)
16+
LABELS numopt)
1717
ConfigureTest(STANDARDIZATION_TEST
1818
${CMAKE_CURRENT_SOURCE_DIR}/bounds_standardization_test.cu
19-
)
19+
LABELS numopt)
2020
ConfigureTest(MULTI_PROBE_TEST
2121
${CMAKE_CURRENT_SOURCE_DIR}/multi_probe_test.cu
22-
)
22+
LABELS numopt)
2323
ConfigureTest(INCUMBENT_CALLBACK_TEST
2424
${CMAKE_CURRENT_SOURCE_DIR}/incumbent_callback_test.cu
25-
)
25+
LABELS numopt)
2626
ConfigureTest(DOC_EXAMPLE_TEST
2727
${CMAKE_CURRENT_SOURCE_DIR}/doc_example_test.cu
28-
)
28+
LABELS numopt)
2929
ConfigureTest(CUTS_TEST
3030
${CMAKE_CURRENT_SOURCE_DIR}/cuts_test.cu
31-
)
31+
LABELS numopt)
3232
ConfigureTest(UNIT_TEST
3333
${CMAKE_CURRENT_SOURCE_DIR}/unit_test.cu
3434
${CMAKE_CURRENT_SOURCE_DIR}/integer_with_real_bounds.cu
35-
)
35+
LABELS numopt)
3636
ConfigureTest(EMPTY_FIXED_PROBLEMS_TEST
3737
${CMAKE_CURRENT_SOURCE_DIR}/empty_fixed_problems_test.cu
38-
)
38+
LABELS numopt)
3939
ConfigureTest(PRESOLVE_TEST
4040
${CMAKE_CURRENT_SOURCE_DIR}/presolve_test.cu
41-
)
41+
LABELS numopt)
4242
# Disable for now
4343
# ConfigureTest(FEASIBILITY_JUMP_TEST
4444
# ${CMAKE_CURRENT_SOURCE_DIR}/feasibility_jump_tests.cu
4545
# )
4646
ConfigureTest(MIP_TERMINATION_STATUS_TEST
4747
${CMAKE_CURRENT_SOURCE_DIR}/termination_test.cu
48-
)
48+
LABELS numopt)
4949
ConfigureTest(DETERMINISM_TEST
5050
${CMAKE_CURRENT_SOURCE_DIR}/determinism_test.cu
51-
)
51+
LABELS numopt)
5252
ConfigureTest(HEURISTICS_HYPER_PARAMS_TEST
5353
${CMAKE_CURRENT_SOURCE_DIR}/heuristics_hyper_params_test.cu
54-
)
54+
LABELS numopt)

cpp/tests/qp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ ConfigureTest(QP_UNIT_TEST
77
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/no_constraints.cu
88
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/two_variable_test.cu
99
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/mps_writer_test.cpp
10-
)
10+
LABELS numopt)

cpp/tests/routing/CMakeLists.txt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,27 @@
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
55

6-
ConfigureTest(ROUTING_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_routing_test.cu)
7-
ConfigureTest(ROUTING_GES_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_ges_test.cu)
6+
ConfigureTest(ROUTING_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_routing_test.cu
7+
LABELS routing)
8+
ConfigureTest(ROUTING_GES_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_ges_test.cu
9+
LABELS routing)
810

9-
ConfigureTest(VEHICLE_ORDER_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_vehicle_order_match.cu)
10-
ConfigureTest(VEHICLE_TYPES_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_vehicle_types_test.cu)
11-
ConfigureTest(OBJECTIVE_FUNCTION_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_objective_function_test.cu)
11+
ConfigureTest(VEHICLE_ORDER_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_vehicle_order_match.cu
12+
LABELS routing)
13+
ConfigureTest(VEHICLE_TYPES_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_vehicle_types_test.cu
14+
LABELS routing)
15+
ConfigureTest(OBJECTIVE_FUNCTION_TEST ${CMAKE_CURRENT_SOURCE_DIR}/level0/l0_objective_function_test.cu
16+
LABELS routing)
1217

1318
# ##################################################################################################
1419
# - L1 advanced retail tests --------------------------------------------------------------------------
15-
ConfigureTest(RETAIL_L1TEST ${CMAKE_CURRENT_SOURCE_DIR}/level1/l1_retail_test.cu)
20+
ConfigureTest(RETAIL_L1TEST ${CMAKE_CURRENT_SOURCE_DIR}/level1/l1_retail_test.cu
21+
LABELS routing)
1622

1723
# ##################################################################################################
1824
# - L1 tests for quick regression check --------------------------------------------------------------------------
19-
ConfigureTest(ROUTING_L1TEST ${CMAKE_CURRENT_SOURCE_DIR}/level1/l1_routing_test.cu)
25+
ConfigureTest(ROUTING_L1TEST ${CMAKE_CURRENT_SOURCE_DIR}/level1/l1_routing_test.cu
26+
LABELS routing)
2027

2128
# # - ${CMAKE_CURRENT_SOURCE_DIR} unit tests ----------------------------------------------------------------------------
2229
ConfigureTest(ROUTING_UNIT_TEST
@@ -34,4 +41,4 @@ ConfigureTest(ROUTING_UNIT_TEST
3441
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/top_k.cu
3542
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/batch_tsp.cu
3643
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/set_shmem_of_kernel.cu
37-
)
44+
LABELS routing)

cpp/tests/utilities/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# cmake-format: off
2-
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
55

66
# Add CLI end-to-end test
7-
ConfigureTest(CLI_TEST test_cli.cpp)
7+
ConfigureTest(CLI_TEST test_cli.cpp
8+
LABELS numopt)

0 commit comments

Comments
 (0)