diff --git a/avocado/core/test.py b/avocado/core/test.py index 4ff4ee03a0ec8cc5a469802cd53c55eb35713bc3..2ae8739e1906401dc2689733bf4fcd73d1a928aa 100644 --- a/avocado/core/test.py +++ b/avocado/core/test.py @@ -707,12 +707,12 @@ class Test(unittest.TestCase): except exceptions.TestBaseException as detail: self.__status = detail.status self.__fail_class = detail.__class__.__name__ - self.__fail_reason = detail + self.__fail_reason = str(detail) self.__traceback = stacktrace.prepare_exc_info(sys.exc_info()) except AssertionError as detail: self.__status = 'FAIL' self.__fail_class = detail.__class__.__name__ - self.__fail_reason = detail + self.__fail_reason = str(detail) self.__traceback = stacktrace.prepare_exc_info(sys.exc_info()) except Exception as detail: self.__status = 'ERROR' diff --git a/selftests/functional/test_basic.py b/selftests/functional/test_basic.py index 468b7d57b46c02c13b5fcf7a485f2f92212d5548..3af94542038f62358a95dcca5f03c614df7a809e 100644 --- a/selftests/functional/test_basic.py +++ b/selftests/functional/test_basic.py @@ -114,6 +114,19 @@ class MyTest(Test): ''' +RAISE_CUSTOM_PATH_EXCEPTION_CONTENT = '''import os +import sys + +from avocado import Test + +class SharedLibTest(Test): + def test(self): + sys.path.append(os.path.join(os.path.dirname(__file__), "shared_lib")) + from mylib import CancelExc + raise CancelExc("This should not crash on unpickling in runner") +''' + + def probe_binary(binary): try: return utils_path.find_command(binary) @@ -391,6 +404,26 @@ class RunnerOperationTest(unittest.TestCase): result)) self.assertIn('"status": "FAIL"', result.stdout) + def test_exception_not_in_path(self): + os.chdir(basedir) + os.mkdir(os.path.join(self.tmpdir, "shared_lib")) + mylib = script.Script(os.path.join(self.tmpdir, "shared_lib", + "mylib.py"), + "from avocado import TestCancel\n\n" + "class CancelExc(TestCancel):\n" + " pass") + mylib.save() + mytest = script.Script(os.path.join(self.tmpdir, "mytest.py"), + RAISE_CUSTOM_PATH_EXCEPTION_CONTENT) + mytest.save() + result = process.run("%s --show test run --sysinfo=off " + "--job-results-dir %s %s" + % (AVOCADO, self.tmpdir, mytest)) + self.assertIn("mytest.py:SharedLibTest.test -> CancelExc: This " + "should not crash on unpickling in runner", + result.stdout) + self.assertNotIn("Failed to read queue", result.stdout) + def test_runner_timeout(self): os.chdir(basedir) cmd_line = ('%s run --sysinfo=off --job-results-dir %s '