summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2022-03-23 12:27:22 +0100
committerAlexey Edelev <alexey.edelev@qt.io>2022-03-23 20:14:18 +0100
commitde582a26c323d64d50200cf9ac03dec5f351907d (patch)
tree41b08e15351ecdaffa8993a9577c72b09c9dbafc /src
parentee15aa74825d4486979e64aa988af1927572e708 (diff)
Use the CMake path format when passing the CMAKE_PREFIX_PATH to ctest
The generated 'CTestTestfile.cmake' file contains unescaped '\' symbols in --build-options argument that causes an issue if the Windows path format is used in CMAKE_PREFIX_PATH. Change-Id: Ic03934fcb7bc6230cef72584fef81b01026d5f3b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/Qt6CTestMacros.cmake35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/corelib/Qt6CTestMacros.cmake b/src/corelib/Qt6CTestMacros.cmake
index 24e7a737e9..8daf519bcb 100644
--- a/src/corelib/Qt6CTestMacros.cmake
+++ b/src/corelib/Qt6CTestMacros.cmake
@@ -17,7 +17,11 @@ foreach(_mod ${CMAKE_MODULES_UNDER_TEST})
message("CMAKE_${_mod}_MODULE_PATCH_VERSION: ${CMAKE_${_mod}_MODULE_PATCH_VERSION}")
endforeach()
+# The function collects configuring options for the test projects generated by Qt cmake tests.
+# Arguments:
+# OUT_PREFIX_PATH <variable name>: stores the CMAKE_PREFIX_PATH value in the output variable.
function(_qt_internal_get_cmake_test_configure_options out_var)
+ cmake_parse_arguments(arg "" "OUT_PREFIX_PATH" "" ${ARGN})
set(option_list)
if (CMAKE_C_COMPILER AND NOT CMAKE_CROSSCOMPILING)
@@ -78,6 +82,18 @@ function(_qt_internal_get_cmake_test_configure_options out_var)
)
endforeach()
+ set(prefixes "")
+ foreach(prefix_path IN LISTS CMAKE_PREFIX_PATH)
+ file(TO_CMAKE_PATH "${prefix_path}" prefix_path)
+ list(APPEND prefixes "${prefix_path}")
+ endforeach()
+ if(arg_OUT_PREFIX_PATH)
+ set(${arg_OUT_PREFIX_PATH} "${prefixes}" PARENT_SCOPE)
+ endif()
+
+ string(REPLACE ";" "\;" prefixes "${prefixes}")
+ list(APPEND option_list "-DCMAKE_PREFIX_PATH=${prefixes}")
+
set(${out_var} "${option_list}" PARENT_SCOPE)
endfunction()
@@ -294,9 +310,6 @@ macro(_qt_internal_test_expect_pass _dir)
endif()
endif()
- set(__expect_pass_prefixes "${CMAKE_PREFIX_PATH}")
- string(REPLACE ";" "\;" __expect_pass_prefixes "${__expect_pass_prefixes}")
-
set(__expect_pass_build_dir "${CMAKE_CURRENT_BINARY_DIR}/${_dir}")
if(_ARGS_BUILD_DIR)
set(__expect_pass_build_dir "${CMAKE_CURRENT_BINARY_DIR}/${_ARGS_BUILD_DIR}")
@@ -341,7 +354,7 @@ macro(_qt_internal_test_expect_pass _dir)
--build-generator "${generator}"
--build-makeprogram "${make_program}"
${build_project}
- --build-options "-DCMAKE_PREFIX_PATH=${__expect_pass_prefixes}" ${option_list}
+ --build-options "${option_list}"
${_ARGS_BUILD_OPTIONS} ${additional_configure_args}
${test_command}
)
@@ -357,7 +370,6 @@ macro(_qt_internal_test_expect_pass _dir)
unset(__expect_pass_source_dir)
unset(__expect_pass_build_dir)
- unset(__expect_pass_prefixes)
endmacro()
# Checks if the build of the test project fails.
@@ -378,9 +390,12 @@ macro(_qt_internal_test_expect_build_fail _dir)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/${_dir}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}")
+ set(__expect_fail_prefixes "")
+ _qt_internal_get_cmake_test_configure_options(option_list OUT_PREFIX_PATH __expect_fail_prefixes)
+
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}/${_dir}/FindPackageHints.cmake"
- "set(Qt6Tests_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\")
-list(APPEND CMAKE_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\")
+ "set(Qt6Tests_PREFIX_PATH \"${__expect_fail_prefixes}\")
+list(APPEND CMAKE_PREFIX_PATH \"${__expect_fail_prefixes}\")
")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}/CMakeLists.txt"
@@ -400,7 +415,6 @@ list(APPEND CMAKE_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\")
"
)
- _qt_internal_get_cmake_test_configure_options(option_list)
add_test(${testname} ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}"
@@ -409,8 +423,9 @@ list(APPEND CMAKE_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\")
--build-generator "${CMAKE_GENERATOR}"
--build-makeprogram "${CMAKE_MAKE_PROGRAM}"
--build-project "${_dir}"
- --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${option_list}
+ --build-options ${option_list}
)
+ unset(__expect_fail_prefixes)
endmacro()
function(_qt_internal_test_module_includes)
@@ -512,6 +527,6 @@ function(_qt_internal_test_module_includes)
--build-generator "${CMAKE_GENERATOR}"
--build-makeprogram "${CMAKE_MAKE_PROGRAM}"
--build-project module_includes
- --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${option_list}
+ --build-options ${option_list}
)
endfunction()