Browse Source

test.py: always check output when spawned script exits with non-zero value

The MMGen Project 3 years ago
parent
commit
2061d109cc

+ 5 - 0
mmgen/main.py

@@ -58,3 +58,8 @@ def launch(mod):
 				][e.mmcode if hasattr(e,'mmcode') else 0]
 				][e.mmcode if hasattr(e,'mmcode') else 0]
 
 
 			d[0](d[1],d[2].format(n=type(e).__name__,m=m))
 			d[0](d[1],d[2].format(n=type(e).__name__,m=m))
+	except SystemExit as e:
+		if os.getenv('MMGEN_EXEC_WRAPPER') and e.code != 0:
+			from mmgen.color import red
+			sys.stdout.write(red(f'{type(e).__name__}: {e}\n'))
+		raise

+ 5 - 11
test/test_py_d/ts_ethdev.py

@@ -486,11 +486,9 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 		fn = self.get_file_with_ext(ext,no_dot=True,delete=False)
 		fn = self.get_file_with_ext(ext,no_dot=True,delete=False)
 		t = self.spawn('mmgen-addrimport', self.eth_args[1:-1] + add_args + [fn])
 		t = self.spawn('mmgen-addrimport', self.eth_args[1:-1] + add_args + [fn])
 		if bad_input:
 		if bad_input:
-			t.read()
 			return t
 			return t
 		t.expect('Importing')
 		t.expect('Importing')
 		t.expect(expect)
 		t.expect(expect)
-		t.read()
 		return t
 		return t
 
 
 	def addrimport_one_addr(self,addr=None,extra_args=[]):
 	def addrimport_one_addr(self,addr=None,extra_args=[]):
@@ -637,7 +635,6 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 		t.expect(expect_str)
 		t.expect(expect_str)
 		if expect_str2:
 		if expect_str2:
 			t.expect(expect_str2)
 			t.expect(expect_str2)
-		t.read()
 		t.req_exit_val = exit_val
 		t.req_exit_val = exit_val
 		return t
 		return t
 
 
@@ -898,11 +895,13 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 
 
 	def token_addrimport_badaddr1(self):
 	def token_addrimport_badaddr1(self):
 		t = self.addrimport(ext='[11-13]{}.regtest.addrs',add_args=['--token=abc'],bad_input=True)
 		t = self.addrimport(ext='[11-13]{}.regtest.addrs',add_args=['--token=abc'],bad_input=True)
+		t.expect('could not be resolved')
 		t.req_exit_val = 2
 		t.req_exit_val = 2
 		return t
 		return t
 
 
 	def token_addrimport_badaddr2(self):
 	def token_addrimport_badaddr2(self):
 		t = self.addrimport(ext='[11-13]{}.regtest.addrs',add_args=['--token='+'00deadbeef'*4],bad_input=True)
 		t = self.addrimport(ext='[11-13]{}.regtest.addrs',add_args=['--token='+'00deadbeef'*4],bad_input=True)
+		t.expect('could not be resolved')
 		t.req_exit_val = 2
 		t.req_exit_val = 2
 		return t
 		return t
 
 
@@ -967,12 +966,10 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 	def token_bal2(self):
 	def token_bal2(self):
 		return self.token_bal(n='2')
 		return self.token_bal(n='2')
 
 
-	def twview(self,args=[],expect_str='',tool_args=[],exit_val=0):
+	def twview(self,args=[],expect_str='',tool_args=[]):
 		t = self.spawn('mmgen-tool', self.eth_args + args + ['twview'] + tool_args)
 		t = self.spawn('mmgen-tool', self.eth_args + args + ['twview'] + tool_args)
 		if expect_str:
 		if expect_str:
 			t.expect(expect_str,regex=True)
 			t.expect(expect_str,regex=True)
-		t.read()
-		t.req_exit_val = exit_val
 		return t
 		return t
 
 
 	def token_txcreate2(self):
 	def token_txcreate2(self):
@@ -1024,11 +1021,8 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 	def bal9(self):       return self.bal(n='9')
 	def bal9(self):       return self.bal(n='9')
 	def token_bal6(self): return self.token_bal(n='6')
 	def token_bal6(self): return self.token_bal(n='6')
 
 
-	def listaddresses(self,args=[],tool_args=['all_labels=1'],exit_val=0):
-		t = self.spawn('mmgen-tool', self.eth_args + args + ['listaddresses'] + tool_args)
-		t.read()
-		t.req_exit_val = exit_val
-		return t
+	def listaddresses(self,args=[],tool_args=['all_labels=1']):
+		return self.spawn('mmgen-tool', self.eth_args + args + ['listaddresses'] + tool_args)
 
 
 	def listaddresses1(self):
 	def listaddresses1(self):
 		return self.listaddresses()
 		return self.listaddresses()

+ 1 - 0
test/test_py_d/ts_misc.py

@@ -59,6 +59,7 @@ class TestSuiteHelp(TestSuiteBase):
 	def usage(self):
 	def usage(self):
 		t = self.spawn(f'mmgen-walletgen',['foo'])
 		t = self.spawn(f'mmgen-walletgen',['foo'])
 		t.expect('USAGE: mmgen-walletgen')
 		t.expect('USAGE: mmgen-walletgen')
+		t.expect('SystemExit: 1')
 		t.req_exit_val = 1
 		t.req_exit_val = 1
 		return t
 		return t
 
 

+ 1 - 2
test/test_py_d/ts_regtest.py

@@ -469,13 +469,12 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
 
 
 	def bob_twview1(self): return self.user_twview('bob', chk = ('1',rtAmts[0]) )
 	def bob_twview1(self): return self.user_twview('bob', chk = ('1',rtAmts[0]) )
 
 
-	def user_bal(self,user,bal,args=['showempty=1'],skip_check=False,exit_val=0):
+	def user_bal(self,user,bal,args=['showempty=1'],skip_check=False):
 		t = self.spawn('mmgen-tool',['--'+user,'listaddresses'] + args)
 		t = self.spawn('mmgen-tool',['--'+user,'listaddresses'] + args)
 		if skip_check:
 		if skip_check:
 			t.read()
 			t.read()
 		else:
 		else:
 			cmp_or_die(f'{bal} {self.proto.coin}',strip_ansi_escapes(t.expect_getend('TOTAL: ')))
 			cmp_or_die(f'{bal} {self.proto.coin}',strip_ansi_escapes(t.expect_getend('TOTAL: ')))
-		t.req_exit_val = exit_val
 		return t
 		return t
 
 
 	def alice_bal1(self):
 	def alice_bal1(self):

+ 36 - 14
test/test_py_d/ts_seedsplit.py

@@ -134,7 +134,6 @@ class TestSuiteSeedSplit(TestSuiteBase):
 				+ (['--label','Joined Wallet Label','-r0'] if ofmt == 'w' else [])
 				+ (['--label','Joined Wallet Label','-r0'] if ofmt == 'w' else [])
 				+ shares)
 				+ shares)
 		if bad_invocation:
 		if bad_invocation:
-			t.read()
 			return t
 			return t
 		icls = ( MMGenWallet if 'mmdat' in in_exts
 		icls = ( MMGenWallet if 'mmdat' in in_exts
 			else IncogWallet if 'mmincog' in in_exts
 			else IncogWallet if 'mmincog' in in_exts
@@ -209,10 +208,10 @@ class TestSuiteSeedSplit(TestSuiteBase):
 		return self.ss_join(self.tdir2,'seed', ['mmhex','bip39'],
 		return self.ss_join(self.tdir2,'seed', ['mmhex','bip39'],
 							['-H',self.get_hincog_arg(self.tdir2,'-master7')],master=7,id_str='φυβαρ')
 							['-H',self.get_hincog_arg(self.tdir2,'-master7')],master=7,id_str='φυβαρ')
 
 
-	def ss_bad_invocation(self,cmd,args,exit_val):
+	def ss_bad_invocation(self,cmd,args,exit_val,errmsg):
 		t = self.spawn(cmd,args)
 		t = self.spawn(cmd,args)
-		t.read()
 		t.req_exit_val = exit_val
 		t.req_exit_val = exit_val
+		t.expect(errmsg)
 		return t
 		return t
 
 
 	def ss_3way_join_dfl_bad_invocation(self):
 	def ss_3way_join_dfl_bad_invocation(self):
@@ -220,28 +219,51 @@ class TestSuiteSeedSplit(TestSuiteBase):
 				['mmwords','mmincox','bip39'],
 				['mmwords','mmincox','bip39'],
 				id_str='foo',
 				id_str='foo',
 				bad_invocation=True)
 				bad_invocation=True)
+		t.expect('option meaningless')
 		t.req_exit_val = 1
 		t.req_exit_val = 1
 		return t
 		return t
 
 
+
 	def ss_bad_invocation1(self):
 	def ss_bad_invocation1(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',[],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',[],1,'SystemExit: 1')
+
 	def ss_bad_invocation2(self):
 	def ss_bad_invocation2(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',['-M1','1:9'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',['-M1','1:9'],1,'SystemExit: 1')
+
 	def ss_bad_invocation3(self):
 	def ss_bad_invocation3(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',[self.tmpdir+'/no.mmdat','1:9'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',[self.tmpdir+'/no.mmdat','1:9'],1,'exception.FileNotFound')
+
 	def ss_bad_invocation4(self):
 	def ss_bad_invocation4(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:9'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:9'],1,'exception.BadFileExtension')
+
 	def ss_bad_invocation5(self):
 	def ss_bad_invocation5(self):
-		return self.ss_bad_invocation('mmgen-seedjoin',[],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedjoin',[],1,'SystemExit: 1')
+
 	def ss_bad_invocation6(self):
 	def ss_bad_invocation6(self):
-		return self.ss_bad_invocation('mmgen-seedjoin',[self.tmpdir+'/a'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedjoin',[self.tmpdir+'/a'],1,'SystemExit: 1')
+
 	def ss_bad_invocation7(self):
 	def ss_bad_invocation7(self):
-		return self.ss_bad_invocation('mmgen-seedjoin',[self.tmpdir+'/a',self.tmpdir+'/b'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedjoin',[self.tmpdir+'/a',self.tmpdir+'/b'],1,'exception.BadFileExtension')
+
 	def ss_bad_invocation8(self):
 	def ss_bad_invocation8(self):
-		return self.ss_bad_invocation('mmgen-seedjoin',[self.tmpdir+'/a.mmdat',self.tmpdir+'/b.mmdat'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedjoin',[self.tmpdir+'/a.mmdat',self.tmpdir+'/b.mmdat'],1,'exception.FileNotFound')
+
 	def ss_bad_invocation9(self):
 	def ss_bad_invocation9(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',['x'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',['x'],1,'SystemExit: 1')
+
 	def ss_bad_invocation10(self):
 	def ss_bad_invocation10(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',[self.tmpdir+'/a.mmdat','1:2'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',[self.tmpdir+'/a.mmdat','1:2'],1,'exception.FileNotFound')
+
 	def ss_bad_invocation11(self):
 	def ss_bad_invocation11(self):
-		return self.ss_bad_invocation('mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:2'],1)
+		return self.ss_bad_invocation(
+			'mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:2'],1,'exception.BadFileExtension')

+ 1 - 1
test/test_py_d/ts_tool.py

@@ -81,7 +81,7 @@ class TestSuiteTool(TestSuiteMain,TestSuiteBase):
 	def tool_twview_bad_comment(self): # test correct operation of get_tw_label()
 	def tool_twview_bad_comment(self): # test correct operation of get_tw_label()
 		os.environ['MMGEN_BOGUS_WALLET_DATA'] = joinpath(ref_dir,'bad-comment-unspent.json')
 		os.environ['MMGEN_BOGUS_WALLET_DATA'] = joinpath(ref_dir,'bad-comment-unspent.json')
 		t = self.spawn('mmgen-tool',['twview'])
 		t = self.spawn('mmgen-tool',['twview'])
-		t.read()
+		t.expect('cannot be converted to TwComment')
 		t.req_exit_val = 2
 		t.req_exit_val = 2
 		return t
 		return t