From 12b830a1048ac1a1e33a315fe0b9145f5b9fe2a4 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 9 Mar 2024 11:33:27 +0000 Subject: [PATCH] cmdtest.py: add/improve expect strings for non-zero exit_vals --- mmgen/data/version | 2 +- test/cmdtest_py_d/ct_automount.py | 31 ++++++++++++++++--------------- test/cmdtest_py_d/ct_cfgfile.py | 14 +++++++++----- test/cmdtest_py_d/ct_seedsplit.py | 24 ++++++++++++------------ 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/mmgen/data/version b/mmgen/data/version index 12925bf9..3e7a08ce 100644 --- a/mmgen/data/version +++ b/mmgen/data/version @@ -1 +1 @@ -14.1.dev19 +14.1.dev20 diff --git a/test/cmdtest_py_d/ct_automount.py b/test/cmdtest_py_d/ct_automount.py index 591db0e2..1dcb4c58 100755 --- a/test/cmdtest_py_d/ct_automount.py +++ b/test/cmdtest_py_d/ct_automount.py @@ -82,7 +82,7 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet) self.opts.append('--alice') - def _alice_txcreate(self, chg_addr, opts=[], exit_val=0): + def _alice_txcreate(self, chg_addr, opts=[], exit_val=0, expect=None): self.insert_device_online() sid = self._user_sid('alice') t = self.spawn( @@ -100,6 +100,8 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet) inputs = '1', interactive_fee = '32s', file_desc = 'Unsigned automount transaction') + if expect: + t.expect(expect) t.read() self.remove_device_online() return t @@ -117,41 +119,40 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet) return 'skip' return self._alice_txcreate(chg_addr='L:4') - def _alice_txsend_abort(self, err=False, user_exit=False, del_expect=[]): + def _alice_txsend_abort(self, err=False, send_resp='y', expect=None, shred_expect=[]): self.insert_device_online() t = self.spawn( 'mmgen-txsend', ['--quiet', '--abort'], - exit_val = 2 if err else 1 if user_exit else None) + exit_val = 2 if err else 1 if send_resp == 'n' else None) if err: - t.expect('No unsent transactions') + t.expect(expect) else: - t.expect('(y/N): ', 'n' if user_exit else 'y') - if user_exit: - t.expect('Exiting at user request') - else: - for pat in del_expect: - t.expect(pat, regex=True) + t.expect('(y/N): ', send_resp) + if expect: + t.expect(expect) + for pat in shred_expect: + t.expect(pat, regex=True) self.remove_device_online() return t def alice_txsend_abort1(self): - return self._alice_txsend_abort(del_expect=['Shredding .*arawtx']) + return self._alice_txsend_abort(shred_expect=['Shredding .*arawtx']) def alice_txsend_abort2(self): - return self._alice_txsend_abort(err=True) + return self._alice_txsend_abort(err=True, expect='No unsent transactions') def alice_txsend_abort3(self): - return self._alice_txsend_abort(user_exit=True) + return self._alice_txsend_abort(send_resp='n', expect='Exiting at user request') def alice_txsend_abort4(self): self._wait_signed('transaction') - return self._alice_txsend_abort(del_expect=[r'Shredding .*arawtx', r'Shredding .*asigtx']) + return self._alice_txsend_abort(shred_expect=[r'Shredding .*arawtx', r'Shredding .*asigtx']) alice_txsend_abort5 = alice_txsend_abort2 def alice_txcreate_bad_have_unsigned(self): - return self._alice_txcreate(chg_addr='C:5', exit_val=2) + return self._alice_txcreate(chg_addr='C:5', exit_val=2, expect='already present') def copy_wallet(self): self.spawn('', msg_only=True) diff --git a/test/cmdtest_py_d/ct_cfgfile.py b/test/cmdtest_py_d/ct_cfgfile.py index 9992712c..ff5333ff 100755 --- a/test/cmdtest_py_d/ct_cfgfile.py +++ b/test/cmdtest_py_d/ct_cfgfile.py @@ -155,9 +155,11 @@ class CmdTestCfgFile(CmdTestBase): def old_sample_bad_var(self): d = ['foo true','bar false'] write_to_file(self.path('usr'),'\n'.join(d) + '\n') - return self.old_sample_common( + t = self.old_sample_common( old_set = True, pexpect_spawn = not sys.platform == 'win32') + t.expect('unrecognized option') + return t def _autoset_opts(self, args=[], text='rpc_backend aiohttp\n', exit_val=None): write_to_file( self.path('usr'), text ) @@ -170,14 +172,16 @@ class CmdTestCfgFile(CmdTestBase): def autoset_opts_cmdline(self): return self._autoset_opts(args=['--rpc-backend=curl','autoset_opts_cmdline']) - def _autoset_opts_bad(self,kwargs): - return self._autoset_opts(exit_val=1, **kwargs) + def _autoset_opts_bad(self, expect, kwargs): + t = self._autoset_opts(exit_val=1, **kwargs) + t.expect(expect) + return t def autoset_opts_bad(self): - return self._autoset_opts_bad({'text':'rpc_backend foo\n'}) + return self._autoset_opts_bad('not unique substring', {'text':'rpc_backend foo\n'}) def autoset_opts_bad_cmdline(self): - return self._autoset_opts_bad({'args':['--rpc-backend=foo']}) + return self._autoset_opts_bad('not unique substring', {'args':['--rpc-backend=foo']}) def coin_specific_vars(self): """ diff --git a/test/cmdtest_py_d/ct_seedsplit.py b/test/cmdtest_py_d/ct_seedsplit.py index e73b9dd9..0e3876b9 100755 --- a/test/cmdtest_py_d/ct_seedsplit.py +++ b/test/cmdtest_py_d/ct_seedsplit.py @@ -243,7 +243,7 @@ class CmdTestSeedSplit(CmdTestBase): def ss_bad_invocation(self,cmd,args,exit_val,errmsg): t = self.spawn(cmd, args, exit_val=exit_val) - t.expect(errmsg) + t.expect(errmsg, regex=True) return t def ss_3way_join_dfl_bad_invocation(self): @@ -256,44 +256,44 @@ class CmdTestSeedSplit(CmdTestBase): def ss_bad_invocation1(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',[],1,'MMGenSystemExit(1)') + 'mmgen-seedsplit', [], 1, 'USAGE:') def ss_bad_invocation2(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',['-M1','1:9'],1,'MMGenSystemExit(1)') + 'mmgen-seedsplit', ['-M1', '1:9'], 1, 'meaningless in master share context') def ss_bad_invocation3(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',[self.tmpdir+'/no.mmdat','1:9'],1,'FileNotFound') + 'mmgen-seedsplit', [self.tmpdir+'/no.mmdat', '1:9'], 1, 'input file .* not found') def ss_bad_invocation4(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:9'],1,'BadFileExtension') + 'mmgen-seedsplit', [self.tmpdir+'/dfl.sid', '1:9'], 1, 'unrecognized .* extension') def ss_bad_invocation5(self): return self.ss_bad_invocation( - 'mmgen-seedjoin',[],1,'MMGenSystemExit(1)') + 'mmgen-seedjoin', [], 1, 'USAGE:') def ss_bad_invocation6(self): return self.ss_bad_invocation( - 'mmgen-seedjoin',[self.tmpdir+'/a'],1,'MMGenSystemExit(1)') + 'mmgen-seedjoin', [self.tmpdir+'/a'], 1, 'USAGE:') def ss_bad_invocation7(self): return self.ss_bad_invocation( - 'mmgen-seedjoin',[self.tmpdir+'/a',self.tmpdir+'/b'],1,'BadFileExtension') + 'mmgen-seedjoin', [self.tmpdir+'/a', self.tmpdir+'/b'], 1, 'unrecognized .* extension') def ss_bad_invocation8(self): return self.ss_bad_invocation( - 'mmgen-seedjoin',[self.tmpdir+'/a.mmdat',self.tmpdir+'/b.mmdat'],1,'FileNotFound') + 'mmgen-seedjoin', [self.tmpdir+'/a.mmdat', self.tmpdir+'/b.mmdat'], 1, 'input file .* not found') def ss_bad_invocation9(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',['x'],1,'MMGenSystemExit(1)') + 'mmgen-seedsplit', ['x'], 1, 'USAGE:') def ss_bad_invocation10(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',[self.tmpdir+'/a.mmdat','1:2'],1,'FileNotFound') + 'mmgen-seedsplit', [self.tmpdir+'/a.mmdat', '1:2'], 1, 'input file .* not found') def ss_bad_invocation11(self): return self.ss_bad_invocation( - 'mmgen-seedsplit',[self.tmpdir+'/dfl.sid','1:2'],1,'BadFileExtension') + 'mmgen-seedsplit', [self.tmpdir+'/dfl.sid', '1:2'], 1, 'unrecognized .* extension')