aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-01-02 19:33:32 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2018-02-15 12:51:25 +0000
commitb78a01bcedb668158c97574d6a140d63a2a108e5 (patch)
treee4a4e007e7dc5d573e9160457167fbf512d9ee8f
parent2a64ed855e6db81c3df4659e1066f777b9bacc8c (diff)
downloadmeson-b78a01bcedb668158c97574d6a140d63a2a108e5.zip
meson-b78a01bcedb668158c97574d6a140d63a2a108e5.tar.gz
meson-b78a01bcedb668158c97574d6a140d63a2a108e5.tar.bz2
Add a test case for python exception exit status
-rw-r--r--mesonbuild/interpreter.py6
-rwxr-xr-xrun_unittests.py10
-rw-r--r--test cases/unit/21 exit status/meson.build2
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()