diff --git a/CMakeLists.txt b/CMakeLists.txt index b584332..345d858 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) message(FATAL_ERROR "FESA requires a 64-bit target.") endif() +include(CTest) include(cmake/FesaDependencies.cmake) add_library(fesa_core STATIC @@ -44,8 +45,6 @@ target_link_libraries(fesa PRIVATE fesa_core) target_compile_features(fesa PRIVATE cxx_std_20) target_compile_options(fesa PRIVATE /W4 /permissive- /EHsc) -include(CTest) - if(BUILD_TESTING) add_subdirectory(tests) endif() diff --git a/cmake/FesaDependencies.cmake b/cmake/FesaDependencies.cmake index da402f9..a02338c 100644 --- a/cmake/FesaDependencies.cmake +++ b/cmake/FesaDependencies.cmake @@ -12,7 +12,10 @@ set(MKL_THREADING tbb_thread) find_package(MKL CONFIG REQUIRED) find_package(TBB CONFIG REQUIRED COMPONENTS tbb) find_package(HDF5 CONFIG REQUIRED COMPONENTS C shared) -find_package(GTest CONFIG REQUIRED) + +if(BUILD_TESTING) + find_package(GTest CONFIG REQUIRED) +endif() function(fesa_require_imported_target target_name) if(NOT TARGET "${target_name}") @@ -36,9 +39,12 @@ endfunction() fesa_require_imported_target(MKL::MKL) fesa_require_imported_target(TBB::tbb) fesa_require_imported_target(hdf5::hdf5-shared) -fesa_require_imported_target(GTest::gtest_main) -fesa_require_imported_target(GTest::gtest) -fesa_require_imported_target(GTest::gmock) + +if(BUILD_TESTING) + fesa_require_imported_target(GTest::gtest_main) + fesa_require_imported_target(GTest::gtest) + fesa_require_imported_target(GTest::gmock) +endif() add_library(HDF5::HDF5 INTERFACE IMPORTED GLOBAL) set_property( diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bb4f70d..94eff40 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -37,11 +37,29 @@ set_property( ${FESA_DEPENDENCY_RUNTIME_MODIFICATIONS} ) +add_test( + NAME ProductionConfigureWithoutGTest + COMMAND + "${CMAKE_COMMAND}" + --fresh + -S "${CMAKE_SOURCE_DIR}" + -B "${CMAKE_BINARY_DIR}/testing/production-no-gtest" + -G "${CMAKE_GENERATOR}" + -A "${CMAKE_GENERATOR_PLATFORM}" + -T "${CMAKE_VS_PLATFORM_TOOLSET}" + -DBUILD_TESTING=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_GTest=TRUE + "-DMKL_DIR=${MKL_DIR}" + "-DTBB_DIR=${TBB_DIR}" + "-DHDF5_DIR=${HDF5_DIR}" +) + add_executable(fesa_core_value_tests unit/core/diagnostic_test.cpp unit/core/entity_id_test.cpp unit/core/status_test.cpp unit/core/vec3_test.cpp + unit/core/version_test.cpp ) target_compile_features(fesa_core_value_tests PRIVATE cxx_std_20) diff --git a/tests/unit/core/version_test.cpp b/tests/unit/core/version_test.cpp new file mode 100644 index 0000000..ea24b01 --- /dev/null +++ b/tests/unit/core/version_test.cpp @@ -0,0 +1,11 @@ +#include + +#include + +namespace { + +TEST(Version, ReportsPhaseOneSemanticVersion) { + EXPECT_EQ(fesa::version(), "0.1.0"); +} + +} // namespace diff --git a/tests/unit/dependencies/dependency_smoke_test.cpp b/tests/unit/dependencies/dependency_smoke_test.cpp index ade38d0..a82fd15 100644 --- a/tests/unit/dependencies/dependency_smoke_test.cpp +++ b/tests/unit/dependencies/dependency_smoke_test.cpp @@ -11,6 +11,8 @@ namespace { +static_assert(sizeof(MKL_INT) == 4, "FESA requires the oneMKL LP64 interface."); + TEST(DependencySmoke, CallsOneMklVectorOperation) { constexpr std::array x{1.0, 2.0, 3.0}; std::array y{4.0, 5.0, 6.0};