summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIikka Eklund <iikka.eklund@qt.io>2022-03-24 10:06:29 +0200
committerIikka Eklund <iikka.eklund@qt.io>2022-04-12 11:14:03 +0000
commitb944d9782ed16a09496601ebe065654815d7dcb6 (patch)
tree50b5402ed22c7516b84cbc69559d29d0925c5692
parentbcc116eeae6625fe3944b3b1b17d41aae848dbae (diff)
Refactor QtOptionParser to be more suitable for unit testing
Move inner functions as class members so those can be tested easier. Also simplify the is_excluded_from_configure() and find_qt_option() implementations a bit. Change-Id: Ia45ea2c1f465d881ee94671abbb92ba96009694d Reviewed-by: Toni Saario <toni.saario@qt.io>
-rw-r--r--conanfile.py33
1 files changed, 13 insertions, 20 deletions
diff --git a/conanfile.py b/conanfile.py
index 0282c84..a685295 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -269,31 +269,24 @@ class QtOptionParser:
# conan install ... -o release=True -> configure(.bat) -release
return bool(conan_options.get_safe(option_name))
+ def find_qt_option(self, conan_option_name: str) -> QtConfigureOption:
+ for qt_opt in self.options:
+ if conan_option_name == qt_opt.conan_option_name:
+ return qt_opt
+ raise QtConanError("No matching Qt configure option for: {0}".format(conan_option_name))
+
+ def is_excluded_from_configure(self, conan_option_name: str) -> bool:
+ # extra options are not Qt configure(.bat) options but those exist as
+ # conan recipe options which are treated outside Qt's configure(.bat)
+ return conan_option_name in self.extra_options.keys()
+
def convert_conan_option_to_qt_option(
self, conan_options: Options, name: str, value: Any
) -> str:
ret: str = ""
- def _find_qt_option(conan_option_name: str) -> QtConfigureOption:
- for qt_opt in self.options:
- if conan_option_name == qt_opt.conan_option_name:
- return qt_opt
- else:
- raise QtConanError(
- "Could not find a matching Qt configure option for: {0}".format(
- conan_option_name
- )
- )
-
- def _is_excluded_from_configure() -> bool:
- # extra options are not Qt configure(.bat) options but those exist as
- # conan recipe options which are treated outside Qt's configure(.bat)
- if name in self.extra_options.keys():
- return True
- return False
-
- if self.is_used_option(conan_options, name) and not _is_excluded_from_configure():
- qt_option = _find_qt_option(name)
+ if self.is_used_option(conan_options, name) and not self.is_excluded_from_configure(name):
+ qt_option = self.find_qt_option(name)
if qt_option.incremental_option:
# e.g. -make=libs -make=examples <-> -o make=libs;examples;foo;bar
_opt = qt_option.prefix + qt_option.name + qt_option.value_delim