aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Lohnau <alexander.lohnau@gmx.de>2024-01-01 16:29:19 +0100
committerAlexander Lohnau <alexander.lohnau@gmx.de>2024-01-03 15:57:17 +0000
commit76809c20c3e01f3023cd4b51ae1b6295c259cb45 (patch)
tree5c1cf8f9cf1d188228eb8da7b3bed28e2977c0be
parent38616ad8aecfa0c550e5f848e652fec382f45365 (diff)
Optimize checks for filesystem in tests
When we did determine this using cmake, we can reuse the value. On my PC, this saves half a second for each test. With tests being run on CI, this adds up! Even more, we checked the compilation in each test, even if the test did not require the std::filesystem API
-rw-r--r--CMakeLists.txt3
-rw-r--r--ClazyTests.cmake4
-rwxr-xr-xdev-scripts/generate.py4
-rwxr-xr-xtests/run_tests.py2
4 files changed, 9 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1e5d6f39..20ae69fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,8 +98,9 @@ set(CXX_STANDARD_REQUIRED ON)
message("Looking for std::filesystem support...")
try_run(FILESYSTEM_RUN_RESULT COMPILE_RESULT ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/.cmake_has_filesystem_test.cpp OUTPUT_VARIABLE foo CXX_STANDARD 17 CXX_STANDARD_REQUIRED true)
-if (FILESYSTEM_RUN_RESULT EQUAL 0 AND COMPILE_RESULT)
+if (FILESYSTEM_RUN_RESULT)
add_definitions(-DHAS_STD_FILESYSTEM)
+ set(HAS_STD_FILESYSTEM TRUE)
endif()
include(ClazySources.cmake)
diff --git a/ClazyTests.cmake b/ClazyTests.cmake
index ec67197e..b716f28a 100644
--- a/ClazyTests.cmake
+++ b/ClazyTests.cmake
@@ -2,7 +2,9 @@
macro(add_clazy_test name)
add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
- set_property(TEST ${name} PROPERTY ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>")
+ set_property(TEST ${name} PROPERTY
+ ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
+ )
endmacro()
add_clazy_test(assert-with-side-effects)
diff --git a/dev-scripts/generate.py b/dev-scripts/generate.py
index 4ef3c684..09b69fe7 100755
--- a/dev-scripts/generate.py
+++ b/dev-scripts/generate.py
@@ -475,7 +475,9 @@ def generate_ctest(checks):
contents = """# This file was autogenerated by running: ./dev-scripts/generate.py --generate\n
macro(add_clazy_test name)
add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
- set_property(TEST ${name} PROPERTY ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>")
+ set_property(TEST ${name} PROPERTY
+ ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
+ )
endmacro()\n
"""
for c in checks:
diff --git a/tests/run_tests.py b/tests/run_tests.py
index a76b3dee..ca33e47e 100755
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -899,7 +899,7 @@ def try_compile(filename):
if isLinux():
# On Windows and macOS we have recent enough toolchains
- _hasStdFileSystem = try_compile('../.cmake_has_filesystem_test.cpp')
+ _hasStdFileSystem = 'CLAZY_HAS_FILESYSTEM' in os.environ or try_compile('../.cmake_has_filesystem_test.cpp')
if 'CLAZY_NO_WERROR' in os.environ:
del os.environ['CLAZY_NO_WERROR']