From 840b4d1d435e09e151c261a19356ea7f21eaf3c5 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 26 Jul 2022 14:09:44 +0000 Subject: [PATCH] `test.py`: move tmpdirs, move config code to `test_py_d.cfg` --- mmgen/data/version | 2 +- test/include/common.py | 3 +- test/test.py | 216 +--------------------------------- test/test_py_d/cfg.py | 236 ++++++++++++++++++++++++++++++++++++++ test/test_py_d/ts_base.py | 2 +- test/tooltest.py | 2 +- 6 files changed, 246 insertions(+), 215 deletions(-) create mode 100755 test/test_py_d/cfg.py diff --git a/mmgen/data/version b/mmgen/data/version index 391652bb..d5e021ec 100644 --- a/mmgen/data/version +++ b/mmgen/data/version @@ -1 +1 @@ -13.2.dev9 +13.2.dev10 diff --git a/test/include/common.py b/test/include/common.py index 235d229b..322d1da7 100755 --- a/test/include/common.py +++ b/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 diff --git a/test/test.py b/test/test.py index 6206d330..d1d316b5 100755 --- a/test/test.py +++ b/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 -} +from test.test_py_d.cfg import cfgs,fixup_cfgs -def fixup_cfgs(): - for k in ('6','7','8'): - cfgs['2'+k] = {} - cfgs['2'+k].update(cfgs[k]) - - 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) diff --git a/test/test_py_d/cfg.py b/test/test_py_d/cfg.py new file mode 100755 index 00000000..4b47b375 --- /dev/null +++ b/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 +# 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'] += '-α' diff --git a/test/test_py_d/ts_base.py b/test/test_py_d/ts_base.py index 5d1c4873..2ec9ae3d 100755 --- a/test/test_py_d/ts_base.py +++ b/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): diff --git a/test/tooltest.py b/test/tooltest.py index 8704282e..76884a38 100755 --- a/test/tooltest.py +++ b/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': {