From fe3d4500a22f14d5a638c6833b8d74198d010796 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 6 May 2023 15:14:06 +0000 Subject: [PATCH] minor cleanups --- mmgen/autosign.py | 32 +++++++++++++++++-------------- test/include/pexpect.py | 9 ++++++++- test/test.py | 7 +++++-- test/test_py_d/ts_base.py | 7 +++++++ test/test_py_d/ts_xmr_autosign.py | 8 +++----- test/test_py_d/ts_xmrwallet.py | 2 ++ 6 files changed, 43 insertions(+), 22 deletions(-) diff --git a/mmgen/autosign.py b/mmgen/autosign.py index 42ee4b95..0cc30274 100755 --- a/mmgen/autosign.py +++ b/mmgen/autosign.py @@ -51,8 +51,8 @@ class Signable: def _unprocessed(self,attrname,rawext,sigext): if not hasattr(self,attrname): - dirlist = tuple(self.dir.iterdir()) - names = tuple(f.name for f in dirlist) + dirlist = sorted(self.dir.iterdir()) + names = {f.name for f in dirlist} setattr( self, attrname, @@ -126,11 +126,22 @@ class Signable: for f in bad_files: yield red(f.name) - class xmr_transaction(transaction): + class xmr_signable(transaction): # virtual class + + def print_summary(self,signables): + bmsg('\nAutosign summary:') + msg( + self.summary_indent + + f'\n{self.summary_indent}'.join(s.get_info() for s in signables) + + self.summary_footer ) + + class xmr_transaction(xmr_signable): dir_name = 'xmr_tx_dir' desc = 'Monero transaction' subext = 'subtx' multiple_ok = False + summary_indent = '' + summary_footer = '' async def sign(self,f): from .xmrwallet import MoneroMMGenTX,MoneroWalletOps,xmrwallet_uargs @@ -146,16 +157,14 @@ class Signable: tx2.write(ask_write=False) return tx2 - def print_summary(self,txs): - bmsg('\nAutosign summary:\n') - msg_r('\n'.join(tx.get_info() for tx in txs)) - - class xmr_wallet_outputs_file(transaction): + class xmr_wallet_outputs_file(xmr_signable): desc = 'Monero wallet outputs file' rawext = 'raw' sigext = 'sig' dir_name = 'xmr_outputs_dir' clean_all = True + summary_indent = ' ' + summary_footer = '\n' async def sign(self,f): from .xmrwallet import MoneroWalletOps,xmrwallet_uargs @@ -171,10 +180,6 @@ class Signable: obj.write() return obj - def print_summary(self,txs): - bmsg('\nAutosign summary:') - msg(' ' + '\n '.join(tx.get_info() for tx in txs) + '\n') - class message(base): desc = 'message file' rawext = 'rawmsg.json' @@ -577,7 +582,6 @@ class Autosign: prev_status = status if not n % 10: msg_r(f"\r{' '*17}\rWaiting") - sys.stderr.flush() await asyncio.sleep(1) msg_r('.') n += 1 @@ -601,7 +605,7 @@ class Autosign: from .led import LEDControl self.led = LEDControl( enabled = self.cfg.led, - simulate = os.getenv('MMGEN_TEST_SUITE_AUTOSIGN_LED_SIMULATE') ) + simulate = self.cfg.test_suite_autosign_led_simulate ) self.led.set('off') def get_autosign_obj(cfg,coins=None): diff --git a/test/include/pexpect.py b/test/include/pexpect.py index 3a34b4e7..79705621 100755 --- a/test/include/pexpect.py +++ b/test/include/pexpect.py @@ -38,7 +38,14 @@ NL = '\n' class MMGenPexpect: - def __init__(self,args,no_output=False,env=None,pexpect_spawn=False,send_delay=None,timeout=None): + def __init__( + self, + args, + no_output = False, + env = None, + pexpect_spawn = False, + send_delay = None, + timeout = None ): self.pexpect_spawn = pexpect_spawn self.send_delay = send_delay diff --git a/test/test.py b/test/test.py index 6837503a..0e7b39fa 100755 --- a/test/test.py +++ b/test/test.py @@ -624,7 +624,9 @@ class TestSuiteRunner(object): clr2(repr(cmd_disp) if gc.platform == 'win' else cmd_disp) ) else: - omsg_r(f'{t_pfx}Testing {desc}: ') + omsg_r('{a}Testing {b}: '.format( + a = t_pfx, + b = desc ) if msg_only: return @@ -918,7 +920,8 @@ class TestSuiteRunner(object): elif ret == 'error': die(2,red(f'\nTest {self.ts.test_name!r} failed')) elif ret in ('skip','silent'): - pass + if ret == 'silent': + self.cmd_total += 1 elif type(ret) == tuple and ret[0] == 'skip_warn': self.skipped_warnings.append( 'Test {!r} was skipped:\n {}'.format(cmd,'\n '.join(ret[1].split('\n')))) diff --git a/test/test_py_d/ts_base.py b/test/test_py_d/ts_base.py index cb73c97c..22d5e950 100755 --- a/test/test_py_d/ts_base.py +++ b/test/test_py_d/ts_base.py @@ -74,6 +74,13 @@ class TestSuiteBase: def write_to_tmpfile(self,fn,data,binary=False): return write_to_file(os.path.join(self.tmpdir,fn),data,binary=binary) + def delete_tmpfile(self,fn): + fn = os.path.join(self.tmpdir,fn) + try: + return os.unlink(fn) + except: + msg(f'{fn}: file does not exist or could not be deleted') + def skip_for_win(self): if gc.platform == 'win': msg(f'Skipping test {self.test_name!r}: not supported on MSys2 platform') diff --git a/test/test_py_d/ts_xmr_autosign.py b/test/test_py_d/ts_xmr_autosign.py index 715e9057..dfd68335 100755 --- a/test/test_py_d/ts_xmr_autosign.py +++ b/test/test_py_d/ts_xmr_autosign.py @@ -228,7 +228,7 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase): def sign_transfer_tx2(self): return self._sign_transfer_tx() - def _xmr_autosign_op(self,op,desc,dtype=None,ext=None,wallet_arg=None,add_opts=[]): + def _xmr_autosign_op(self,op,desc=None,dtype=None,ext=None,wallet_arg=None,add_opts=[]): data = self.users['alice'] args = ( self.extra_opts @@ -239,7 +239,8 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase): + ([get_file_with_ext(self.asi.xmr_tx_dir,ext)] if ext else []) + ([wallet_arg] if wallet_arg else []) ) - t = self.spawn( 'mmgen-xmrwallet', args, extra_desc=f'({desc}, Alice)' ) + desc_pfx = f'{desc}, ' if desc else '' + t = self.spawn( 'mmgen-xmrwallet', args, extra_desc=f'({desc_pfx}Alice)' ) if dtype: t.written_to_file(dtype.capitalize()) return t @@ -281,7 +282,6 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase): data = self.users['alice'] t = self._xmr_autosign_op( op = op, - desc = 'submitting TX', add_opts = [f'--tx-relay-daemon={relay_parm}'] if relay_parm else [], ext = ext ) t.expect( f'{op.capitalize()} transaction? (y/N): ', 'y' ) @@ -295,7 +295,6 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase): def _export_outputs(self,wallet_arg,add_opts=[]): return self._xmr_autosign_op( op = 'export-outputs', - desc = 'exporting outputs', dtype = 'wallet outputs', wallet_arg = wallet_arg, add_opts = add_opts ) @@ -319,7 +318,6 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase): def _import_key_images(self,wallet_arg): return self._xmr_autosign_op( op = 'import-key-images', - desc = 'importing key images', wallet_arg = wallet_arg ) def import_key_images1(self): diff --git a/test/test_py_d/ts_xmrwallet.py b/test/test_py_d/ts_xmrwallet.py index bd786a39..ce8bb577 100755 --- a/test/test_py_d/ts_xmrwallet.py +++ b/test/test_py_d/ts_xmrwallet.py @@ -398,7 +398,9 @@ class TestSuiteXMRWallet(TestSuiteBase): fr'Account index:\s+2\s+Creating new address.*Alice’s new address' ) async def mine_initial_coins(self): + self.spawn('', msg_only=True, extra_desc='(opening wallet)') await self.open_wallet_user('miner',1) + ok() return await self.mine_chk('miner',1,0,lambda x: x.ub > 20,'unlocked balance > 20') async def fund_alice(self):