diff options
author | Iikka Eklund <iikka.eklund@qt.io> | 2022-03-24 10:06:29 +0200 |
---|---|---|
committer | Iikka Eklund <iikka.eklund@qt.io> | 2022-04-12 11:14:03 +0000 |
commit | b944d9782ed16a09496601ebe065654815d7dcb6 (patch) | |
tree | 50b5402ed22c7516b84cbc69559d29d0925c5692 | |
parent | bcc116eeae6625fe3944b3b1b17d41aae848dbae (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.py | 33 |
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 |