diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-01-02 19:33:32 +0000 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-02-15 12:51:25 +0000 |
commit | b78a01bcedb668158c97574d6a140d63a2a108e5 (patch) | |
tree | e4a4e007e7dc5d573e9160457167fbf512d9ee8f | |
parent | 2a64ed855e6db81c3df4659e1066f777b9bacc8c (diff) | |
download | meson-b78a01bcedb668158c97574d6a140d63a2a108e5.zip meson-b78a01bcedb668158c97574d6a140d63a2a108e5.tar.gz meson-b78a01bcedb668158c97574d6a140d63a2a108e5.tar.bz2 |
Add a test case for python exception exit status
-rw-r--r-- | mesonbuild/interpreter.py | 6 | ||||
-rwxr-xr-x | run_unittests.py | 10 | ||||
-rw-r--r-- | test cases/unit/21 exit status/meson.build | 2 |
3 files changed, 18 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c2c4fe3..076ba7d 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1470,6 +1470,7 @@ class Interpreter(InterpreterBase): 'disabler': self.func_disabler, 'environment': self.func_environment, 'error': self.func_error, + 'exception': self.func_exception, 'executable': self.func_executable, 'generator': self.func_generator, 'gettext': self.func_gettext, @@ -1983,6 +1984,11 @@ to directly access options of other subprojects.''') self.validate_arguments(args, 1, [str]) raise InterpreterException('Error encountered: ' + args[0]) + @noKwargs + def func_exception(self, node, args, kwargs): + self.validate_arguments(args, 0, []) + raise Exception() + def detect_compilers(self, lang, need_cross_compiler): cross_comp = None if lang == 'c': diff --git a/run_unittests.py b/run_unittests.py index 103847a..a520ad2 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -1933,6 +1933,16 @@ class FailureTests(BasePlatformTests): self.assertRegex(out, r'Also couldn\'t find a fallback subproject in ' '.*subprojects.*failingsubproj.*for the dependency.*somedep') + def test_exception_exit_status(self): + ''' + Test exit status on python exception + ''' + tdir = os.path.join(self.unit_test_dir, '21 exit status') + with self.assertRaises(subprocess.CalledProcessError) as cm: + self.init(tdir, inprocess=False) + self.assertEqual(cm.exception.returncode, 2) + self.wipe() + class WindowsTests(BasePlatformTests): ''' diff --git a/test cases/unit/21 exit status/meson.build b/test cases/unit/21 exit status/meson.build new file mode 100644 index 0000000..4f5485b --- /dev/null +++ b/test cases/unit/21 exit status/meson.build @@ -0,0 +1,2 @@ +project('exit status') +exception() |