Browse Source

CmdTestRunner: add `warn()` method

The MMGen Project 6 months ago
parent
commit
78db0a8156
2 changed files with 18 additions and 5 deletions
  1. 1 2
      test/cmdtest_d/ethdev.py
  2. 17 3
      test/cmdtest_d/include/runner.py

+ 1 - 2
test/cmdtest_d/ethdev.py

@@ -1184,8 +1184,7 @@ class CmdTestEthdev(CmdTestEthdevMethods, CmdTestBase, CmdTestShared):
 		imsg(f'Message:   {self.message}')
 		imsg(f'Message:   {self.message}')
 		imsg(f'Signature: {sig}')
 		imsg(f'Signature: {sig}')
 		if sig != sig_chk:
 		if sig != sig_chk:
-			msg(yellow('Warning: Geth and MMGen signatures don’t match!'))
-			time.sleep(2)
+			self.tr.warn('MMGen signature doesn’t match reference signature from Geth daemon')
 
 
 		return 'ok'
 		return 'ok'
 
 

+ 17 - 3
test/cmdtest_d/include/runner.py

@@ -16,7 +16,7 @@ import sys, os, time, asyncio
 
 
 from mmgen.cfg import gc
 from mmgen.cfg import gc
 from mmgen.color import red, yellow, green, blue, cyan, gray, nocolor
 from mmgen.color import red, yellow, green, blue, cyan, gray, nocolor
-from mmgen.util import msg, Msg, rmsg, bmsg, die, suf, make_timestr
+from mmgen.util import msg, Msg, rmsg, ymsg, bmsg, die, suf, make_timestr
 
 
 from ...include.common import (
 from ...include.common import (
 	cmdtest_py_log_fn,
 	cmdtest_py_log_fn,
@@ -58,6 +58,7 @@ class CmdTestRunner:
 		self.rebuild_list = {}
 		self.rebuild_list = {}
 		self.gm = CmdGroupMgr(cfg)
 		self.gm = CmdGroupMgr(cfg)
 		self.repo_root = repo_root
 		self.repo_root = repo_root
+		self.warnings = []
 		self.skipped_warnings = []
 		self.skipped_warnings = []
 		self.resume_cmd = None
 		self.resume_cmd = None
 		self.deps_only = None
 		self.deps_only = None
@@ -489,6 +490,10 @@ class CmdTestRunner:
 			print(yellow('The following tests were skipped and may require attention:'))
 			print(yellow('The following tests were skipped and may require attention:'))
 			r = '-' * 72 + '\n'
 			r = '-' * 72 + '\n'
 			print(r+('\n'+r).join(self.skipped_warnings))
 			print(r+('\n'+r).join(self.skipped_warnings))
+		if self.warnings:
+			print(yellow('The following issues were encountered and may require attention:'))
+			r = '-' * 72 + '\n'
+			print(r+('\n'+r).join(self.warnings))
 
 
 	def process_retval(self, cmd, ret):
 	def process_retval(self, cmd, ret):
 		if type(ret).__name__ == 'CmdTestPexpect':
 		if type(ret).__name__ == 'CmdTestPexpect':
@@ -505,11 +510,20 @@ class CmdTestRunner:
 		elif ret == 'error':
 		elif ret == 'error':
 			die(2, red(f'\nTest {self.tg.test_name!r} failed'))
 			die(2, red(f'\nTest {self.tg.test_name!r} failed'))
 		elif isinstance(ret, tuple) and ret[0] == 'skip_warn':
 		elif isinstance(ret, tuple) and ret[0] == 'skip_warn':
-			self.skipped_warnings.append(
-				'Test {!r} was skipped:\n  {}'.format(cmd, '\n  '.join(ret[1].split('\n'))))
+			wmsg = 'Test {!r} was skipped:\n  {}'.format(cmd, '\n  '.join(ret[1].split('\n')))
+			self.skipped_warnings.append(wmsg)
+			if self.logging:
+				self.log_fd.write(f'WARNING: {wmsg}\n')
 		else:
 		else:
 			die(2, f'{cmd!r} returned {ret}')
 			die(2, f'{cmd!r} returned {ret}')
 
 
+	def warn(self, text):
+		ymsg(text)
+		wmsg = 'Test ‘{}:{}’: {}'.format(self.tg.group_name, self.tg.test_name, text)
+		self.warnings.append(wmsg)
+		if self.logging:
+			self.log_fd.write(f'WARNING: {wmsg}\n')
+
 	def check_deps(self, cmds): # TODO: broken, unused
 	def check_deps(self, cmds): # TODO: broken, unused
 		if len(cmds) != 1:
 		if len(cmds) != 1:
 			die(1, f'Usage: {gc.prog_name} check_deps <command>')
 			die(1, f'Usage: {gc.prog_name} check_deps <command>')