From 53cffc64dbe8fce06e72f31df9589eea417a563f Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Thu, 4 Jun 2020 16:50:25 +0000 Subject: [PATCH] test.py regtest: add color support --- test/test.py | 2 +- test/test_py_d/ts_main.py | 2 +- test/test_py_d/ts_regtest.py | 96 ++++++++++++++++++++++++------------ test/test_py_d/ts_shared.py | 2 +- 4 files changed, 67 insertions(+), 35 deletions(-) diff --git a/test/test.py b/test/test.py index 4d7a961a..df8a8489 100755 --- a/test/test.py +++ b/test/test.py @@ -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) diff --git a/test/test_py_d/ts_main.py b/test/test_py_d/ts_main.py index 5c675c2d..7f46cac5 100755 --- a/test/test_py_d/ts_main.py +++ b/test/test_py_d/ts_main.py @@ -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 diff --git a/test/test_py_d/ts_regtest.py b/test/test_py_d/ts_regtest.py index 3026b03a..8ab0e502 100755 --- a/test/test_py_d/ts_regtest.py +++ b/test/test_py_d/ts_regtest.py @@ -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 diff --git a/test/test_py_d/ts_shared.py b/test/test_py_d/ts_shared.py index 622bceb2..d71d9ae5 100755 --- a/test/test_py_d/ts_shared.py +++ b/test/test_py_d/ts_shared.py @@ -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)