Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ Increment the:

## [Unreleased]

* [TEST] Replace `gtest_add_tests()` with `gtest_discover_tests()` to prevent
false-positive test passes for tests compiled out by preprocessor conditionals.
[#4341](https://github.com/open-telemetry/opentelemetry-cpp/issues/4341)

## [1.30.0] 2026-10-22

This release contains:
Expand Down
5 changes: 1 addition & 4 deletions api/test/baggage/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ foreach(testname baggage_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX baggage.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX baggage.)
endforeach()

if(OTELCPP_WITH_BENCHMARK)
Expand Down
5 changes: 1 addition & 4 deletions api/test/baggage/propagation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,5 @@ foreach(testname baggage_propagator_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX baggage.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX baggage.)
endforeach()
5 changes: 1 addition & 4 deletions api/test/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ foreach(testname ascii_test kv_properties_test string_util_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX common.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX common.)
endforeach()

if(OTELCPP_WITH_BENCHMARK)
Expand Down
5 changes: 1 addition & 4 deletions api/test/context/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,5 @@ foreach(testname context_test runtime_context_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX context.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX context.)
endforeach()
5 changes: 1 addition & 4 deletions api/test/context/propagation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,5 @@ foreach(testname composite_propagator_test environment_carrier_test
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX trace.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX trace.)
endforeach()
10 changes: 2 additions & 8 deletions api/test/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,9 @@ include(GoogleTest)
add_executable(timestamp_test timestamp_test.cc)
target_link_libraries(timestamp_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET timestamp_test
TEST_PREFIX trace.
TEST_LIST timestamp_test)
gtest_discover_tests(timestamp_test TEST_PREFIX trace.)

add_executable(version_test version_test.cc)
target_link_libraries(version_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET version_test
TEST_PREFIX version.
TEST_LIST version_test)
gtest_discover_tests(version_test TEST_PREFIX version.)
5 changes: 1 addition & 4 deletions api/test/logs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ foreach(testname provider_test logger_test)
add_executable(logs_api_${testname} "${testname}.cc")
target_link_libraries(logs_api_${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET logs_api_${testname}
TEST_PREFIX logs.
TEST_LIST logs_api_${testname})
gtest_discover_tests(logs_api_${testname} TEST_PREFIX logs.)
endforeach()

if(OTELCPP_WITH_BENCHMARK)
Expand Down
5 changes: 1 addition & 4 deletions api/test/metrics/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,5 @@ foreach(testname meter_provider_test noop_sync_instrument_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX metrics_new.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX metrics_new.)
endforeach()
5 changes: 1 addition & 4 deletions api/test/nostd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,5 @@ foreach(
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX nostd.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX nostd.)
endforeach()
5 changes: 1 addition & 4 deletions api/test/singleton/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,4 @@ target_link_libraries(
${CMAKE_DL_LIBS}
opentelemetry_api)

gtest_add_tests(
TARGET singleton_test
TEST_PREFIX singleton.
TEST_LIST singleton_test)
gtest_discover_tests(singleton_test TEST_PREFIX singleton.)
5 changes: 1 addition & 4 deletions api/test/trace/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@ foreach(
add_executable(api_${testname} "${testname}.cc")
target_link_libraries(api_${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET api_${testname}
TEST_PREFIX trace.
TEST_LIST api_${testname})
gtest_discover_tests(api_${testname} TEST_PREFIX trace.)
endforeach()

if(OTELCPP_WITH_BENCHMARK)
Expand Down
5 changes: 1 addition & 4 deletions api/test/trace/propagation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ foreach(testname http_text_format_test b3_propagation_test
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX trace.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX trace.)
endforeach()

if(OTELCPP_WITH_BENCHMARK)
Expand Down
5 changes: 1 addition & 4 deletions api/test/trace/propagation/detail/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,5 @@ foreach(testname hex_test string_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
gtest_add_tests(
TARGET ${testname}
TEST_PREFIX trace.
TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX trace.)
endforeach()
4 changes: 3 additions & 1 deletion docs/google-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ foreach(
target_link_libraries(
${testname} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
opentelemetry_common opentelemetry_trace)
gtest_add_tests(TARGET ${testname} TEST_PREFIX trace. TEST_LIST ${testname})
gtest_discover_tests(${testname} TEST_PREFIX trace.)
endforeach()

add_executable(sampler_benchmark sampler_benchmark.cc)
Expand All @@ -238,6 +238,8 @@ target_link_libraries(sampler_benchmark benchmark::benchmark

```

**Note:** The project uses `gtest_discover_tests()` instead of `gtest_add_tests()` to ensure that tests compiled out by preprocessor conditionals are not registered in CTest. This prevents false-positive test passes for tests that were never actually run.

This is how a `CMakeLists.txt` file will be written with the purpose of unit
testing. After writing a unit test, navigate to the `CMakeLists.txt` file for
that subdirectory and add the test name to the list of test names in
Expand Down
5 changes: 1 addition & 4 deletions exporters/elasticsearch/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,5 @@ if(OTELCPP_BUILD_TESTING)
es_log_record_exporter_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_elasticsearch_logs)

gtest_add_tests(
TARGET es_log_record_exporter_test
TEST_PREFIX exporter.
TEST_LIST es_log_record_exporter_test)
gtest_discover_tests(es_log_record_exporter_test TEST_PREFIX exporter.)
endif() # OTELCPP_BUILD_TESTING
29 changes: 5 additions & 24 deletions exporters/etw/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,29 +68,10 @@ if(OTELCPP_BUILD_TESTING)
opentelemetry_exporter_etw ${CMAKE_THREAD_LIBS_INIT})
endif()

gtest_add_tests(
TARGET etw_provider_test
TEST_PREFIX exporter.
TEST_LIST etw_provider_test)
gtest_add_tests(
TARGET etw_tracer_test
TEST_PREFIX exporter.
TEST_LIST etw_tracer_test)
gtest_add_tests(
TARGET etw_logger_test
TEST_PREFIX exporter.
TEST_LIST etw_logger_test)
gtest_add_tests(
TARGET etw_properties_test
TEST_PREFIX exporter.
TEST_LIST etw_properties_test)
gtest_add_tests(
TARGET etw_tracer_test_enable_env_properties
TEST_PREFIX exporter.with_env_properties.
TEST_LIST etw_tracer_test_enable_env_properties)
gtest_add_tests(
TARGET etw_logger_test_enable_env_properties
TEST_PREFIX exporter.with_env_properties.
TEST_LIST etw_logger_test_enable_env_properties)
gtest_discover_tests(etw_provider_test TEST_PREFIX exporter.)
gtest_discover_tests(etw_tracer_test TEST_PREFIX exporter.)
gtest_discover_tests(etw_logger_test TEST_PREFIX exporter.)
gtest_discover_tests(etw_tracer_test_enable_env_properties TEST_PREFIX exporter.with_env_properties.)
gtest_discover_tests(etw_logger_test_enable_env_properties TEST_PREFIX exporter.with_env_properties.)

endif() # OTELCPP_BUILD_TESTING
20 changes: 4 additions & 16 deletions exporters/memory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,8 @@ if(OTELCPP_BUILD_TESTING)
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory_metric
opentelemetry_resources)

gtest_add_tests(
TARGET in_memory_span_data_test
TEST_PREFIX exporter.
TEST_LIST in_memory_span_data_test)
gtest_add_tests(
TARGET in_memory_span_exporter_test
TEST_PREFIX exporter.
TEST_LIST in_memory_span_exporter_test)
gtest_add_tests(
TARGET in_memory_metric_data_test
TEST_PREFIX exporter.
TEST_LIST in_memory_metric_data_test)
gtest_add_tests(
TARGET in_memory_metric_exporter_test
TEST_PREFIX exporter.
TEST_LIST in_memory_metric_exporter_test)
gtest_discover_tests(in_memory_span_data_test TEST_PREFIX exporter.)
gtest_discover_tests(in_memory_span_exporter_test TEST_PREFIX exporter.)
gtest_discover_tests(in_memory_metric_data_test TEST_PREFIX exporter.)
gtest_discover_tests(in_memory_metric_exporter_test TEST_PREFIX exporter.)
endif()
15 changes: 3 additions & 12 deletions exporters/ostream/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ if(OTELCPP_BUILD_TESTING)
add_executable(ostream_span_test test/ostream_span_test.cc)
target_link_libraries(ostream_span_test ${GTEST_BOTH_LIBRARIES}
opentelemetry_exporter_ostream_span)
gtest_add_tests(
TARGET ostream_span_test
TEST_PREFIX exporter.
TEST_LIST ostream_span_test)
gtest_discover_tests(ostream_span_test TEST_PREFIX exporter.)
endif() # OTELCPP_BUILD_TESTING

#
Expand Down Expand Up @@ -84,10 +81,7 @@ if(OTELCPP_BUILD_TESTING)
target_link_libraries(
ostream_metric_test ${GTEST_BOTH_LIBRARIES}
opentelemetry_exporter_ostream_metrics opentelemetry_resources)
gtest_add_tests(
TARGET ostream_metric_test
TEST_PREFIX exporter.
TEST_LIST ostream_metric_test)
gtest_discover_tests(ostream_metric_test TEST_PREFIX exporter.)
endif()

#
Expand Down Expand Up @@ -134,10 +128,7 @@ if(OTELCPP_BUILD_TESTING)
add_executable(ostream_log_test test/ostream_log_test.cc)
target_link_libraries(ostream_log_test ${GTEST_BOTH_LIBRARIES}
opentelemetry_exporter_ostream_logs)
gtest_add_tests(
TARGET ostream_log_test
TEST_PREFIX exporter.
TEST_LIST ostream_log_test)
gtest_discover_tests(ostream_log_test TEST_PREFIX exporter.)
endif()

#
Expand Down
Loading
Loading