summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2019-07-26 18:15:41 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2019-07-29 13:14:44 +0000
commit1307736c7db1ff24e3b8282f4a7b14d24866feba (patch)
treed85d34f581c4b79dc034a4fc83ce9f39107bdc6e
parente61a7a2c576005646a5fb7ffc91bdf09c448e880 (diff)
Fix testdata handling
Make sure to handle glob expressions in the entire path given, not just the end of the path. This handles tests like qsslkey and qnetworkreply. Also copy/install the testdata in the final test directory path under a "testdata" subdir. Previously INSTALL_TESTDIR was used, which was never set to anything. Change-Id: I2408e12f586cadeb524ffa249e851a4179324b23 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
-rw-r--r--cmake/QtBuild.cmake11
-rwxr-xr-xutil/cmake/pro2cmake.py17
2 files changed, 22 insertions, 6 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index ff9109afbe..d9afbfc065 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -192,6 +192,11 @@ unset(__config_path_part)
# at the QtPostProcess stage.
set(QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "")
+# Save the value of the current first project source dir.
+# This will be /path/to/qtbase for qtbase both in a super-build and a non super-build.
+# This will be /path/to/qtbase/tests when building standalone tests.
+set(QT_TOP_LEVEL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+
# Functions and macros:
# qt_remove_args can remove arguments from an existing list of function
@@ -2145,7 +2150,11 @@ function(add_qt_test name)
endif()
else()
# Install test data
- qt_path_join(testdata_install_dir ${QT_INSTALL_DIR} "${INSTALL_TESTDIR}/${name}")
+ file(RELATIVE_PATH relative_path_to_test_project
+ "${QT_TOP_LEVEL_SOURCE_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}")
+ qt_path_join(testdata_install_dir ${QT_INSTALL_DIR}
+ "${relative_path_to_test_project}/testdata")
foreach(testdata IN LISTS arg_TESTDATA)
set(testdata "${CMAKE_CURRENT_SOURCE_DIR}/${testdata}")
if (IS_DIRECTORY "${testdata}")
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py
index c505a48e79..23d459d765 100755
--- a/util/cmake/pro2cmake.py
+++ b/util/cmake/pro2cmake.py
@@ -31,6 +31,7 @@
from __future__ import annotations
from argparse import ArgumentParser
+from textwrap import dedent
import copy
import xml.etree.ElementTree as ET
from itertools import chain
@@ -1602,11 +1603,17 @@ def write_main_part(cm_fh: typing.IO[str], name: str, typename: str,
has_test_data = True
cm_fh.write('# Collect test data\n')
for data in test_data:
- if data.endswith('*'):
- cm_fh.write('{}file(GLOB test_data_glob \n{}LIST_DIRECTORIES'
- ' true\n{}RELATIVE ${{CMAKE_CURRENT_SOURCE_DIR}}\n{}"{}")\n'\
- .format(spaces(indent), spaces(indent + 1), \
- spaces(indent + 1), spaces(indent + 1), data))
+ if '*' in data:
+ cm_fh.write(dedent("""
+ {indent}file(GLOB test_data_glob
+ {indent1}LIST_DIRECTORIES true
+ {indent1}RELATIVE ${{CMAKE_CURRENT_SOURCE_DIR}}
+ {indent1}"{}")
+ """).format(
+ data,
+ indent=spaces(indent),
+ indent1=spaces(indent + 1)
+ ))
cm_fh.write('{}list(APPEND test_data ${{test_data_glob}})\n'.format(spaces(indent)))
else:
cm_fh.write('{}list(APPEND test_data "{}")\n'.format(spaces(indent), data))