cmdtest.py: minor cleanups
This commit is contained in:
parent
11e648f4c9
commit
5273b2dc5e
3 changed files with 58 additions and 36 deletions
|
|
@ -250,14 +250,14 @@ def list_cmds():
|
|||
|
||||
for gname in gm.cmd_groups:
|
||||
tg = gm.gm_init_group(cfg, None, gname, None, None)
|
||||
desc = tg.__doc__.strip() if tg.__doc__ else type(tg).__name__
|
||||
d.append((gname, desc, gm.cmd_list, gm.dpy_data))
|
||||
gdesc = tg.__doc__.strip() if tg.__doc__ else type(tg).__name__
|
||||
d.append((gname, gdesc, gm.cmd_list, gm.dpy_data))
|
||||
cw = max(max(len(k) for k in gm.dpy_data), cw)
|
||||
|
||||
for gname, gdesc, clist, dpdata in d:
|
||||
for gname, gdesc, cmd_list, dpy_data in d:
|
||||
yield '\n'+green(f'{gname!r} - {gdesc}:')
|
||||
for cmd in clist:
|
||||
data = dpdata[cmd]
|
||||
for cmd in cmd_list:
|
||||
data = dpy_data[cmd]
|
||||
yield ' {:{w}} - {}'.format(
|
||||
cmd,
|
||||
(data if isinstance(data, str) else data[1]),
|
||||
|
|
@ -266,8 +266,6 @@ def list_cmds():
|
|||
from mmgen.ui import do_pager
|
||||
do_pager('\n'.join(gen_output()))
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
def create_tmp_dirs(shm_dir):
|
||||
if sys.platform in ('win32', 'darwin'):
|
||||
for cfg in sorted(cfgs):
|
||||
|
|
@ -301,8 +299,10 @@ if __name__ == '__main__':
|
|||
if cfg.list_cmd_groups:
|
||||
from test.cmdtest_d.group_mgr import CmdGroupMgr
|
||||
CmdGroupMgr(cfg).list_cmd_groups()
|
||||
sys.exit(0)
|
||||
elif cfg.list_cmds:
|
||||
list_cmds()
|
||||
sys.exit(0)
|
||||
|
||||
if cfg.pause:
|
||||
set_restore_term_at_exit()
|
||||
|
|
|
|||
|
|
@ -26,6 +26,19 @@ class CmdGroupMgr:
|
|||
cmd_groups = cmd_groups_dfl.copy()
|
||||
cmd_groups.update(cmd_groups_extra)
|
||||
|
||||
cfg_attrs = (
|
||||
'seed_len',
|
||||
'seed_id',
|
||||
'wpasswd',
|
||||
'kapasswd',
|
||||
'segwit',
|
||||
'hash_preset',
|
||||
'bw_filename',
|
||||
'bw_params',
|
||||
'ref_bw_seed_id',
|
||||
'addr_idx_list',
|
||||
'pass_idx_list')
|
||||
|
||||
def __init__(self, cfg):
|
||||
self.cfg = cfg
|
||||
self.network_id = cfg._proto.coin.lower() + ('_tn' if cfg._proto.testnet else '')
|
||||
|
|
@ -109,8 +122,10 @@ class CmdGroupMgr:
|
|||
cdata.append((k, (i, f'{b} ({j}-bit)', [[[]+sdeps, i]])))
|
||||
else:
|
||||
cdata.append((k, (i, f'{b[1]} ({j}-bit)', [[b[0]+sdeps, i]])))
|
||||
elif full_data:
|
||||
cdata.append((a, b))
|
||||
else:
|
||||
cdata.append((a, b if full_data else (cls.tmpdir_nums[0], b, [[[], cls.tmpdir_nums[0]]])))
|
||||
cdata.append((a, (cls.tmpdir_nums[0], b, [[[], cls.tmpdir_nums[0]]])))
|
||||
|
||||
if add_dpy:
|
||||
self.dpy_data.update(dict(cdata))
|
||||
|
|
@ -118,6 +133,13 @@ class CmdGroupMgr:
|
|||
self.cmd_list = tuple(e[0] for e in cdata)
|
||||
self.dpy_data = dict(cdata)
|
||||
|
||||
cls.full_data = full_data or is3seed
|
||||
|
||||
if not cls.full_data:
|
||||
cls.tmpdir_num = cls.tmpdir_nums[0]
|
||||
for k, v in cfgs[str(cls.tmpdir_num)].items():
|
||||
setattr(cls, k, v)
|
||||
|
||||
return cls
|
||||
|
||||
def gm_init_group(self, cfg, trunner, gname, sg_name, spawn_prog):
|
||||
|
|
@ -161,7 +183,6 @@ class CmdGroupMgr:
|
|||
do_pager('\n'.join(gen_output()))
|
||||
|
||||
Msg('\n' + ' '.join(e[0] for e in ginfo))
|
||||
sys.exit(0)
|
||||
|
||||
def find_cmd_in_groups(self, cmd, group=None):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -33,6 +33,13 @@ from .common import get_file_with_ext, confirm_continue
|
|||
from .cfg import cfgs, cmd_groups_dfl
|
||||
from .group_mgr import CmdGroupMgr
|
||||
|
||||
def format_args(args):
|
||||
try:
|
||||
return ' '.join((f"'{a}'" if ' ' in a else a) for a in args).replace('\\', '/') # for MSYS2
|
||||
except Exception as e:
|
||||
print(type(e), e)
|
||||
print('cmdline:', args)
|
||||
|
||||
class CmdTestRunner:
|
||||
'cmdtest.py test runner'
|
||||
|
||||
|
|
@ -150,17 +157,11 @@ class CmdTestRunner:
|
|||
passthru_opts +
|
||||
args)
|
||||
|
||||
try:
|
||||
qargs = ['{q}{}{q}'.format(a, q = "'" if ' ' in a else '') for a in args]
|
||||
except:
|
||||
msg(f'args: {args}')
|
||||
raise
|
||||
|
||||
cmd_disp = ' '.join(qargs).replace('\\', '/') # for mingw
|
||||
cmd_disp = format_args(args)
|
||||
|
||||
if self.logging:
|
||||
self.log_fd.write('[{}][{}:{}] {}\n'.format(
|
||||
(self.proto.coin.lower() if 'coin' in self.tg.passthru_opts else 'NONE'),
|
||||
(self.proto.coin.lower() if 'coin' in passthru_opts else 'NONE'),
|
||||
self.tg.group_name,
|
||||
self.tg.test_name,
|
||||
cmd_disp))
|
||||
|
|
@ -428,14 +429,16 @@ class CmdTestRunner:
|
|||
if self.deps_only and cmd == self.deps_only:
|
||||
sys.exit(0)
|
||||
|
||||
d = [(str(num), ext) for exts, num in self.gm.dpy_data[cmd][2] for ext in exts]
|
||||
if self.tg.full_data:
|
||||
d = [(str(num), ext) for exts, num in self.gm.dpy_data[cmd][2] for ext in exts]
|
||||
# delete files depended on by this cmd
|
||||
arg_list = [get_file_with_ext(cfgs[num]['tmpdir'], ext) for num, ext in d]
|
||||
|
||||
# delete files depended on by this cmd
|
||||
arg_list = [get_file_with_ext(cfgs[num]['tmpdir'], ext) for num, ext in d]
|
||||
|
||||
# remove shared_deps from arg list
|
||||
if hasattr(self.tg, 'shared_deps'):
|
||||
arg_list = arg_list[:-len(self.tg.shared_deps)]
|
||||
# remove shared_deps from arg list
|
||||
if hasattr(self.tg, 'shared_deps'):
|
||||
arg_list = arg_list[:-len(self.tg.shared_deps)]
|
||||
else:
|
||||
arg_list = []
|
||||
|
||||
if self.resume_cmd:
|
||||
if cmd != self.resume_cmd:
|
||||
|
|
@ -449,20 +452,18 @@ class CmdTestRunner:
|
|||
start = time.time()
|
||||
|
||||
self.tg.test_name = cmd # NB: Do not remove, this needs to be set twice
|
||||
cdata = self.gm.dpy_data[cmd]
|
||||
# self.tg.test_dpydata = cdata
|
||||
self.tg.tmpdir_num = cdata[0]
|
||||
# self.tg.self.cfg = cfgs[str(cdata[0])] # will remove this eventually
|
||||
test_cfg = cfgs[str(cdata[0])]
|
||||
for k in (
|
||||
'seed_len', 'seed_id', 'wpasswd', 'kapasswd', 'segwit', 'hash_preset', 'bw_filename',
|
||||
'bw_params', 'ref_bw_seed_id', 'addr_idx_list', 'pass_idx_list'):
|
||||
if k in test_cfg:
|
||||
setattr(self.tg, k, test_cfg[k])
|
||||
|
||||
if self.tg.full_data:
|
||||
tmpdir_num = self.gm.dpy_data[cmd][0]
|
||||
self.tg.tmpdir_num = tmpdir_num
|
||||
for k in (test_cfg := cfgs[str(tmpdir_num)]):
|
||||
if k in self.gm.cfg_attrs:
|
||||
setattr(self.tg, k, test_cfg[k])
|
||||
|
||||
ret = getattr(self.tg, cmd)(*arg_list) # run the test
|
||||
if type(ret).__name__ == 'coroutine':
|
||||
ret = asyncio.run(ret)
|
||||
|
||||
self.process_retval(cmd, ret)
|
||||
|
||||
if self.cfg.profile:
|
||||
|
|
@ -484,13 +485,13 @@ class CmdTestRunner:
|
|||
elif ret == 'ok':
|
||||
ok()
|
||||
self.cmd_total += 1
|
||||
elif ret == 'error':
|
||||
die(2, red(f'\nTest {self.tg.test_name!r} failed'))
|
||||
elif ret in ('skip', 'skip_msg', 'silent'):
|
||||
if ret == 'silent':
|
||||
self.cmd_total += 1
|
||||
elif ret == 'skip_msg':
|
||||
ok('SKIP')
|
||||
elif ret == 'error':
|
||||
die(2, red(f'\nTest {self.tg.test_name!r} failed'))
|
||||
elif isinstance(ret, tuple) and ret[0] == 'skip_warn':
|
||||
self.skipped_warnings.append(
|
||||
'Test {!r} was skipped:\n {}'.format(cmd, '\n '.join(ret[1].split('\n'))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue