Browse Source

mmgen-msg: support --pager for verify operation

The MMGen Project 2 years ago
parent
commit
6a6aa02a34
3 changed files with 17 additions and 10 deletions
  1. 7 2
      mmgen/main_msg.py
  2. 2 3
      mmgen/msg.py
  3. 8 5
      test/unit_tests_d/ut_msg.py

+ 7 - 2
mmgen/main_msg.py

@@ -60,9 +60,14 @@ class MsgOps:
 			except:
 				m = ExportedMsgSigs( infile=msgfile )
 
-			qmsg(m.format(addr) + '\n')
+			nSigs = await m.verify(addr)
 
-			await m.verify(addr,summary=True)
+			summary = f'{nSigs} signature{suf(nSigs)} verified'
+
+			if opt.quiet:
+				msg(summary)
+			else:
+				stdout_or_pager(m.format(addr) + '\n\n' + summary + '\n')
 
 			if m.data.get('failed_sids'):
 				sys.exit(1)

+ 2 - 3
mmgen/msg.py

@@ -296,7 +296,7 @@ class coin_msg:
 
 			return sigs
 
-		async def verify(self,addr=None,summary=False):
+		async def verify(self,addr=None):
 
 			sigs = self.get_sigs(addr)
 
@@ -313,8 +313,7 @@ class coin_msg:
 				if not ret:
 					die(3,f'Invalid signature for address {k} ({v["addr"]})')
 
-			if summary:
-				msg('{} signature{} verified'.format( len(sigs), suf(sigs) ))
+			return len(sigs)
 
 		def get_json_for_export(self,addr=None):
 			sigs = list( self.get_sigs(addr).values() )

+ 8 - 5
test/unit_tests_d/ut_msg.py

@@ -7,7 +7,7 @@ import os
 
 from test.include.common import silence,end_silence,restart_test_daemons,stop_test_daemons
 from mmgen.opts import opt
-from mmgen.util import msg,bmsg,pumsg
+from mmgen.util import msg,bmsg,pumsg,suf
 from mmgen.protocol import CoinProtocol
 from mmgen.msg import NewMsg,UnsignedMsg,SignedMsg,SignedOnlineMsg,ExportedMsgSigs
 from mmgen.addr import MMGenID
@@ -29,6 +29,9 @@ def get_obj(coin,network,msghash_type):
 		addrlists = addrlists,
 		msghash_type = msghash_type )
 
+def print_total(n):
+	msg(f'{n} signature{suf(n)} verified')
+
 async def run_test(network_id,chksum,msghash_type='raw'):
 
 	coin,network = CoinProtocol.Base.parse_network_id(network_id)
@@ -78,10 +81,10 @@ async def run_test(network_id,chksum,msghash_type='raw'):
 	msg(m.format(single_addr))
 
 	pumsg('\nTesting verification:\n')
-	await m.verify(summary=opt.verbose)
+	print_total( await m.verify() )
 
 	pumsg('\nTesting single address verification:\n')
-	await m.verify(single_addr,summary=opt.verbose)
+	print_total( await m.verify(single_addr) )
 
 	pumsg('\nTesting JSON dump for export:\n')
 	msg( m.get_json_for_export() )
@@ -100,10 +103,10 @@ async def run_test(network_id,chksum,msghash_type='raw'):
 	m = ExportedMsgSigs( infile=exported_sigs )
 
 	pumsg('\nTesting verification (exported data):\n')
-	await m.verify(summary=opt.verbose)
+	print_total( await m.verify() )
 
 	pumsg('\nTesting single address verification (exported data):\n')
-	await m.verify(single_addr_coin,summary=opt.verbose)
+	print_total( await m.verify(single_addr_coin) )
 
 	pumsg('\nTesting display (exported data):\n')
 	msg(m.format())