diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-08-14 12:44:15 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-09-12 15:38:00 +0100 |
commit | 1394cb9263a17484fea01ce807402dcc95e68e20 (patch) | |
tree | 669baecc0c02f0c69df1f5b1bb6c44c2f27ea69a | |
parent | 8b3ad3e9a061a0e66b60e31655e10473b05ee5b3 (diff) | |
download | meson-1394cb9263a17484fea01ce807402dcc95e68e20.zip meson-1394cb9263a17484fea01ce807402dcc95e68e20.tar.gz meson-1394cb9263a17484fea01ce807402dcc95e68e20.tar.bz2 |
Correct version_compare_condition_with_min()
Correct version_compare_condition_with_min() for the case where no minimum
version is established by the version constraint. Add a simple test.
Also fix test_feature_check_usage_subprojects by escaping regex
metacharacters.
if |condition| is '<', '<=' or '!=', the minimum version satisfying the
condition is 0, so the minimum version for a feature is never met.
if |condition| is '>=' or '==', the minimum version satisfying the condition
is the version compared with, so the minimum version for a feature must be
less than or equal to that.
if |condition| is '>', the minimum version satisfying the condition is
greater than the version compared with, so the minimum version for a feature
must be less than that
(it's this last condition that makes this function necessary, as in all
other cases we could establish a definite minimum version which we could
compare to see if it's less than or equal to the current version)
-rw-r--r-- | mesonbuild/mesonlib.py | 6 | ||||
-rwxr-xr-x | run_unittests.py | 9 | ||||
-rw-r--r-- | test cases/unit/41 featurenew subprojects/meson.build | 1 | ||||
-rw-r--r-- | test cases/unit/41 featurenew subprojects/subprojects/baz/meson.build | 3 |
4 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index 05a77cd..8a2dc0c 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -493,9 +493,9 @@ def version_compare_condition_with_min(condition, minimum): cmpop = operator.le condition = condition[2:] elif condition.startswith('<='): - return True + return False elif condition.startswith('!='): - return True + return False elif condition.startswith('=='): cmpop = operator.le condition = condition[2:] @@ -506,7 +506,7 @@ def version_compare_condition_with_min(condition, minimum): cmpop = operator.lt condition = condition[1:] elif condition.startswith('<'): - return True + return False else: cmpop = operator.le diff --git a/run_unittests.py b/run_unittests.py index 09d1c5e..214bc16 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -2660,13 +2660,14 @@ recommended as it is not supported on some platforms''') out = self.init(testdir) # Parent project warns correctly self.assertRegex(out, "WARNING: Project targetting '>=0.45'.*'0.47.0': dict") - # Subproject warns correctly - self.assertRegex(out, "|WARNING: Project targetting '>=0.40'.*'0.44.0': disabler") + # Subprojects warn correctly + self.assertRegex(out, r"\|WARNING: Project targetting '>=0.40'.*'0.44.0': disabler") + self.assertRegex(out, r"\|WARNING: Project targetting '!=0.40'.*'0.44.0': disabler") # Subproject has a new-enough meson_version, no warning self.assertNotRegex(out, "WARNING: Project targetting.*Python") # Ensure a summary is printed in the subproject and the outer project - self.assertRegex(out, "|WARNING: Project specifies a minimum meson_version '>=0.40'") - self.assertRegex(out, "| * 0.44.0: {'disabler'}") + self.assertRegex(out, r"\|WARNING: Project specifies a minimum meson_version '>=0.40'") + self.assertRegex(out, r"\| \* 0.44.0: {'disabler'}") self.assertRegex(out, "WARNING: Project specifies a minimum meson_version '>=0.45'") self.assertRegex(out, " * 0.47.0: {'dict'}") diff --git a/test cases/unit/41 featurenew subprojects/meson.build b/test cases/unit/41 featurenew subprojects/meson.build index 27898cd..d136bed 100644 --- a/test cases/unit/41 featurenew subprojects/meson.build +++ b/test cases/unit/41 featurenew subprojects/meson.build @@ -4,3 +4,4 @@ foo = {} subproject('foo') subproject('bar') +subproject('baz') diff --git a/test cases/unit/41 featurenew subprojects/subprojects/baz/meson.build b/test cases/unit/41 featurenew subprojects/subprojects/baz/meson.build new file mode 100644 index 0000000..811e7aa --- /dev/null +++ b/test cases/unit/41 featurenew subprojects/subprojects/baz/meson.build @@ -0,0 +1,3 @@ +project('baz subproject', meson_version: '!=0.40') + +disabler() |