From b78a01bcedb668158c97574d6a140d63a2a108e5 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 2 Jan 2018 19:33:32 +0000 Subject: [PATCH] Add a test case for python exception exit status --- mesonbuild/interpreter.py | 6 ++++++ run_unittests.py | 10 ++++++++++ test cases/unit/21 exit status/meson.build | 2 ++ 3 files changed, 18 insertions(+) create mode 100644 test cases/unit/21 exit status/meson.build diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c2c4fe304..076ba7d21 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 103847ad5..a520ad2b9 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 000000000..4f5485bfd --- /dev/null +++ b/test cases/unit/21 exit status/meson.build @@ -0,0 +1,2 @@ +project('exit status') +exception()