diff options
author | Iikka Eklund <iikka.eklund@qt.io> | 2021-08-20 12:42:19 +0300 |
---|---|---|
committer | Iikka Eklund <iikka.eklund@qt.io> | 2021-08-27 08:01:31 +0000 |
commit | 39bce7dd713be3dd6b9e365b98df5f86ae5699a1 (patch) | |
tree | 02cdeb4f5b5044e5d71ffdb5eca334ecc48a835b | |
parent | b008b8ae71ef35e9558b2eedd2184e4113bc7e5b (diff) |
Add unit tests for 'parse_qt_version_by_key()'
Unit tests for parsing the qt version / prerelease segment from
.cmake.conf file.
Fix also potential white space issue around version number
in .cmake.conf file by stripping.
Change-Id: I69f5eb1659c375f64233ebe275210cc9a88edfa6
Reviewed-by: Toni Saario <toni.saario@qt.io>
-rw-r--r-- | conanfile.py | 2 | ||||
-rw-r--r-- | test/data/qt3d/.cmake.conf | 1 | ||||
-rw-r--r-- | test/data/qtbase/.cmake.conf | 24 | ||||
-rw-r--r-- | test/data/qtwebengine/.cmake.conf | 2 | ||||
-rw-r--r-- | test/test_conanfile.py | 32 |
5 files changed, 58 insertions, 3 deletions
diff --git a/conanfile.py b/conanfile.py index f68564c..5627511 100644 --- a/conanfile.py +++ b/conanfile.py @@ -129,7 +129,7 @@ def package_info(conan_file: ConanFile): def parse_qt_version_by_key(source_folder: Path, key: str) -> str: with open(source_folder / ".cmake.conf") as f: m = re.search(fr'{key} .*"(.*)"', f.read()) - return m.group(1) if m else "" + return m.group(1).strip() if m else "" def parse_module_dependencies(source_folder: Path) -> List[str]: diff --git a/test/data/qt3d/.cmake.conf b/test/data/qt3d/.cmake.conf new file mode 100644 index 0000000..4e73b3d --- /dev/null +++ b/test/data/qt3d/.cmake.conf @@ -0,0 +1 @@ +set(QT_REPO_MODULE_VERSION "6.2.0") diff --git a/test/data/qtbase/.cmake.conf b/test/data/qtbase/.cmake.conf new file mode 100644 index 0000000..8d5c578 --- /dev/null +++ b/test/data/qtbase/.cmake.conf @@ -0,0 +1,24 @@ +set(QT_REPO_MODULE_VERSION " 6.12.11 ") +set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "beta9 ") + +# Minimum requirement for building Qt +set(QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_QT_SHARED "3.16") +set(QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_QT_STATIC "3.21") + +# Minimum requirement for consuming Qt in a user project. +# This might be different in the future, e.g. be lower than the requirement for +# building Qt. +set(QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_USING_QT_SHARED "3.16") +set(QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_USING_QT_STATIC "3.21") + +# Policy settings for commands defined by qtbase. These will also be injected +# into the top level policy scope of each Qt module when building Qt so that +# modules have the same policy settings as qtbase by default. They can be +# overridden by individual Qt modules in their own .cmake.conf files if needed. +# +# NOTE: These two values are also hard-coded in QtBuildInternalsConfig.cmake +# because that file is used in-place by a superbuild, so there is no +# opportunity for substituting the values from here. Keep both locations +# in sync. +set(QT_MIN_NEW_POLICY_CMAKE_VERSION "3.16") +set(QT_MAX_NEW_POLICY_CMAKE_VERSION "3.21") diff --git a/test/data/qtwebengine/.cmake.conf b/test/data/qtwebengine/.cmake.conf new file mode 100644 index 0000000..4aa8eb1 --- /dev/null +++ b/test/data/qtwebengine/.cmake.conf @@ -0,0 +1,2 @@ +set(QT_REPO_MODULE_VERSION "6.2.0") +set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") diff --git a/test/test_conanfile.py b/test/test_conanfile.py index c93c8a9..02855ea 100644 --- a/test/test_conanfile.py +++ b/test/test_conanfile.py @@ -31,7 +31,7 @@ import unittest from ddt import ddt, data from pathlib import Path -from conanfile import parse_module_dependencies +from conanfile import parse_module_dependencies, parse_qt_version_by_key @ddt @@ -45,7 +45,35 @@ class TestConanFile(unittest.TestCase): tmp = Path(Path(__file__).parent / test_data_path).resolve() self.assertEqual(set(parse_module_dependencies(tmp)), set(expected_result)) + @data( + ( + "data/qtwebengine", + { + "QT_REPO_MODULE_VERSION": "6.2.0", + "QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT": "alpha1", + }, + ), + ( + "data/qt3d", + { + "QT_REPO_MODULE_VERSION": "6.2.0", + "QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT": "", + }, + ), + ( + "data/qtbase", + { + "QT_REPO_MODULE_VERSION": "6.12.11", + "QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT": "beta9", + }, + ), + ) + def test_parse_qt_version_by_key(self, data) -> None: + test_data_path, expected_result = data + path = Path(__file__).parent.joinpath(test_data_path).resolve() + for key in expected_result.keys(): + self.assertEqual(parse_qt_version_by_key(path, key), expected_result[key]) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() |