diff --git a/.gitignore b/.gitignore index ab2740b103e..b4736a1cf0e 100644 --- a/.gitignore +++ b/.gitignore @@ -240,6 +240,7 @@ Kernel_23/test/Kernel_23/Makefile Kernel_23/test/Kernel_23/Simple_cartesian Kernel_23/test/Kernel_23/Simple_homogeneous Kernel_23/test/Kernel_23/Test_IO.out +/Kernel_23/test/Kernel_23/Test-*IO.out Kernel_23/test/Kernel_23/cgal_test_with_cmake Kernel_23/test/Kernel_23/test_kernel__ Kinetic_data_structures/demo/Kinetic_data_structures/Delaunay_triangulation_2 diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index be4b013944a..1b94cc7e752 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -741,6 +741,11 @@ message("== Write compiler_config.h (DONE) ==\n") # #-------------------------------------------------------------------------------------------------- + +# Enable testing with BUILD_TESTING +option(BUILD_TESTING "Build the testing tree." OFF) +include(CTest) + message("== Generating build files ==") set(CGAL_LIBRARIES_DIR ${CMAKE_BINARY_DIR}/lib) diff --git a/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake b/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake index 21a6685544a..8549d00dd9a 100644 --- a/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake +++ b/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake @@ -18,6 +18,22 @@ function(create_single_source_cgal_program firstfile ) add_executable(${exe_name} ${all}) + if(BUILD_TESTING) + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cin") + set(ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cin") + elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cmd") + file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cmd" ARGS LIMIT_COUNT 1) + # TODO: handle multi-lines .cmd files + # see https://github.com/CGAL/cgal/pull/1295/files/c65d3abe17bb3e677b8077996cdaf8672f9c4c6f#r71705451 + endif() + message(STATUS "add test for ${exe_name}") + add_test(NAME ${exe_name} + COMMAND ${exe_name} ${ARGS} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + set_property(TEST "${exe_name}" + APPEND PROPERTY LABELS "${PROJECT_NAME}") + endif(BUILD_TESTING) + add_to_cached_list( CGAL_EXECUTABLE_TARGETS ${exe_name} ) # Link the executable to CGAL and third-party libraries diff --git a/Kernel_23/test/Kernel_23/Cartesian.cpp b/Kernel_23/test/Kernel_23/Cartesian.cpp index cd55bb4a0e2..75e2c424746 100644 --- a/Kernel_23/test/Kernel_23/Cartesian.cpp +++ b/Kernel_23/test/Kernel_23/Cartesian.cpp @@ -26,6 +26,7 @@ #include "CGAL/Precise_numbers.h" #include "CGAL/_test_cls_kernel.h" +#define TEST_FILENAME "Test-Cartesian-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" #include "CGAL/_test_3.h" diff --git a/Kernel_23/test/Kernel_23/Filtered_cartesian.cpp b/Kernel_23/test/Kernel_23/Filtered_cartesian.cpp index 2930068a9ac..006bba267c7 100644 --- a/Kernel_23/test/Kernel_23/Filtered_cartesian.cpp +++ b/Kernel_23/test/Kernel_23/Filtered_cartesian.cpp @@ -31,6 +31,7 @@ #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Filtered_cartesian-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" diff --git a/Kernel_23/test/Kernel_23/Filtered_homogeneous.cpp b/Kernel_23/test/Kernel_23/Filtered_homogeneous.cpp index 34f27b2aa80..7a60ba9fe1b 100644 --- a/Kernel_23/test/Kernel_23/Filtered_homogeneous.cpp +++ b/Kernel_23/test/Kernel_23/Filtered_homogeneous.cpp @@ -29,6 +29,7 @@ #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Filtered_homogeneous-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" diff --git a/Kernel_23/test/Kernel_23/Homogeneous.cpp b/Kernel_23/test/Kernel_23/Homogeneous.cpp index a719e81747e..b009f7f3129 100644 --- a/Kernel_23/test/Kernel_23/Homogeneous.cpp +++ b/Kernel_23/test/Kernel_23/Homogeneous.cpp @@ -25,6 +25,7 @@ #include #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Homogeneous-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" #include "CGAL/_test_3.h" diff --git a/Kernel_23/test/Kernel_23/Lazy_kernel.cpp b/Kernel_23/test/Kernel_23/Lazy_kernel.cpp index e6f7807798f..d74dbdf28b1 100644 --- a/Kernel_23/test/Kernel_23/Lazy_kernel.cpp +++ b/Kernel_23/test/Kernel_23/Lazy_kernel.cpp @@ -26,6 +26,7 @@ #include #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Lazy_kernel-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" #include "CGAL/_test_3.h" diff --git a/Kernel_23/test/Kernel_23/Simple_cartesian.cpp b/Kernel_23/test/Kernel_23/Simple_cartesian.cpp index 95cfbb93663..4b5363127c1 100644 --- a/Kernel_23/test/Kernel_23/Simple_cartesian.cpp +++ b/Kernel_23/test/Kernel_23/Simple_cartesian.cpp @@ -25,6 +25,7 @@ #include #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Simple_cartesian-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" diff --git a/Kernel_23/test/Kernel_23/Simple_homogeneous.cpp b/Kernel_23/test/Kernel_23/Simple_homogeneous.cpp index a249e363057..6b8db7c7b0a 100644 --- a/Kernel_23/test/Kernel_23/Simple_homogeneous.cpp +++ b/Kernel_23/test/Kernel_23/Simple_homogeneous.cpp @@ -27,6 +27,7 @@ #include #include "CGAL/Precise_numbers.h" +#define TEST_FILENAME "Test-Simple_homogeneous-IO.out" #include "CGAL/_test_io.h" #include "CGAL/_test_2.h" #include "CGAL/_test_3.h" diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_io.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_io.h index ce42f17e52e..09230711756 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_io.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_io.h @@ -25,16 +25,20 @@ #include #include +#ifndef TEST_FILENAME +# define TEST_FILENAME "Test_IO.out" +#endif + template void _test_io_for(const T& t) { { - std::ofstream oFile("Test_IO.out", std::ios::out); + std::ofstream oFile(TEST_FILENAME, std::ios::out); oFile << t << std::endl; } - std::ifstream iFile("Test_IO.out", std::ios::in); + std::ifstream iFile(TEST_FILENAME, std::ios::in); T u; iFile >> u; assert(!iFile.fail());