summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIikka Eklund <iikka.eklund@qt.io>2021-08-20 12:42:19 +0300
committerIikka Eklund <iikka.eklund@qt.io>2021-08-27 08:01:31 +0000
commit39bce7dd713be3dd6b9e365b98df5f86ae5699a1 (patch)
tree02cdeb4f5b5044e5d71ffdb5eca334ecc48a835b
parentb008b8ae71ef35e9558b2eedd2184e4113bc7e5b (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.py2
-rw-r--r--test/data/qt3d/.cmake.conf1
-rw-r--r--test/data/qtbase/.cmake.conf24
-rw-r--r--test/data/qtwebengine/.cmake.conf2
-rw-r--r--test/test_conanfile.py32
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()