Browse Source

test.py: add 'shared_deps' feature

The MMGen Project 5 years ago
parent
commit
768f4b960c
2 changed files with 28 additions and 6 deletions
  1. 26 6
      test/test.py
  2. 2 0
      test/test_py_d/ts_ref_3seed.py

+ 26 - 6
test/test.py

@@ -501,14 +501,24 @@ class CmdGroupMgr(object):
 		cls = self.load_mod(gname,modname)
 		cdata = []
 
+		def get_shared_deps(cmdname,tmpdir_idx):
+			"""
+			shared_deps are "implied" dependencies for all cmds in cmd_group that don't appear in
+			the cmd_group data or cmds' argument lists.  Supported only for 3seed tests at present.
+			"""
+			if not hasattr(cls,'shared_deps'): return []
+			return [k for k,v in cfgs[str(tmpdir_idx)]['dep_generators'].items()
+						if k in cls.shared_deps and v != cmdname]
+
 		for a,b in cls.cmd_group:
 			if is3seed:
 				for n,(i,j) in enumerate(zip(cls.tmpdir_nums,(128,192,256))):
 					k = '{}_{}'.format(a,n+1)
+					sdeps = get_shared_deps(k,i)
 					if type(b) == str:
-						cdata.append( (k, (i,'{} ({}-bit)'.format(b,j),[[[],i]])) )
+						cdata.append( (k, (i,'{} ({}-bit)'.format(b,j),[[[]+sdeps,i]])) )
 					else:
-						cdata.append( (k, (i,'{} ({}-bit)'.format(b[1],j),[[b[0],i]])) )
+						cdata.append( (k, (i,'{} ({}-bit)'.format(b[1],j),[[b[0]+sdeps,i]])) )
 			else:
 				cdata.append( (a, b if full_data else (cls.tmpdir_nums[0],b,[[[],cls.tmpdir_nums[0]]])) )
 
@@ -639,7 +649,7 @@ class TestSuiteRunner(object):
 		m = '{} test{} performed.  Elapsed time: {:02d}:{:02d}\n'
 		sys.stderr.write(green(m.format(self.cmd_total,suf(self.cmd_total),t//60,t%60)))
 
-	def init_group(self,gname,cmd=None):
+	def init_group(self,gname,cmd=None,quiet=False):
 		ts_cls = CmdGroupMgr().load_mod(gname)
 
 		for k in ('segwit','segwit_random','bech32'):
@@ -671,7 +681,8 @@ class TestSuiteRunner(object):
 				iqmsg('INFO → skipping ' + m)
 				return False
 
-		bmsg('Executing ' + m)
+		if not quiet:
+			bmsg('Executing ' + m)
 
 		self.ts = self.gm.gm_init_group(self,gname,self.spawn_wrapper)
 
@@ -682,6 +693,7 @@ class TestSuiteRunner(object):
 
 	def run_tests(self,usr_args):
 		self.start_time = int(time.time())
+		gname_save = None
 		if usr_args:
 			for arg in usr_args:
 				if arg in self.gm.cmd_groups:
@@ -700,10 +712,14 @@ class TestSuiteRunner(object):
 					else:
 						gname = self.gm.find_cmd_in_groups(arg)
 					if gname:
-						if not self.init_group(gname,arg): continue
-						clean(self.ts.tmpdir_nums)
+						same_grp = gname == gname_save # same group as previous cmd: don't clean, suppress blue msg
+						if not self.init_group(gname,arg,quiet=same_grp):
+							continue
+						if not same_grp:
+							clean(self.ts.tmpdir_nums)
 						self.check_needs_rerun(arg,build=True)
 						do_between()
+						gname_save = gname
 					else:
 						die(1,'{!r}: command not recognized'.format(arg))
 		else:
@@ -783,6 +799,10 @@ class TestSuiteRunner(object):
 		# delete files depended on by this cmd
 		arg_list = [get_file_with_ext(cfgs[num]['tmpdir'],ext) for num,ext in d]
 
+		# remove shared_deps from arg list
+		if hasattr(self.ts,'shared_deps'):
+			arg_list = arg_list[:-len(self.ts.shared_deps)]
+
 		if opt.resume:
 			if cmd == opt.resume:
 				bmsg('Resuming at {!r}'.format(cmd))

+ 2 - 0
test/test_py_d/ts_ref_3seed.py

@@ -42,6 +42,7 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
 		'lens': (128, 192, 256),
 		'sids': ('FE3C6545', '1378FC64', '98831F3A'),
 	}
+	shared_deps = ['mmdat',pwfile]
 	cmd_group = (
 		# reading saved reference wallets
 		('ref_wallet_chk',  ([],'saved reference wallet')),
@@ -189,6 +190,7 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
 class TestSuiteRef3Addr(TestSuiteRef3Seed):
 	'generated reference address, key and password files for 128-, 192- and 256-bit seeds'
 	tmpdir_nums = [26,27,28]
+	shared_deps = ['mmdat',pwfile]
 
 	chk_data = {
 		'lens': (128, 192, 256),