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

This commit is contained in:
The MMGen Project 2022-02-05 13:32:55 +00:00
commit 2061d109cc
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
6 changed files with 49 additions and 28 deletions

View file

@ -58,3 +58,8 @@ def launch(mod):
][e.mmcode if hasattr(e,'mmcode') else 0]
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

View file

@ -486,11 +486,9 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
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])
if bad_input:
t.read()
return t
t.expect('Importing')
t.expect(expect)
t.read()
return t
def addrimport_one_addr(self,addr=None,extra_args=[]):
@ -637,7 +635,6 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
t.expect(expect_str)
if expect_str2:
t.expect(expect_str2)
t.read()
t.req_exit_val = exit_val
return t
@ -898,11 +895,13 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
def token_addrimport_badaddr1(self):
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
return t
def token_addrimport_badaddr2(self):
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
return t
@ -967,12 +966,10 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
def token_bal2(self):
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)
if expect_str:
t.expect(expect_str,regex=True)
t.read()
t.req_exit_val = exit_val
return t
def token_txcreate2(self):
@ -1024,11 +1021,8 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
def bal9(self): return self.bal(n='9')
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):
return self.listaddresses()

View file

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

View file

@ -469,13 +469,12 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
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)
if skip_check:
t.read()
else:
cmp_or_die(f'{bal} {self.proto.coin}',strip_ansi_escapes(t.expect_getend('TOTAL: ')))
t.req_exit_val = exit_val
return t
def alice_bal1(self):

View file

@ -134,7 +134,6 @@ class TestSuiteSeedSplit(TestSuiteBase):
+ (['--label','Joined Wallet Label','-r0'] if ofmt == 'w' else [])
+ shares)
if bad_invocation:
t.read()
return t
icls = ( MMGenWallet if 'mmdat' 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'],
['-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.read()
t.req_exit_val = exit_val
t.expect(errmsg)
return t
def ss_3way_join_dfl_bad_invocation(self):
@ -220,28 +219,51 @@ class TestSuiteSeedSplit(TestSuiteBase):
['mmwords','mmincox','bip39'],
id_str='foo',
bad_invocation=True)
t.expect('option meaningless')
t.req_exit_val = 1
return t
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):
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):
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):
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):
return self.ss_bad_invocation('mmgen-seedjoin',[],1)
return self.ss_bad_invocation(
'mmgen-seedjoin',[],1,'SystemExit: 1')
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):
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):
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):
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):
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):
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')

View file

@ -81,7 +81,7 @@ class TestSuiteTool(TestSuiteMain,TestSuiteBase):
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')
t = self.spawn('mmgen-tool',['twview'])
t.read()
t.expect('cannot be converted to TwComment')
t.req_exit_val = 2
return t