assamtest

mocha-style tests for python
git clone https://git.ce9e.org/assamtest.git

commit
588cd93b65b6b6b7132ecdc21e5d5939c2e14ea8
parent
543cb7041c9fa3237a6d4bd6824ba451aecfbab1
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2019-02-09 10:01
refactor reporter

Diffstat

M assamtest/reporter.py 39 +++++++++++++++++++++------------------

1 files changed, 21 insertions, 18 deletions


diff --git a/assamtest/reporter.py b/assamtest/reporter.py

@@ -33,6 +33,7 @@ class Reporter:
   33    33 class SpecReporter(Reporter):
   34    34 	def __init__(self):
   35    35 		self.stack = []
   -1    36 		self.total = 0
   36    37 		self.stats = {
   37    38 			'SUCCESS': {},
   38    39 			'INFO': {},
@@ -40,7 +41,7 @@ class SpecReporter(Reporter):
   40    41 			'ERROR': {},
   41    42 		}
   42    43 
   43    -1 	def render_level(self, msg, level, status):
   -1    44 	def _render(self, msg, level, status):
   44    45 		if status == 'passed':
   45    46 			char = '✓'
   46    47 		elif status == 'failed':
@@ -58,33 +59,35 @@ class SpecReporter(Reporter):
   58    59 	def _print(self, msg):
   59    60 		print('  ' * len(self.stack) + msg)
   60    61 
   61    -1 	def leave_run(self):
   62    -1 		print()
   63    -1 		for level in ['SUCCESS', 'INFO', 'WARNING', 'ERROR']:
   64    -1 			for status, count in sorted(self.stats[level].items()):
   65    -1 				print(self.render_level('%i %s' % (count, status), level, status))
   66    -1 
   67    -1 		if sum(self.stats['ERROR'].values()) != 0:
   68    -1 			return 1
   69    -1 		elif sum(sum(l.values()) for l in self.stats.values()) == 0:
   70    -1 			print(colored('No tests found', 'YELLOW'))
   71    -1 			return 5
   72    -1 
   73    62 	def enter_suite(self, name):
   74    63 		self._print(name)
   75    64 		self.stack.append(name)
   76    65 
   77    -1 	def leave_suite(self, name):
   78    -1 		self.stack.pop()
   79    -1 
   80    66 	def test(self, name, err, status, level):
   -1    67 		self.total += 1
   81    68 		self.stats[level].setdefault(status, 0)
   82    69 		self.stats[level][status] += 1
   83    70 
   84    71 		if level == 'SUCCESS':
   85    -1 			self._print(self.render_level('', level, status) + colored(name, 'DIM'))
   -1    72 			self._print(self._render('', level, status) + colored(name, 'DIM'))
   86    73 		else:
   87    -1 			self._print(self.render_level(name, level, status))
   -1    74 			self._print(self._render(name, level, status))
   88    75 
   89    76 		if err and str(err):
   90    77 			self._print('    %s' % err)
   -1    78 
   -1    79 	def leave_suite(self, name):
   -1    80 		self.stack.pop()
   -1    81 
   -1    82 	def leave_run(self):
   -1    83 		if self.total == 0:
   -1    84 			print(colored('No tests found', 'YELLOW'))
   -1    85 			return 5
   -1    86 
   -1    87 		print()
   -1    88 		for level in ['SUCCESS', 'INFO', 'WARNING', 'ERROR']:
   -1    89 			for status, count in sorted(self.stats[level].items()):
   -1    90 				print(self._render('%i %s' % (count, status), level, status))
   -1    91 
   -1    92 		if sum(self.stats['ERROR'].values()) != 0:
   -1    93 			return 1