summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorKonstantin Pavlov <thresh@nginx.com>2018-11-15 16:23:35 +0300
committerKonstantin Pavlov <thresh@nginx.com>2018-11-15 16:23:35 +0300
commit6ccba253f8d415337a09fb935606447791ce308c (patch)
treee0f9a8c5e8ede8cef1500c316d7534dd8de7b972 /test
parentbdde42999b36af85f2f04c0872fdd3e30af52027 (diff)
parenta4b02e17382ccbfc19410c644004c4615b2c2c29 (diff)
downloadunit-6ccba253f8d415337a09fb935606447791ce308c.tar.gz
unit-6ccba253f8d415337a09fb935606447791ce308c.tar.bz2
Merged with the default branch.1.6-1
Diffstat (limited to 'test')
-rw-r--r--test/unit.py39
1 files changed, 35 insertions, 4 deletions
diff --git a/test/unit.py b/test/unit.py
index 98a0a4db..a5f96968 100644
--- a/test/unit.py
+++ b/test/unit.py
@@ -25,13 +25,36 @@ class TestUnit(unittest.TestCase):
def tearDown(self):
self.stop()
+ # detect errors and failures for current test
+
+ def list2reason(exc_list):
+ if exc_list and exc_list[-1][0] is self:
+ return exc_list[-1][1]
+
+ if hasattr(self, '_outcome'):
+ result = self.defaultTestResult()
+ self._feedErrorsToResult(result, self._outcome.errors)
+ else:
+ result = getattr(self, '_outcomeForDoCleanups',
+ self._resultForDoCleanups)
+
+ success = not list2reason(result.errors) \
+ and not list2reason(result.failures)
+
+ # check unit.log for alerts
+
with open(self.testdir + '/unit.log', 'r', encoding='utf-8',
errors='ignore') as f:
self._check_alerts(f.read())
- if '--leave' not in sys.argv:
+ # remove unit.log
+
+ if '--leave' not in sys.argv and success:
shutil.rmtree(self.testdir)
+ else:
+ self._print_path_to_log()
+
def check_modules(self, *modules):
self._run()
@@ -171,11 +194,16 @@ class TestUnit(unittest.TestCase):
for skip in self.skip_alerts:
alerts = [al for al in alerts if re.search(skip, al) is None]
- self.assertFalse(alerts, 'alert(s)')
+ if alerts:
+ self._print_path_to_log()
+ self.assertFalse(alerts, 'alert(s)')
if not self.skip_sanitizer:
- self.assertFalse(re.findall('.+Sanitizer.+', log),
- 'sanitizer error(s)')
+ sanitizer_errors = re.findall('.+Sanitizer.+', log)
+
+ if sanitizer_errors:
+ self._print_path_to_log()
+ self.assertFalse(sanitizer_error, 'sanitizer error(s)')
if found:
print('skipped.')
@@ -199,6 +227,9 @@ class TestUnit(unittest.TestCase):
return ret
+ def _print_path_to_log(self):
+ print('Path to unit.log:\n' + self.testdir + '/unit.log')
+
class TestUnitHTTP(TestUnit):
def http(self, start_str, **kwargs):