diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-05-29 02:59:24 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-05-29 02:59:24 +0300 |
commit | b5013a573ae18ff009e498c778614712352f0b44 (patch) | |
tree | 80696468c1b9ea2b58d4c60a38fc44d559ba6e72 | |
parent | 9dace5fc5e508e972389f41ef0fae6a96d29ec34 (diff) | |
download | meson-b5013a573ae18ff009e498c778614712352f0b44.zip meson-b5013a573ae18ff009e498c778614712352f0b44.tar.gz meson-b5013a573ae18ff009e498c778614712352f0b44.tar.bz2 |
Added semantic versioning comparison method to strings.
-rw-r--r-- | mesonbuild/interpreter.py | 7 | ||||
-rw-r--r-- | test cases/common/42 string operations/meson.build (renamed from test cases/common/42 string formatting/meson.build) | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c785e88..aac021a 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2159,6 +2159,13 @@ class Interpreter(): strlist = posargs[0] check_stringlist(strlist) return obj.join(strlist) + elif method_name == 'version_compare': + if len(posargs) != 1: + raise InterpreterException('Version_compare() takes exactly one argument.') + cmpr = posargs[0] + if not isinstance(cmpr, str): + raise InterpreterException('Version_compare() argument must be a string.') + return mesonlib.version_compare(obj, cmpr) raise InterpreterException('Unknown method "%s" for a string.' % method_name) def to_native(self, arg): diff --git a/test cases/common/42 string formatting/meson.build b/test cases/common/42 string operations/meson.build index 0d17448..5d7a73d 100644 --- a/test cases/common/42 string formatting/meson.build +++ b/test cases/common/42 string operations/meson.build @@ -55,3 +55,15 @@ assert('@0@'.format(true) == 'true', 'bool string formatting failed') assert(' '.join(['a', 'b', 'c']) == 'a b c', 'join() array broken') assert(''.join(['a', 'b', 'c']) == 'abc', 'empty join() broken') assert(' '.join(['a']) == 'a', 'single join broken') + +version_number = '1.2.8' + +assert(version_number.version_compare('>=1.2.8'), 'Version_compare gt broken') +assert(not version_number.version_compare('>1.2.8'), 'Version_compare greater broken') +assert(not version_number.version_compare('<1.2.8'), 'Version_compare less broken') +assert(version_number.version_compare('<=1.2.8'), 'Version_compare le broken') +assert(version_number.version_compare('==1.2.8'), 'Version_compare eq broken') +assert(not version_number.version_compare('!=1.2.8'), 'Version_compare neq broken') + +assert(version_number.version_compare('<2.0'), 'Version_compare major less broken') +assert(version_number.version_compare('>0.9'), 'Version_compare major greater broken') |