ZeroTierOne/ext/opentelemetry-cpp-1.21.0/install/test/cmake/CMakeLists.txt
2025-07-11 10:37:21 -07:00

141 lines
4.9 KiB
CMake

# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.14)
project(opentelemetry-cpp-component-install-tests LANGUAGES CXX)
if(NOT INSTALL_TEST_CMAKE_OPTIONS)
set(INSTALL_TEST_CMAKE_OPTIONS
"-DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Debug")
endif()
separate_arguments(INSTALL_TEST_CMAKE_OPTIONS)
message(
STATUS "INSTALL_TEST_CMAKE_OPTIONS is set to ${INSTALL_TEST_CMAKE_OPTIONS}")
find_package(opentelemetry-cpp CONFIG REQUIRED)
message(
STATUS
"OPENTELEMETRY_CPP_COMPONENTS_INSTALLED = ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED}"
)
# Check that INSTALL_TEST_COMPONENTS is set and contains installed components
if(NOT INSTALL_TEST_COMPONENTS)
message(
STATUS
"INSTALL_TEST_COMPONENTS is not set. Setting to OPENTELEMETRY_CPP_COMPONENTS_INSTALLED"
)
set(INSTALL_TEST_COMPONENTS ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED})
else()
set(COMPONENTS_ARE_VALID TRUE)
foreach(component ${INSTALL_TEST_COMPONENTS})
if(NOT component IN_LIST OPENTELEMETRY_CPP_COMPONENTS_INSTALLED)
message(
ERROR
" Component ${component} is not an installed opentelemetry-cpp component"
)
set(COMPONENTS_ARE_VALID FALSE)
endif()
endforeach()
if(NOT COMPONENTS_ARE_VALID)
message(FATAL_ERROR "INSTALL_TEST_COMPONENTS contains invalid components")
endif()
endif()
message(STATUS "INSTALL_TEST_COMPONENTS = ${INSTALL_TEST_COMPONENTS}")
set(INSTALL_TEST_SRC_DIR "${CMAKE_SOURCE_DIR}/../src")
enable_testing()
# -----------------------------------------------------------
# CMake Usage tests for find_package(opentelemetry-cpp ...)
#
# 1. Test find_package with no components specified
# 2. Test find_package with components specified but not sorted in dependency
# order
# 3. Test find_package with components specified but missing dependent components
# 4. Test find_package with components specified but including
# unsupported/unknown components
add_test(
NAME cmake-usage-no-components-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S
${CMAKE_SOURCE_DIR}/usage_tests/no_components -B
build-cmake-usage-no-components-test
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
add_test(
NAME cmake-usage-unsorted-components-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S
${CMAKE_SOURCE_DIR}/usage_tests/unsorted_components -B
build-cmake-usage-unsorted-components-test
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
add_test(
NAME cmake-usage-missing-components-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S
${CMAKE_SOURCE_DIR}/usage_tests/missing_components -B
build-cmake-usage-missing-components-test
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
add_test(
NAME cmake-usage-unsupported-components-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S
${CMAKE_SOURCE_DIR}/usage_tests/unsupported_components -B
build-cmake-usage-unsupported-components-test
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
# -----------------------------------------------------------
# Test the full package install using legacy cmake build instructions
# find_package(opentelemetry-cpp CONFIG REQUIRED)
# Test cmake configuration
add_test(
NAME full-package-cmake-config-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S ${CMAKE_SOURCE_DIR}/package_test -B
build-full-package-test "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}"
${INSTALL_TEST_CMAKE_OPTIONS}
"-DINSTALL_TEST_COMPONENTS=${INSTALL_TEST_COMPONENTS}"
"-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR}")
# Build the full package test executable
add_test(NAME full-package-build-test
COMMAND ${CMAKE_COMMAND} --build
${CMAKE_BINARY_DIR}/build-full-package-test --parallel)
# Run the full package test executable
add_test(NAME full-package-run-test
COMMAND ${CMAKE_BINARY_DIR}/build-full-package-test/full_test)
# -----------------------------------------------------------
# -----------------------------------------------------------
# Loop over all the components to test
foreach(component ${INSTALL_TEST_COMPONENTS})
# Test cmake configuration
add_test(
NAME component-${component}-cmake-config-test
COMMAND
${CMAKE_COMMAND} --log-level=DEBUG -S
${CMAKE_SOURCE_DIR}/component_tests/${component} -B
build-${component}-test "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}"
${INSTALL_TEST_CMAKE_OPTIONS}
"-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR}")
# Build the component test executable
add_test(NAME component-${component}-build-test
COMMAND ${CMAKE_COMMAND} --build
${CMAKE_BINARY_DIR}/build-${component}-test --parallel)
# Run the component test executable
add_test(
NAME component-${component}-run-test
COMMAND ${CMAKE_BINARY_DIR}/build-${component}-test/${component}_test)
endforeach()