From 7430f2613ac14363334fe8b26152ef6182c307d6 Mon Sep 17 00:00:00 2001 From: Johannes Bechberger Date: Sun, 27 Nov 2016 18:26:18 +0100 Subject: [PATCH] Improve handling of non zero exit codes --- mjtest/test/exec_tests.py | 4 ++++ mjtest/test/tests.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mjtest/test/exec_tests.py b/mjtest/test/exec_tests.py index fe2d99b..290ea9e 100644 --- a/mjtest/test/exec_tests.py +++ b/mjtest/test/exec_tests.py @@ -6,6 +6,7 @@ import sys from mjtest.environment import TestMode, Environment from mjtest.test.syntax_tests import BasicSyntaxTest from mjtest.test.tests import TestCase, BasicDiffTestResult, BasicTestResult +from mjtest.util.shell import SigKill _LOG = logging.getLogger("exec_tests") @@ -54,6 +55,9 @@ class JavaExecTest(BasicSyntaxTest): if self.type == self.MODE and self.env.mode == self.MODE: return BasicDiffTestResult(self, rtcode, out, err.decode(), exp_out) return BasicTestResult(self, rtcode, out.decode(), err.decode()) + except SigKill as sig: + os.chdir(cwd) + return BasicTestResult(self, sig.retcode, "", exp_out, sig.name) except: os.chdir(cwd) raise diff --git a/mjtest/test/tests.py b/mjtest/test/tests.py index e0933ef..f06b3a6 100644 --- a/mjtest/test/tests.py +++ b/mjtest/test/tests.py @@ -362,7 +362,8 @@ Return code: {} class BasicDiffTestResult(BasicTestResult): - def __init__(self, test_case: TestCase, error_code: int, output: str, error_output: str, expected_output: str): + def __init__(self, test_case: TestCase, error_code: int, output: str, error_output: str, expected_output: str, + short_error_message: str = None): super().__init__(test_case, error_code, output, error_output) self.expected_output = expected_output self._is_output_correct = self.expected_output.strip() == self.output.strip() @@ -371,6 +372,7 @@ class BasicDiffTestResult(BasicTestResult): elif self.succeeded() and self.test_case.should_succeed(): self.add_additional_text("Diff[expected output, actual output]", self._output_diff()) self.add_additional_text("Expected output", self.expected_output) + self.short_error_message = short_error_message #self.add_additional_text("Actual output", self.output) def is_correct(self): @@ -389,6 +391,8 @@ class BasicDiffTestResult(BasicTestResult): if self.is_correct(): return "correct" else: + if self.short_error_message: + return self.short_error_message if not self.succeeded() and not self.test_case.should_succeed() and not self._contains_error_str: return "the error output doesn't contain the word \"error\"" if self.succeeded() and self.test_case.should_succeed(): -- GitLab