Browse Source

`test.py`: move tmpdirs, move config code to `test_py_d.cfg`

The MMGen Project 2 years ago
parent
commit
840b4d1d43
6 changed files with 246 additions and 215 deletions
  1. 1 1
      mmgen/data/version
  2. 2 1
      test/include/common.py
  3. 5 211
      test/test.py
  4. 236 0
      test/test_py_d/cfg.py
  5. 1 1
      test/test_py_d/ts_base.py
  6. 1 1
      test/tooltest.py

+ 1 - 1
mmgen/data/version

@@ -1 +1 @@
-13.2.dev9
+13.2.dev10

+ 2 - 1
test/include/common.py

@@ -108,7 +108,8 @@ def cleandir(d,do_msg=False):
 			rmtree(os.path.join(d_enc,f),ignore_errors=True)
 
 def mk_tmpdir(d):
-	try: os.mkdir(d,0o755)
+	try:
+		os.makedirs( d, mode=0o755, exist_ok=True )
 	except OSError as e:
 		if e.errno != 17:
 			raise

+ 5 - 211
test/test.py

@@ -204,190 +204,10 @@ if opt.exact_output:
 if skipping_deps:
 	opt.no_daemon_autostart = True
 
-cfgs = { # addr_idx_lists (except 31,32,33,34) must contain exactly 8 addresses
-	'1':  { 'wpasswd':       'Dorian-α',
-			'kapasswd':      'Grok the blockchain',
-			'addr_idx_list': '12,99,5-10,5,12',
-			'dep_generators':  {
-				pwfile:        'walletgen',
-				'mmdat':       'walletgen',
-				'addrs':       'addrgen',
-				'rawtx':       'txcreate',
-				'txbump':      'txbump',
-				'sigtx':       'txsign',
-				'mmwords':     'export_mnemonic',
-				'mmseed':      'export_seed',
-				'mmhex':       'export_hex',
-				'mmincog':     'export_incog',
-				'mmincox':     'export_incog_hex',
-				hincog_fn:     'export_incog_hidden',
-				incog_id_fn:   'export_incog_hidden',
-				'akeys.mmenc': 'keyaddrgen'
-			},
-	},
-	'2':  { 'wpasswd':       'Hodling away',
-			'addr_idx_list': '37,45,3-6,22-23',
-			'seed_len':      128,
-			'dep_generators': {
-				'mmdat':   'walletgen2',
-				'addrs':   'addrgen2',
-				'rawtx':   'txcreate2',
-				'sigtx':   'txsign2',
-				'mmwords': 'export_mnemonic2',
-			},
-	},
-	'3':  { 'wpasswd':       'Major miner',
-			'addr_idx_list': '73,54,1022-1023,2-5',
-			'dep_generators': {
-				'mmdat': 'walletgen3',
-				'addrs': 'addrgen3',
-				'rawtx': 'txcreate3',
-				'sigtx': 'txsign3'
-			},
-	},
-	'4':  { 'wpasswd':       'Hashrate good',
-			'addr_idx_list': '63,1004,542-544,7-9',
-			'seed_len':      192,
-			'dep_generators': {
-				'mmdat':   'walletgen4',
-				'mmbrain': 'walletgen4',
-				'addrs':   'addrgen4',
-				'rawtx':   'txcreate4',
-				'sigtx':   'txsign4',
-				'txdo':    'txdo4',
-			},
-			'bw_filename': 'brainwallet.mmbrain',
-			'bw_params':   '192,1',
-	},
-	'5':  { 'wpasswd':     'My changed password-α',
-			'hash_preset': '2',
-			'dep_generators': {
-				'mmdat': 'passchg',
-				pwfile:  'passchg',
-			},
-	},
-	'6':  { 'seed_len':       128,
-			'seed_id':        'FE3C6545',
-			'ref_bw_seed_id': '33F10310',
-			'wpasswd':        'reference password',
-			'kapasswd':      '',
-			'dep_generators':  {
-				'mmdat':       'ref_walletgen_brain_1',
-				pwfile:        'ref_walletgen_brain_1',
-				'addrs':       'refaddrgen_1',
-				'akeys.mmenc': 'refkeyaddrgen_1'
-			},
-	},
-	'7':  { 'seed_len':       192,
-			'seed_id':        '1378FC64',
-			'ref_bw_seed_id': 'CE918388',
-			'wpasswd':        'reference password',
-			'kapasswd':      '',
-			'dep_generators':  {
-				'mmdat':       'ref_walletgen_brain_2',
-				pwfile:        'ref_walletgen_brain_2',
-				'addrs':       'refaddrgen_2',
-				'akeys.mmenc': 'refkeyaddrgen_2'
-			},
-	},
-	'8':  { 'seed_len':       256,
-			'seed_id':        '98831F3A',
-			'ref_bw_seed_id': 'B48CD7FC',
-			'wpasswd':        'reference password',
-			'kapasswd':      '',
-			'dep_generators':  {
-				'mmdat':       'ref_walletgen_brain_3',
-				pwfile:        'ref_walletgen_brain_3',
-				'addrs':       'refaddrgen_3',
-				'akeys.mmenc': 'refkeyaddrgen_3'
-			},
-	},
-	'9':  { 'tool_enc_infn': 'tool_encrypt.in',
-			'dep_generators': {
-				'tool_encrypt.in':       'tool_encrypt',
-				'tool_encrypt.in.mmenc': 'tool_encrypt',
-			},
-	},
-	'14': { 'kapasswd':      'Maxwell',
-			'wpasswd':       'The Halving',
-			'addr_idx_list': '61,998,502-504,7-9',
-			'seed_len':      256,
-			'dep_generators': {
-				'mmdat':       'walletgen14',
-				'addrs':       'addrgen14',
-				'akeys.mmenc': 'keyaddrgen14',
-			},
-	},
-	'15': { 'wpasswd':       'Dorian-α',
-			'kapasswd':      'Grok the blockchain',
-			'addr_idx_list': '12,99,5-10,5,12',
-			'dep_generators':  {
-				pwfile:       'walletgen_dfl_wallet',
-				'addrs':      'addrgen_dfl_wallet',
-				'rawtx':      'txcreate_dfl_wallet',
-				'sigtx':      'txsign_dfl_wallet',
-				'mmseed':     'export_seed_dfl_wallet',
-				'del_dw_run': 'delete_dfl_wallet',
-			},
-	},
-	'16': { 'wpasswd':     'My changed password',
-			'hash_preset': '2',
-			'dep_generators': {
-				pwfile: 'passchg_dfl_wallet',
-			},
-	},
-	'17': {},
-	'18': {},
-	'19': { 'wpasswd':'abc' },
-	'20': { 'wpasswd':       'Vsize it',
-			'addr_idx_list': '1-8',
-			'seed_len':      256,
-			'dep_generators': {
-				'mmdat': 'walletgen5',
-				'addrs': 'addrgen5',
-				'rawtx': 'txcreate5',
-				'sigtx': 'txsign5',
-		},
-	},
-	'21': { 'wpasswd':       'Vsize it',
-			'addr_idx_list': '1-8',
-			'seed_len':      256,
-			'dep_generators': {
-				'mmdat': 'walletgen6',
-				'addrs': 'addrgen6',
-				'rawtx': 'txcreate6',
-				'sigtx': 'txsign6',
-		},
-	},
-	'22': {},
-	'23': {},
-	# 26,27,28 are taken
-	'29': {}, # xmrwallet
-	'31': {},
-	'32': {},
-	'33': {},
-	'34': {},
-	'40': {},
-	'41': {},
-	'99': {}, # dummy
-}
-
-def fixup_cfgs():
-	for k in ('6','7','8'):
-		cfgs['2'+k] = {}
-		cfgs['2'+k].update(cfgs[k])
+from test.test_py_d.cfg import cfgs,fixup_cfgs
 
-	for k in cfgs:
-		cfgs[k]['tmpdir'] = os.path.join('test',f'tmp{k}')
-		cfgs[k]['segwit'] = randbool() if opt.segwit_random else bool(opt.segwit or opt.bech32)
-
-	from copy import deepcopy
-	for a,b in (('6','11'),('7','12'),('8','13')):
-		cfgs[b] = deepcopy(cfgs[a])
-		cfgs[b]['tmpdir'] = os.path.join('test','tmp'+b)
-
-	if g.debug_utf8:
-		for k in cfgs: cfgs[k]['tmpdir'] += '-α'
+for k in cfgs:
+	cfgs[k]['tmpdir'] = os.path.join('test','tmp',str(k))
 
 fixup_cfgs()
 
@@ -460,6 +280,7 @@ def create_tmp_dirs(shm_dir):
 		for cfg in sorted(cfgs):
 			mk_tmpdir(cfgs[cfg]['tmpdir'])
 	else:
+		os.makedirs( 'test/tmp', mode=0o755, exist_ok=True )
 		for cfg in sorted(cfgs):
 			src = os.path.join(shm_dir,cfgs[cfg]['tmpdir'].split('/')[-1])
 			mk_tmpdir(src)
@@ -505,34 +326,7 @@ def set_restore_term_at_exit():
 
 class CmdGroupMgr(object):
 
-	cmd_groups_dfl = {
-		'misc':             ('TestSuiteMisc',{}),
-		'opts':             ('TestSuiteOpts',{'full_data':True}),
-		'cfg':              ('TestSuiteCfg',{'full_data':True}),
-		'helpscreens':      ('TestSuiteHelp',{'modname':'misc','full_data':True}),
-		'main':             ('TestSuiteMain',{'full_data':True}),
-		'conv':             ('TestSuiteWalletConv',{'is3seed':True,'modname':'wallet'}),
-		'ref':              ('TestSuiteRef',{}),
-		'ref3':             ('TestSuiteRef3Seed',{'is3seed':True,'modname':'ref_3seed'}),
-		'ref3_addr':        ('TestSuiteRef3Addr',{'is3seed':True,'modname':'ref_3seed'}),
-		'ref_altcoin':      ('TestSuiteRefAltcoin',{}),
-		'seedsplit':        ('TestSuiteSeedSplit',{}),
-		'tool':             ('TestSuiteTool',{'full_data':True}),
-		'input':            ('TestSuiteInput',{'full_data':True}),
-		'output':           ('TestSuiteOutput',{'modname':'misc','full_data':True}),
-		'autosign':         ('TestSuiteAutosign',{}),
-		'regtest':          ('TestSuiteRegtest',{}),
-#		'chainsplit':       ('TestSuiteChainsplit',{}),
-		'ethdev':           ('TestSuiteEthdev',{}),
-		'xmrwallet':        ('TestSuiteXMRWallet',{}),
-	}
-
-	cmd_groups_extra = {
-		'autosign_btc':           ('TestSuiteAutosignBTC',{'modname':'autosign'}),
-		'autosign_live':          ('TestSuiteAutosignLive',{'modname':'autosign'}),
-		'autosign_live_simulate': ('TestSuiteAutosignLiveSimulate',{'modname':'autosign'}),
-		'create_ref_tx':          ('TestSuiteRefTX',{'modname':'misc','full_data':True}),
-	}
+	from test.test_py_d.cfg import cmd_groups_dfl,cmd_groups_extra
 
 	cmd_groups = cmd_groups_dfl.copy()
 	cmd_groups.update(cmd_groups_extra)

+ 236 - 0
test/test_py_d/cfg.py

@@ -0,0 +1,236 @@
+#!/usr/bin/env python3
+#
+# mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
+# Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
+# Licensed under the GNU General Public License, Version 3:
+#   https://www.gnu.org/licenses
+# Public project repositories:
+#   https://github.com/mmgen/mmgen
+#   https://gitlab.com/mmgen/mmgen
+
+"""
+test.test_py_d.cfg: configuration data for test.py
+"""
+
+from .common import *
+
+cmd_groups_dfl = {
+	'misc':             ('TestSuiteMisc',{}),
+	'opts':             ('TestSuiteOpts',{'full_data':True}),
+	'cfg':              ('TestSuiteCfg',{'full_data':True}),
+	'helpscreens':      ('TestSuiteHelp',{'modname':'misc','full_data':True}),
+	'main':             ('TestSuiteMain',{'full_data':True}),
+	'conv':             ('TestSuiteWalletConv',{'is3seed':True,'modname':'wallet'}),
+	'ref':              ('TestSuiteRef',{}),
+	'ref3':             ('TestSuiteRef3Seed',{'is3seed':True,'modname':'ref_3seed'}),
+	'ref3_addr':        ('TestSuiteRef3Addr',{'is3seed':True,'modname':'ref_3seed'}),
+	'ref_altcoin':      ('TestSuiteRefAltcoin',{}),
+	'seedsplit':        ('TestSuiteSeedSplit',{}),
+	'tool':             ('TestSuiteTool',{'full_data':True}),
+	'input':            ('TestSuiteInput',{'full_data':True}),
+	'output':           ('TestSuiteOutput',{'modname':'misc','full_data':True}),
+	'autosign':         ('TestSuiteAutosign',{}),
+	'regtest':          ('TestSuiteRegtest',{}),
+#	'chainsplit':       ('TestSuiteChainsplit',{}),
+	'ethdev':           ('TestSuiteEthdev',{}),
+	'xmrwallet':        ('TestSuiteXMRWallet',{}),
+}
+
+cmd_groups_extra = {
+	'autosign_btc':           ('TestSuiteAutosignBTC',{'modname':'autosign'}),
+	'autosign_live':          ('TestSuiteAutosignLive',{'modname':'autosign'}),
+	'autosign_live_simulate': ('TestSuiteAutosignLiveSimulate',{'modname':'autosign'}),
+	'create_ref_tx':          ('TestSuiteRefTX',{'modname':'misc','full_data':True}),
+}
+
+cfgs = { # addr_idx_lists (except 31,32,33,34) must contain exactly 8 addresses
+	'1':  { 'wpasswd':       'Dorian-α',
+			'kapasswd':      'Grok the blockchain',
+			'addr_idx_list': '12,99,5-10,5,12',
+			'dep_generators':  {
+				pwfile:        'walletgen',
+				'mmdat':       'walletgen',
+				'addrs':       'addrgen',
+				'rawtx':       'txcreate',
+				'txbump':      'txbump',
+				'sigtx':       'txsign',
+				'mmwords':     'export_mnemonic',
+				'mmseed':      'export_seed',
+				'mmhex':       'export_hex',
+				'mmincog':     'export_incog',
+				'mmincox':     'export_incog_hex',
+				hincog_fn:     'export_incog_hidden',
+				incog_id_fn:   'export_incog_hidden',
+				'akeys.mmenc': 'keyaddrgen'
+			},
+	},
+	'2':  { 'wpasswd':       'Hodling away',
+			'addr_idx_list': '37,45,3-6,22-23',
+			'seed_len':      128,
+			'dep_generators': {
+				'mmdat':   'walletgen2',
+				'addrs':   'addrgen2',
+				'rawtx':   'txcreate2',
+				'sigtx':   'txsign2',
+				'mmwords': 'export_mnemonic2',
+			},
+	},
+	'3':  { 'wpasswd':       'Major miner',
+			'addr_idx_list': '73,54,1022-1023,2-5',
+			'dep_generators': {
+				'mmdat': 'walletgen3',
+				'addrs': 'addrgen3',
+				'rawtx': 'txcreate3',
+				'sigtx': 'txsign3'
+			},
+	},
+	'4':  { 'wpasswd':       'Hashrate good',
+			'addr_idx_list': '63,1004,542-544,7-9',
+			'seed_len':      192,
+			'dep_generators': {
+				'mmdat':   'walletgen4',
+				'mmbrain': 'walletgen4',
+				'addrs':   'addrgen4',
+				'rawtx':   'txcreate4',
+				'sigtx':   'txsign4',
+				'txdo':    'txdo4',
+			},
+			'bw_filename': 'brainwallet.mmbrain',
+			'bw_params':   '192,1',
+	},
+	'5':  { 'wpasswd':     'My changed password-α',
+			'hash_preset': '2',
+			'dep_generators': {
+				'mmdat': 'passchg',
+				pwfile:  'passchg',
+			},
+	},
+	'6':  { 'seed_len':       128,
+			'seed_id':        'FE3C6545',
+			'ref_bw_seed_id': '33F10310',
+			'wpasswd':        'reference password',
+			'kapasswd':      '',
+			'dep_generators':  {
+				'mmdat':       'ref_walletgen_brain_1',
+				pwfile:        'ref_walletgen_brain_1',
+				'addrs':       'refaddrgen_1',
+				'akeys.mmenc': 'refkeyaddrgen_1'
+			},
+	},
+	'7':  { 'seed_len':       192,
+			'seed_id':        '1378FC64',
+			'ref_bw_seed_id': 'CE918388',
+			'wpasswd':        'reference password',
+			'kapasswd':      '',
+			'dep_generators':  {
+				'mmdat':       'ref_walletgen_brain_2',
+				pwfile:        'ref_walletgen_brain_2',
+				'addrs':       'refaddrgen_2',
+				'akeys.mmenc': 'refkeyaddrgen_2'
+			},
+	},
+	'8':  { 'seed_len':       256,
+			'seed_id':        '98831F3A',
+			'ref_bw_seed_id': 'B48CD7FC',
+			'wpasswd':        'reference password',
+			'kapasswd':      '',
+			'dep_generators':  {
+				'mmdat':       'ref_walletgen_brain_3',
+				pwfile:        'ref_walletgen_brain_3',
+				'addrs':       'refaddrgen_3',
+				'akeys.mmenc': 'refkeyaddrgen_3'
+			},
+	},
+	'9':  { 'tool_enc_infn': 'tool_encrypt.in',
+			'dep_generators': {
+				'tool_encrypt.in':       'tool_encrypt',
+				'tool_encrypt.in.mmenc': 'tool_encrypt',
+			},
+	},
+	'11': {},
+	'12': {},
+	'13': {},
+	'14': { 'kapasswd':      'Maxwell',
+			'wpasswd':       'The Halving',
+			'addr_idx_list': '61,998,502-504,7-9',
+			'seed_len':      256,
+			'dep_generators': {
+				'mmdat':       'walletgen14',
+				'addrs':       'addrgen14',
+				'akeys.mmenc': 'keyaddrgen14',
+			},
+	},
+	'15': { 'wpasswd':       'Dorian-α',
+			'kapasswd':      'Grok the blockchain',
+			'addr_idx_list': '12,99,5-10,5,12',
+			'dep_generators':  {
+				pwfile:       'walletgen_dfl_wallet',
+				'addrs':      'addrgen_dfl_wallet',
+				'rawtx':      'txcreate_dfl_wallet',
+				'sigtx':      'txsign_dfl_wallet',
+				'mmseed':     'export_seed_dfl_wallet',
+				'del_dw_run': 'delete_dfl_wallet',
+			},
+	},
+	'16': { 'wpasswd':     'My changed password',
+			'hash_preset': '2',
+			'dep_generators': {
+				pwfile: 'passchg_dfl_wallet',
+			},
+	},
+	'17': {},
+	'18': {},
+	'19': { 'wpasswd':'abc' },
+	'20': { 'wpasswd':       'Vsize it',
+			'addr_idx_list': '1-8',
+			'seed_len':      256,
+			'dep_generators': {
+				'mmdat': 'walletgen5',
+				'addrs': 'addrgen5',
+				'rawtx': 'txcreate5',
+				'sigtx': 'txsign5',
+		},
+	},
+	'21': { 'wpasswd':       'Vsize it',
+			'addr_idx_list': '1-8',
+			'seed_len':      256,
+			'dep_generators': {
+				'mmdat': 'walletgen6',
+				'addrs': 'addrgen6',
+				'rawtx': 'txcreate6',
+				'sigtx': 'txsign6',
+		},
+	},
+	'22': {},
+	'23': {},
+	'26': {},
+	'27': {},
+	'28': {},
+	'29': {}, # xmrwallet
+	'31': {},
+	'32': {},
+	'33': {},
+	'34': {},
+	'40': {},
+	'41': {},
+	'99': {}, # dummy
+}
+
+def fixup_cfgs():
+	for src,target in (
+			('6','11'),
+			('7','12'),
+			('8','13'),
+			('6','26'),
+			('7','27'),
+			('8','28')
+		):
+		cfgs[target].update(cfgs[src])
+		cfgs[target]['tmpdir'] = os.path.join('test','tmp',target)
+
+	for k in cfgs:
+		cfgs[k]['segwit'] = randbool() if opt.segwit_random else bool(opt.segwit or opt.bech32)
+
+	if g.debug_utf8:
+		for k in cfgs:
+			cfgs[k]['tmpdir'] += '-α'

+ 1 - 1
test/test_py_d/ts_base.py

@@ -53,7 +53,7 @@ class TestSuiteBase(object):
 
 	@property
 	def tmpdir(self):
-		return os.path.join('test','tmp{}{}'.format(self.tmpdir_num,'-α' if g.debug_utf8 else ''))
+		return os.path.join('test','tmp','{}{}'.format(self.tmpdir_num,'-α' if g.debug_utf8 else ''))
 
 	@property
 	def segwit_mmtype(self):

+ 1 - 1
test/tooltest.py

@@ -107,7 +107,7 @@ if proto.coin == 'XMR' or opt.type == 'zcash_z':
 cfg = {
 	'name':          'the tool utility',
 	'enc_passwd':    'Ten Satoshis',
-	'tmpdir':        'test/tmp10',
+	'tmpdir':        'test/tmp/10',
 	'tmpdir_num':    10,
 	'refdir':        'test/ref',
 	'txfile': {