Browse Source

minor fixes and cleanups

The MMGen Project 1 year ago
parent
commit
b081349514

+ 5 - 8
mmgen/autosign.py

@@ -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:

+ 7 - 5
mmgen/xmrwallet.py

@@ -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')
 

+ 1 - 1
test/test_py_d/ts_autosign.py

@@ -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):

+ 9 - 7
test/test_py_d/ts_xmr_autosign.py

@@ -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())

+ 6 - 3
test/test_py_d/ts_xmrwallet.py

@@ -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))

+ 1 - 1
test/unit_tests_d/ut_rpc.py

@@ -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) ]