From fe60f42d5326077f15ac5ae6c6bda15286c93e48 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 15 Apr 2024 09:48:14 +0000 Subject: [PATCH] xmrwallet: --full-output -> --full-address; add tests --- mmgen/main_xmrwallet.py | 3 +-- mmgen/xmrwallet.py | 14 +++++++------- test/cmdtest_py_d/ct_xmrwallet.py | 13 +++++++------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mmgen/main_xmrwallet.py b/mmgen/main_xmrwallet.py index 5eced033..70798cbc 100755 --- a/mmgen/main_xmrwallet.py +++ b/mmgen/main_xmrwallet.py @@ -66,8 +66,7 @@ opts_data = { number means higher fee). Valid parameters: {tp}. If option is omitted, the default priority will be used --F, --full-output For ‘list’ and ‘listview’ operations, print - addresses in full instead of truncating them +-F, --full-address Print addresses in full instead of truncating -m, --autosign-mountpoint=P Specify the autosign mountpoint (defaults to ‘/mnt/mmgen_autosign’, implies --autosign) -b, --rescan-blockchain Rescan the blockchain if wallet fails to sync diff --git a/mmgen/xmrwallet.py b/mmgen/xmrwallet.py index bd96bbb1..b7a5c3c0 100755 --- a/mmgen/xmrwallet.py +++ b/mmgen/xmrwallet.py @@ -105,7 +105,6 @@ tx_priorities = { def gen_acct_addr_info(self, wallet_data, account, indent=''): fs = indent + '{I:<3} {A} {U} {B} {L}' - addr_width = 95 if self.cfg.full_output else 17 addrs_data = wallet_data.addrs_data[account]['addresses'] for d in addrs_data: @@ -126,7 +125,7 @@ def gen_acct_addr_info(self, wallet_data, account, indent=''): ca = CoinAddr(self.proto, addr['address']) yield fs.format( I = addr['address_index'], - A = ca.hl() if self.cfg.full_output else ca.fmt(color=True, width=addr_width), + A = ca.hl() if self.cfg.full_address else ca.fmt(color=True, width=addr_width), U = (red('True ') if addr['used'] else green('False')), B = fmt_amt(addr['unlocked_balance']), L = pink(addr['label'])) @@ -735,7 +734,7 @@ class MoneroWalletOps: if not hasattr(self,'stem'): self.stem = self.name - global uarg, uarg_info, fmt_amt, hl_amt + global uarg, uarg_info, fmt_amt, hl_amt, addr_width uarg = uarg_tuple uarg_info = xmrwallet_uarg_info @@ -745,6 +744,8 @@ class MoneroWalletOps: def hl_amt(amt): return self.proto.coin_amt(amt,from_unit='atomic').hl() + addr_width = 95 if self.cfg.full_address else 17 + id_cur = None for cls in classes: if id(cls.check_uopts) != id_cur: @@ -1060,7 +1061,6 @@ class MoneroWalletOps: gmsg_r('done') def gen_accts_info(self, accts_data, addrs_data, indent=' '): - addr_width = 95 if self.cfg.full_output else 17 fs = indent + ' {I:<3} {A} {N} {B} {L}' yield indent + f'Accounts of wallet {self.fn.name}:' yield fs.format( @@ -1073,7 +1073,7 @@ class MoneroWalletOps: ca = CoinAddr(self.proto, e['base_address']) yield fs.format( I = str(e['account_index']), - A = ca.hl() if self.cfg.full_output else ca.fmt(color=True, width=addr_width), + A = ca.hl() if self.cfg.full_address else ca.fmt(color=True, width=addr_width), N = red(str(len(addrs_data[i]['addresses'])).ljust(6)), B = fmt_amt(e['unlocked_balance']), L = pink(e['label'])) @@ -1463,7 +1463,6 @@ class MoneroWalletOps: class list(sync): stem = 'sync' - opts = ('full_output',) def gen_body(self, wallets_data): for (wallet_fn, wallet_data) in wallets_data.items(): @@ -1813,9 +1812,10 @@ class MoneroWalletOps: addr = ret[self.address_idx] new_label = f'{self.label} [{make_timestr()}]' if self.label else '' + ca = CoinAddr(self.proto, addr['address']) msg('\n {a} {b}\n {c} {d}\n {e} {f}'.format( a = 'Address: ', - b = cyan(addr['address'][:15] + '...'), + b = ca.hl() if self.cfg.full_address else ca.fmt(color=True, width=addr_width), c = 'Existing label:', d = pink(addr['label']) if addr['label'] else gray('[none]'), e = 'New label: ', diff --git a/test/cmdtest_py_d/ct_xmrwallet.py b/test/cmdtest_py_d/ct_xmrwallet.py index 76a7daec..22e119b1 100755 --- a/test/cmdtest_py_d/ct_xmrwallet.py +++ b/test/cmdtest_py_d/ct_xmrwallet.py @@ -454,17 +454,18 @@ class CmdTestXMRWallet(CmdTestBase): return self.set_label_user('miner', '1:0:0,"Miner’s new primary account label [1:0:0]"', 'updated') def remove_label_alice(self): - return self.set_label_user('alice', '4:2:2,""', 'removed') + return self.set_label_user('alice', '4:2:2,""', 'removed', add_opts=['--full-address']) def set_label_alice(self): return self.set_label_user('alice', '4:2:2,"Alice’s new subaddress label [4:2:2]"', 'set') - def set_label_user(self,user,label_spec,expect): + def set_label_user(self, user, label_spec, expect, add_opts=[]): data = self.users[user] cmd_opts = [f'--wallet-dir={data.udir}', f'--daemon=localhost:{data.md.rpc_port}'] t = self.spawn( 'mmgen-xmrwallet', self.extra_opts + + add_opts + cmd_opts + ['label', data.kafile, label_spec] ) @@ -476,10 +477,10 @@ class CmdTestXMRWallet(CmdTestBase): return self.sync_wallets('alice',add_opts=['--rescan-blockchain']) def sync_wallets_selected(self): - return self.sync_wallets('alice',wallets='1-2,4') + return self.sync_wallets('alice', wallets='1-2,4', add_opts=['--full-address']) def list_wallets_all(self): - return self.sync_wallets('alice',op='list') + return self.sync_wallets('alice', op='list', add_opts=['--full-address']) def sync_wallets(self,user,op='sync',wallets=None,add_opts=[],bal_chk_func=None): data = self.users[user] @@ -587,7 +588,7 @@ class CmdTestXMRWallet(CmdTestBase): return self.mine_chk('alice', 2, 0, lambda x: x.ub > 1, 'unlocked balance > 1') def sweep_to_wallet_account(self): - self.do_op('sweep', 'alice', '2:0,3:0', use_existing=True) + self.do_op('sweep', 'alice', '2:0,3:0', use_existing=True, add_opts=['--full-address']) return self.mine_chk('alice', 3, 0, lambda x: x.ub > 1, 'unlocked balance > 1') def sweep_to_wallet_account_proxy(self): @@ -610,7 +611,7 @@ class CmdTestXMRWallet(CmdTestBase): async def transfer_to_miner_noproxy(self): addr = read_from_file(self.users['miner'].addrfile_fs.format(2)) - self.do_op('transfer','alice',f'2:1:{addr},0.0995',self.tx_relay_daemon_parm) + self.do_op('transfer', 'alice', f'2:1:{addr},0.0995', self.tx_relay_daemon_parm, add_opts=['--full-address']) await self.mine_chk('miner',2,0,lambda x: str(x.ub) == '0.2345','unlocked balance == 0.2345') ok() return await self.mine_chk('alice',2,1,lambda x: x.ub > 0.9,'unlocked balance > 0.9')