test.py regtest: add color support

This commit is contained in:
The MMGen Project 2020-06-04 16:50:25 +00:00
commit 53cffc64db
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
4 changed files with 67 additions and 35 deletions

View file

@ -698,7 +698,7 @@ class TestSuiteRunner(object):
self.ts.test_name,
cmd_disp))
os.environ['MMGEN_FORCE_COLOR'] = ('1' if self.ts.color else '')
os.environ['MMGEN_FORCE_COLOR'] = ('1' if self.ts.color and g.platform == 'linux' else '')
from test.include.pexpect import MMGenPexpect
return MMGenPexpect(args,no_output=no_output)

View file

@ -553,7 +553,7 @@ class TestSuiteMain(TestSuiteBase,TestSuiteShared):
f,t = self._walletconv_export(wf,out_fmt=out_fmt,pf=pf)
silence()
wcls = Wallet.fmt_code_to_type(out_fmt)
msg('{}: {}'.format(capfirst(wcls.desc),cyan(get_data_from_file(f,wcls.desc))))
msg('==> {}: {}'.format(wcls.desc,cyan(get_data_from_file(f,wcls.desc))))
end_silence()
return t

View file

@ -140,6 +140,7 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
passthru_opts = ('coin',)
extra_spawn_args = ['--regtest=1']
tmpdir_nums = [17]
color = True
cmd_group = (
('setup', 'regtest (Bob and Alice) mode setup'),
('current_user', 'current user'),
@ -231,11 +232,11 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
('alice_add_label_badaddr2', 'adding a label with invalid address for this chain'),
('alice_add_label_badaddr3', 'adding a label with wrong MMGen address'),
('alice_add_label_badaddr4', 'adding a label with wrong coin address'),
('alice_listaddresses', 'listaddresses'),
('alice_listaddresses1', 'listaddresses'),
('alice_listaddresses_days', 'listaddresses (age_fmt=days)'),
('alice_listaddresses_date', 'listaddresses (age_fmt=date)'),
('alice_listaddresses_date_time', 'listaddresses (age_fmt=date_time)'),
('alice_twview', 'twview'),
('alice_twview1', 'twview'),
('alice_twview_days', 'twview (age_fmt=days)'),
('alice_twview_date', 'twview (age_fmt=date)'),
('alice_twview_date_time', 'twview (age_fmt=date_time)'),
@ -378,20 +379,21 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
def fund_alice(self):
return self.fund_wallet('alice',('L','S')[self.proto.cap('segwit')],rtFundAmt)
def user_twview(self,user,chk=None,sort='age'):
def user_twview(self,user,chk,sort='age'):
t = self.spawn('mmgen-tool',['--'+user,'twview','sort='+sort])
if chk: t.expect(chk,regex=True)
if chk:
t.expect(r'{}\b.*\D{}\b'.format(*chk),regex=True)
t.read()
return t
def bob_twview1(self): return self.user_twview('bob',chk=r'1\).*\b{}\b'.format(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):
t = self.spawn('mmgen-tool',['--'+user,'listaddresses'] + args)
if skip_check:
t.read()
else:
cmp_or_die(f'{bal} {self.proto.coin}',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
@ -460,11 +462,11 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
def bob_twview2(self):
sid1 = self._get_user_subsid('bob','29L')
return self.user_twview('bob',chk=r'\b{}:C:2\b\s+{}'.format(sid1,'0.29'),sort='twmmid')
return self.user_twview('bob',chk=(sid1+':C:2','0.29'),sort='twmmid')
def bob_twview3(self):
sid2 = self._get_user_subsid('bob','127S')
return self.user_twview('bob',chk=r'\b{}:C:3\b\s+{}'.format(sid2,'0.127'),sort='amt')
return self.user_twview('bob',chk=(sid2+':C:3','0.127'),sort='amt')
def bob_subwallet_txcreate(self):
sid1 = self._get_user_subsid('bob','29L')
@ -494,14 +496,20 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
def bob_twview4(self):
sid = self._user_sid('bob')
amt = ('0.4169328','0.41364')[self.proto.coin=='LTC']
return self.user_twview('bob',chk=r'\b{}:L:5\b\s+.*\s+\b{}\b'.format(sid,amt),sort='twmmid')
return self.user_twview('bob',chk=(sid+':L:5',amt),sort='twmmid')
def bob_getbalance(self,bals,confs=1):
for i in (0,1,2):
assert Decimal(bals['mmgen'][i]) + Decimal(bals['nonmm'][i]) == Decimal(bals['total'][i])
t = self.spawn('mmgen-tool',['--bob','getbalance','minconf={}'.format(confs)])
t.expect('Wallet')
for k in ('mmgen','nonmm','total'):
t.expect(r'\n\S+:\s+{} {c}\s+{} {c}\s+{} {c}'.format(*bals[k],c=self.proto.coin),regex=True)
ret = strip_ansi_escapes(t.expect_getend(r'\S+: ',regex=True))
cmp_or_die(
' '.join(bals[k]),
re.sub(rf'\s+{self.proto.coin}\s*',' ',ret).strip(),
desc=k,
)
t.read()
return t
@ -799,13 +807,14 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
def _user_chk_label(self,user,addr,label):
t = self.spawn('mmgen-tool',['--'+user,'listaddresses','all_labels=1'])
t.expect(r'{}\s+\S{{30}}\S+\s+{}\s+'.format(addr,label),regex=True)
ret = strip_ansi_escapes(t.expect_getend(addr)).strip().split(None,1)[1]
cmp_or_die(ret[:len(label)],label)
return t
def alice_add_label_coinaddr(self):
mmid = self._user_sid('alice') + (':S:1',':L:1')[self.proto.coin=='BCH']
t = self.spawn('mmgen-tool',['--alice','listaddress',mmid],no_msg=True)
addr = [i for i in t.read().splitlines() if i.startswith(mmid)][0].split()[1]
addr = [i for i in strip_ansi_escapes(t.read()).splitlines() if i.startswith(mmid)][0].split()[1]
return self.user_add_label('alice',addr,'Label added using coin address of MMGen address')
def alice_chk_label_coinaddr(self):
@ -877,50 +886,73 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
t.expect(r'\[q\]uit view, .*?:.','q',regex=True)
return t
def alice_listaddresses(self,args=[],expect=None):
expect = expect or rf'{rtAmts[1]}\b'
def alice_listaddresses(self,args,expect):
t = self.spawn('mmgen-tool',['--alice','listaddresses','showempty=1'] + args)
t.expect(expect,regex=True)
expect_str = r'\D{}\D.*\b{}'.format(*expect)
t.expect(expect_str,regex=True)
t.read()
return t
def alice_listaddresses1(self):
return self.alice_listaddresses(
args = [],
expect = (rtAmts[1],r'\d+') )
def alice_listaddresses_days(self):
return self.alice_listaddresses(args=['age_fmt=days'],expect=rf'{rtAmts[1]}\s+\d+\b')
return self.alice_listaddresses(
args = ['age_fmt=days'],
expect = (rtAmts[1],r'\d+') )
def alice_listaddresses_date(self):
return self.alice_listaddresses(args=['age_fmt=date'],expect=rf'{rtAmts[1]}\s+'+pat_date)
return self.alice_listaddresses(
args = ['age_fmt=date'],
expect = (rtAmts[1],pat_date) )
def alice_listaddresses_date_time(self):
return self.alice_listaddresses(
args=['age_fmt=date_time'],
expect=rf'{rtAmts[1]}\s+'+pat_date_time)
args = ['age_fmt=date_time'],
expect = (rtAmts[1],pat_date_time) )
def alice_twview(self,args=[],expect=None):
expect = expect or rf'{rtAmts[0]}\b'
def alice_twview(self,args,expect):
t = self.spawn('mmgen-tool',['--alice','twview'] + args)
t.expect(expect,regex=True)
expect_str = r'\D{}\D.*\b{}'.format(*expect)
t.expect(expect_str,regex=True)
t.read()
return t
def alice_twview1(self):
return self.alice_twview(
args = [],
expect = (rtAmts[0],r'\d+') )
def alice_twview_days(self):
return self.alice_twview(args=['age_fmt=days'],expect=rf'{rtAmts[0]}\s+\d+\b')
return self.alice_twview(
args = ['age_fmt=days'],
expect = (rtAmts[0],r'\d+') )
def alice_twview_date(self):
return self.alice_twview(args=['age_fmt=date'],expect=rf'{rtAmts[0]}\s+'+pat_date)
return self.alice_twview(
args = ['age_fmt=date'],
expect = (rtAmts[0],pat_date) )
def alice_twview_date_time(self):
return self.alice_twview(args=['age_fmt=date_time'],expect=rf'{rtAmts[0]}\s+'+pat_date_time)
return self.alice_twview(
args = ['age_fmt=date_time'],
expect = (rtAmts[0],pat_date_time) )
def alice_txcreate_info(self,args=[]):
t = self.spawn('mmgen-txcreate',['--alice','-Bi'])
for e,s in (
(rf'{rtAmts[0]}\s+\d+\b','D'),
(rf'{rtAmts[0]}\s+\d+\b','D'),
(rf'{rtAmts[0]}\s+\d+\b','D'),
(rf'{rtAmts[0]}\s+'+pat_date,'w'),
(rf'{rtAmts[0]}\s+\d+\s+\d+\s+'+pat_date_time,'q'),
for d,s in (
( '\d+', 'D'),
( '\d+', 'D'),
( '\d+', 'D'),
( pat_date, 'w'),
( '\d+\s+\d+\s+'+pat_date_time,'q'),
):
t.expect(e,s,regex=True)
t.expect(
r'\D{}\D.*\b{}\b'.format(rtAmts[0],d),
s,
regex=True )
t.read()
return t

View file

@ -133,7 +133,7 @@ class TestSuiteShared(object):
txid = ''
t.expect('BOGUS transaction NOT sent')
else:
txid = t.expect_getend('Transaction sent: ')
txid = strip_ansi_escapes(t.expect_getend('Transaction sent: '))
assert len(txid) == 64,"'{}': Incorrect txid length!".format(txid)
t.written_to_file(file_desc)