minor fixes and cleanups

This commit is contained in:
The MMGen Project 2023-05-07 17:11:53 +00:00
commit b081349514
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
6 changed files with 29 additions and 25 deletions

View file

@ -135,17 +135,13 @@ class Signable:
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 )
msg('\n'.join(s.get_info(indent=' ') 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):
@ -168,7 +164,6 @@ class Signable:
sigext = 'sig'
dir_name = 'xmr_outputs_dir'
clean_all = True
summary_indent = ' '
summary_footer = '\n'
async def sign(self,f):
@ -381,10 +376,12 @@ class Autosign:
async def sign_all(self,target_name):
target = getattr(Signable,target_name)(self)
if target.unsigned:
if len(target.unsigned) > 1 and not target.multiple_ok:
die(f'AutosignTXError', 'Only one unsigned {target.desc} transaction allowed at a time!')
good = []
bad = []
if len(target.unsigned) > 1 and not target.multiple_ok:
ymsg(f'Autosign error: only one unsigned {target.desc} transaction allowed at a time!')
target.print_bad_list(target.unsigned)
return False
for f in target.unsigned:
ret = None
try:

View file

@ -501,9 +501,9 @@ class MoneroWalletOutputsFile:
def get_info(self,indent=''):
if self.data.signed_key_images is not None:
data = self.data.signed_key_images or []
return f'{self.wallet_fn.name}: {len(data)} signed key image{suf(data)}'
return f'{indent}{self.wallet_fn.name}: {len(data)} signed key image{suf(data)}'
else:
return f'{self.wallet_fn.name}: no key images'
return f'{indent}{self.wallet_fn.name}: no key images'
class New(Base):
ext = 'raw'
@ -790,8 +790,6 @@ class MoneroWalletOps:
continue
raise
msg('')
self.create_addr_data()
if not self.skip_wallet_check:
@ -1557,7 +1555,7 @@ class MoneroWalletOps:
async def main(self):
h = self.rpc(self,self.source)
h.open_wallet('Monero',refresh=True)
h.open_wallet('Monero')
label = '{a} [{b}]'.format(
a = self.label or f"xmrwallet new {'account' if self.account == None else 'address'}",
b = make_timestr() )
@ -1739,10 +1737,14 @@ class MoneroWalletOps:
self.display_tx_relay_info(indent=' ')
if keypress_confirm( self.cfg, f'{self.name.capitalize()} transaction?' ):
if self.cfg.tx_relay_daemon:
msg_r('Relaying transaction to remote daemon, please be patient...')
res = self.c.call(
'submit_transfer',
tx_data_hex = tx.data.signed_txset )
assert res['tx_hash_list'][0] == tx.data.txid, 'TxID mismatch in ‘submit_transfer’ result!'
if self.cfg.tx_relay_daemon:
msg('success')
else:
die(1,'Exiting at user request')

View file

@ -161,7 +161,7 @@ class TestSuiteAutosignBase(TestSuiteBase):
def stop_daemons(self):
self.spawn('',msg_only=True)
stop_test_daemons(*[i for i in self.network_ids if i != 'btc'])
stop_test_daemons(*self.network_ids)
return 'ok'
def gen_key(self):

View file

@ -56,7 +56,7 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase):
('new_address_alice_label', 'adding an address to Alice’s tmp wallet (with label)'),
('dump_tmp_wallets', 'dumping Alice’s tmp wallets'),
('delete_tmp_wallets', 'deleting Alice’s tmp wallets'),
('clean', 'cleaning signable file directories'),
('autosign_clean', 'cleaning signable file directories'),
('autosign_setup', 'autosign setup with Alice’s seed'),
('create_watchonly_wallets', 'creating online (watch-only) wallets for Alice'),
('delete_tmp_dump_files', 'deleting Alice’s dump files'),
@ -124,7 +124,9 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase):
cfg = self.cfg,
proto = self.proto,
addr_idxs = '1-2',
seed = Wallet(cfg,data.mmwords).seed )
seed = Wallet(cfg,data.mmwords).seed,
skip_chksum_msg = True,
key_address_validity_check = False )
kal.file.write(ask_overwrite=False)
fn = get_file_with_ext(data.udir,'akeys')
m = MoneroWalletOps.create(
@ -277,19 +279,19 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase):
t.written_to_file(dtype.capitalize())
return t
def _sync_chkbal(self,bal_chk_func):
def _sync_chkbal(self,wallet_arg,bal_chk_func):
return self.sync_wallets(
'alice',
op = 'sync',
wallets = '1',
wallets = wallet_arg,
bal_chk_func = bal_chk_func )
def sync_chkbal1(self):
return self._sync_chkbal( lambda n,b,ub: b == ub and 1 < b < 1.12 )
return self._sync_chkbal( '1', lambda n,b,ub: b == ub and 1 < b < 1.12 )
# 1.234567891234 - 0.124 = 1.110567891234 (minus fees)
def sync_chkbal2(self):
return self._sync_chkbal( lambda n,b,ub: b == ub and 0.8 < b < 0.86 )
return self._sync_chkbal( '1', lambda n,b,ub: b == ub and 0.8 < b < 0.86 )
# 1.234567891234 - 0.124 - 0.257 = 0.853567891234 (minus fees)
sync_chkbal3 = sync_chkbal2
@ -404,7 +406,7 @@ class TestSuiteXMRAutosign(TestSuiteXMRWallet,TestSuiteAutosignBase):
str(Path(*d.parts[4:])) + ':',
' '.join(sorted(i.name for i in d.iterdir()))).strip()
def clean(self):
def autosign_clean(self):
self.create_fake_tx_files()
before = '\n'.join(self._gen_listing())

View file

@ -417,15 +417,17 @@ class TestSuiteXMRWallet(TestSuiteBase):
ok()
return await self.mine_chk('miner',1,0,lambda x: x.ub > 20,'unlocked balance > 20')
async def fund_alice(self):
async def fund_alice(self,wallet=1):
self.spawn('', msg_only=True, extra_desc='(transferring funds from Miner wallet)')
await self.transfer(
'miner',
1234567891234,
read_from_file(self.users['alice'].addrfile_fs.format(1)),
read_from_file(self.users['alice'].addrfile_fs.format(wallet)),
)
ok()
bal = '1.234567891234'
return await self.mine_chk(
'alice',1,0,
'alice',wallet,0,
lambda x: str(x.ub) == bal,f'unlocked balance == {bal}',
random_txs = self.dfl_random_txs
)
@ -644,6 +646,7 @@ class TestSuiteXMRWallet(TestSuiteBase):
cfg = cfg,
proto = self.proto,
addrfile = data.kafile,
skip_chksum_msg = True,
key_address_validity_check = False )
end_silence()
self.users[user].wd.start(silent=not (cfg.exact_output or cfg.verbose))

View file

@ -191,7 +191,7 @@ class unit_tests:
cfg = cfg,
proto = proto,
test_suite = True,
wallet_dir = 'test/trash2',
wallet_dir = os.path.join('test','trash2'),
passwd = 'ut_rpc_passw0rd' )
) for proto in (init_proto( cfg, 'xmr', network=network ) for network in networks) ]