From e3b23da717ebd9b9b370086d1acf5da6fe5a6136 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Fri, 27 Oct 2023 12:16:49 +0200 Subject: [PATCH] Refactor test-suite Signed-off-by: Cristian Le --- test/CMakeLists.txt | 94 ++++++++++++++++++++++++------ test/cmpnbrs/CMakeLists.txt | 19 ++++++ test/{ => cmpnbrs}/cmpnbrs.c | 0 test/csrcnv/CMakeLists.txt | 19 ++++++ test/{ => csrcnv}/csrcnv.c | 0 test/fis/CMakeLists.txt | 19 ++++++ test/{ => fis}/fis.c | 0 test/gkgraph/CMakeLists.txt | 19 ++++++ test/{ => gkgraph}/gkgraph.c | 0 test/gksort/CMakeLists.txt | 19 ++++++ test/{ => gksort}/gksort.c | 0 test/gkuniq/CMakeLists.txt | 19 ++++++ test/{ => gkuniq}/gkuniq.c | 0 test/grKx/CMakeLists.txt | 19 ++++++ test/{ => grKx}/grKx.c | 0 test/m2mnbrs/CMakeLists.txt | 19 ++++++ test/{ => m2mnbrs}/m2mnbrs.c | 0 test/rw/CMakeLists.txt | 19 ++++++ test/{ => rw}/rw.c | 0 test/splatt2svd/CMakeLists.txt | 19 ++++++ test/{ => splatt2svd}/splatt2svd.c | 0 test/strings/CMakeLists.txt | 19 ++++++ test/{ => strings}/strings.c | 0 23 files changed, 284 insertions(+), 19 deletions(-) create mode 100644 test/cmpnbrs/CMakeLists.txt rename test/{ => cmpnbrs}/cmpnbrs.c (100%) create mode 100644 test/csrcnv/CMakeLists.txt rename test/{ => csrcnv}/csrcnv.c (100%) create mode 100644 test/fis/CMakeLists.txt rename test/{ => fis}/fis.c (100%) create mode 100644 test/gkgraph/CMakeLists.txt rename test/{ => gkgraph}/gkgraph.c (100%) create mode 100644 test/gksort/CMakeLists.txt rename test/{ => gksort}/gksort.c (100%) create mode 100644 test/gkuniq/CMakeLists.txt rename test/{ => gkuniq}/gkuniq.c (100%) create mode 100644 test/grKx/CMakeLists.txt rename test/{ => grKx}/grKx.c (100%) create mode 100644 test/m2mnbrs/CMakeLists.txt rename test/{ => m2mnbrs}/m2mnbrs.c (100%) create mode 100644 test/rw/CMakeLists.txt rename test/{ => rw}/rw.c (100%) create mode 100644 test/splatt2svd/CMakeLists.txt rename test/{ => splatt2svd}/splatt2svd.c (100%) create mode 100644 test/strings/CMakeLists.txt rename test/{ => strings}/strings.c (100%) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8584820..c475f04 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,19 +1,75 @@ -# Build program. -add_executable(strings strings.c) -add_executable(gksort gksort.c) -add_executable(fis fis.c) -add_executable(gkrw rw.c) -add_executable(gkgraph gkgraph.c) -add_executable(csrcnv csrcnv.c) -add_executable(grKx grKx.c) -add_executable(m2mnbrs m2mnbrs.c) -add_executable(cmpnbrs cmpnbrs.c) -add_executable(splatt2svd splatt2svd.c) -add_executable(gkuniq gkuniq.c) - -foreach(prog strings gksort fis gkrw gkgraph csrcnv grKx m2mnbrs cmpnbrs splatt2svd gkuniq) - target_link_libraries(${prog} GKlib) -endforeach(prog) - -# Install a subset of them -install(TARGETS csrcnv RUNTIME DESTINATION bin) +function(GKlib_add_test test) + #[===[.md + # GKlib_add_test + + Internal helper for adding GKlib tests + + ## Synopsis + ```cmake + GKlib_add_test( + [TEST_NAME ] + [TARGET ] + [LABELS ]) + ``` + + ## Options + + `` + Path to the CMake project to be executed relative to `${CMAKE_CURRENT_SOURCE_DIR}` + + `TEST_NAME` [Default: ``] + Name for the test to be used as the ctest name + + `LABELS` + Additional labels to be added + + ]===] + + set(ARGS_Options) + set(ARGS_OneValue + TEST_NAME + ) + set(ARGS_MultiValue + LABELS + ) + cmake_parse_arguments(PARSE_ARGV 1 ARGS "${ARGS_Options}" "${ARGS_OneValue}" "${ARGS_MultiValue}") + # Check required/optional arguments + if (ARGC LESS 1) + message(FATAL_ERROR + "Fortuno: Missing test name in Octopus_add_test call") + endif () + if (NOT DEFINED ARGS_TEST_NAME) + set(ARGS_TEST_NAME ${test}) + endif () + + add_test(NAME ${ARGS_TEST_NAME} + COMMAND ${CMAKE_CTEST_COMMAND} --build-and-test ${CMAKE_CURRENT_SOURCE_DIR}/${test} + ${CMAKE_CURRENT_BINARY_DIR}/${test} + --build-generator "${CMAKE_GENERATOR}" + --build-options -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + # Generated Config file point to binary targets until it is installed + -DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS + -DGKlib_ROOT=${PROJECT_BINARY_DIR} + # TODO: Implement recursive ctest and remove --notests flag + --test-command ${CMAKE_CTEST_COMMAND} --test-dir ${CMAKE_CURRENT_BINARY_DIR}/${test} --no-tests=ignore + ) + set_tests_properties(${ARGS_TEST_NAME} PROPERTIES + LABELS "${ARGS_LABELS}" + ) +endfunction() + +foreach (test IN ITEMS + cmpnbrs + csrcnv + fis + gkgraph + gksort + gkuniq + grKx + m2mnbrs + rw + splatt2svd + strings +) + GKlib_add_test(${test}) +endforeach () diff --git a/test/cmpnbrs/CMakeLists.txt b/test/cmpnbrs/CMakeLists.txt new file mode 100644 index 0000000..3969d03 --- /dev/null +++ b/test/cmpnbrs/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(cmpnbrs + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(cmpnbrs cmpnbrs.c) +target_link_libraries(cmpnbrs PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/cmpnbrs.c b/test/cmpnbrs/cmpnbrs.c similarity index 100% rename from test/cmpnbrs.c rename to test/cmpnbrs/cmpnbrs.c diff --git a/test/csrcnv/CMakeLists.txt b/test/csrcnv/CMakeLists.txt new file mode 100644 index 0000000..fe20cd9 --- /dev/null +++ b/test/csrcnv/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(csrcnv + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(csrcnv csrcnv.c) +target_link_libraries(csrcnv PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/csrcnv.c b/test/csrcnv/csrcnv.c similarity index 100% rename from test/csrcnv.c rename to test/csrcnv/csrcnv.c diff --git a/test/fis/CMakeLists.txt b/test/fis/CMakeLists.txt new file mode 100644 index 0000000..88eb7c7 --- /dev/null +++ b/test/fis/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(fis + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(fis fis.c) +target_link_libraries(fis PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/fis.c b/test/fis/fis.c similarity index 100% rename from test/fis.c rename to test/fis/fis.c diff --git a/test/gkgraph/CMakeLists.txt b/test/gkgraph/CMakeLists.txt new file mode 100644 index 0000000..2272a5a --- /dev/null +++ b/test/gkgraph/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(gkgraph + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(gkgraph gkgraph.c) +target_link_libraries(gkgraph.c PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/gkgraph.c b/test/gkgraph/gkgraph.c similarity index 100% rename from test/gkgraph.c rename to test/gkgraph/gkgraph.c diff --git a/test/gksort/CMakeLists.txt b/test/gksort/CMakeLists.txt new file mode 100644 index 0000000..dd4cd8d --- /dev/null +++ b/test/gksort/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(gksort + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(gksort gksort.c) +target_link_libraries(gksort PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/gksort.c b/test/gksort/gksort.c similarity index 100% rename from test/gksort.c rename to test/gksort/gksort.c diff --git a/test/gkuniq/CMakeLists.txt b/test/gkuniq/CMakeLists.txt new file mode 100644 index 0000000..a6881ee --- /dev/null +++ b/test/gkuniq/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(gkuniq + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(gkuniq gkuniq.c) +target_link_libraries(gkuniq PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/gkuniq.c b/test/gkuniq/gkuniq.c similarity index 100% rename from test/gkuniq.c rename to test/gkuniq/gkuniq.c diff --git a/test/grKx/CMakeLists.txt b/test/grKx/CMakeLists.txt new file mode 100644 index 0000000..5bf7487 --- /dev/null +++ b/test/grKx/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(grKx + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(grKx grKx.c) +target_link_libraries(grKx PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/grKx.c b/test/grKx/grKx.c similarity index 100% rename from test/grKx.c rename to test/grKx/grKx.c diff --git a/test/m2mnbrs/CMakeLists.txt b/test/m2mnbrs/CMakeLists.txt new file mode 100644 index 0000000..f9825d0 --- /dev/null +++ b/test/m2mnbrs/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(m2mnbrs + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(m2mnbrs m2mnbrs.c) +target_link_libraries(m2mnbrs PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/m2mnbrs.c b/test/m2mnbrs/m2mnbrs.c similarity index 100% rename from test/m2mnbrs.c rename to test/m2mnbrs/m2mnbrs.c diff --git a/test/rw/CMakeLists.txt b/test/rw/CMakeLists.txt new file mode 100644 index 0000000..cc30d06 --- /dev/null +++ b/test/rw/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(rw + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(rw rw.c) +target_link_libraries(rw PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/rw.c b/test/rw/rw.c similarity index 100% rename from test/rw.c rename to test/rw/rw.c diff --git a/test/splatt2svd/CMakeLists.txt b/test/splatt2svd/CMakeLists.txt new file mode 100644 index 0000000..b7fc3ec --- /dev/null +++ b/test/splatt2svd/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(splatt2svd + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(splatt2svd splatt2svd.c) +target_link_libraries(splatt2svd PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/splatt2svd.c b/test/splatt2svd/splatt2svd.c similarity index 100% rename from test/splatt2svd.c rename to test/splatt2svd/splatt2svd.c diff --git a/test/strings/CMakeLists.txt b/test/strings/CMakeLists.txt new file mode 100644 index 0000000..54cb65b --- /dev/null +++ b/test/strings/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) + +project(strings + LANGUAGES C +) + +include(FetchContent) +FetchContent_Declare(GKlib + GIT_REPOSITORY https://github.com/KarypisLab/GKlib + GIT_TAG master + FIND_PACKAGE_ARGS CONFIG +) +FetchContent_MakeAvailable(GKlib) + +add_executable(strings strings.c) +target_link_libraries(strings PRIVATE GKlib::GKlib) + +# TODO: Add ctest calling for each internal project +enable_testing() diff --git a/test/strings.c b/test/strings/strings.c similarity index 100% rename from test/strings.c rename to test/strings/strings.c