diff --git a/mmgen/altcoin/util.py b/mmgen/altcoin/util.py index a9556752..a60a6bc3 100755 --- a/mmgen/altcoin/util.py +++ b/mmgen/altcoin/util.py @@ -12,7 +12,7 @@ altcoin.util: various altcoin-related utilities """ -from mmgen.util import die +from ..util import die def decrypt_keystore(data,passwd,mac_algo=None,mac_params={}): """ diff --git a/mmgen/main_txsend.py b/mmgen/main_txsend.py index 3927e4ee..ca937368 100755 --- a/mmgen/main_txsend.py +++ b/mmgen/main_txsend.py @@ -80,7 +80,9 @@ async def main(): tx.file.write(ask_write_default_yes=True) await tx.send(exit_on_fail=True) - tx.file.write(ask_overwrite=False,ask_write=False) + tx.file.write( + ask_overwrite = False, + ask_write = False) tx.print_contract_addr() async_run(main()) diff --git a/mmgen/main_txsign.py b/mmgen/main_txsign.py index 4813cdb5..6bb29dcc 100755 --- a/mmgen/main_txsign.py +++ b/mmgen/main_txsign.py @@ -114,8 +114,8 @@ if not cfg.info and not cfg.terse_info: from .tx.sign import txsign,get_tx_files,get_seed_files,get_keylist,get_keyaddrlist -tx_files = get_tx_files(infiles) -seed_files = get_seed_files(cfg,infiles) +tx_files = get_tx_files(cfg, infiles) +seed_files = get_seed_files(cfg, infiles) async def main(): diff --git a/mmgen/share/Opts.py b/mmgen/share/Opts.py index 104b31ce..197ec9fd 100755 --- a/mmgen/share/Opts.py +++ b/mmgen/share/Opts.py @@ -69,7 +69,7 @@ def make_help(cfg,proto,opts_data,opt_filter): pn = opts_data['prog_name'] - from mmgen.help import help_notes_func + from ..help import help_notes_func def help_notes(k): return help_notes_func(proto,cfg,k) diff --git a/mmgen/tx/__init__.py b/mmgen/tx/__init__.py index 9585127f..68a7b687 100755 --- a/mmgen/tx/__init__.py +++ b/mmgen/tx/__init__.py @@ -71,7 +71,9 @@ async def _get_obj_async( _clsname, _modname, *args, **kwargs ): # (see twctl:import_token()). # No twctl required for the Unsigned and Signed(data=unsigned.__dict__) classes used during # signing. - if proto and proto.tokensym and clsname in ('New','OnlineSigned'): + if proto and proto.tokensym and clsname in ( + 'New', + 'OnlineSigned'): from ..tw.ctl import TwCtl kwargs['twctl'] = await TwCtl(cfg,proto) diff --git a/mmgen/tx/file.py b/mmgen/tx/file.py index d1101162..51d098d6 100755 --- a/mmgen/tx/file.py +++ b/mmgen/tx/file.py @@ -19,6 +19,7 @@ """ tx.file: Transaction file operations for the MMGen suite """ +import os from ..util import ymsg,make_chksum_6,die from ..obj import MMGenObject,HexStr,MMGenTxID,CoinTxID,MMGenTxComment @@ -113,7 +114,7 @@ class MMGenTxFile(MMGenObject): tx.proto.tokensym = tokensym desc = 'metadata (4 items)' - txid,send_amt,tx.timestamp,blockcount = metadata + (txid, send_amt, tx.timestamp, blockcount) = metadata desc = 'TxID in metadata' tx.txid = MMGenTxID(txid) @@ -193,6 +194,7 @@ class MMGenTxFile(MMGenObject): def write(self, add_desc = '', + outdir = None, ask_write = True, ask_write_default_yes = False, ask_tty = True, @@ -210,13 +212,14 @@ class MMGenTxFile(MMGenObject): from ..fileutil import write_data_to_file write_data_to_file( cfg = self.tx.cfg, - outfile = self.filename, + outfile = os.path.join((outdir or ''), self.filename), data = self.fmt_data, desc = self.tx.desc + add_desc, ask_overwrite = ask_overwrite, ask_write = ask_write, ask_tty = ask_tty, - ask_write_default_yes = ask_write_default_yes ) + ask_write_default_yes = ask_write_default_yes, + ignore_opt_outdir = outdir) @classmethod def get_proto(cls,cfg,filename,quiet_open=False): diff --git a/mmgen/tx/sign.py b/mmgen/tx/sign.py index be43165f..9806d201 100755 --- a/mmgen/tx/sign.py +++ b/mmgen/tx/sign.py @@ -111,7 +111,7 @@ def add_keys(tx,src,infiles=None,saved_seeds=None,keyaddr_list=None): def _pop_matching_fns(args,cmplist): # strips found args return list(reversed([args.pop(args.index(a)) for a in reversed(args) if get_extension(a) in cmplist])) -def get_tx_files(args): +def get_tx_files(cfg, args): from .unsigned import Unsigned ret = _pop_matching_fns(args,[Unsigned.ext]) if not ret: diff --git a/test/cmdtest.py b/test/cmdtest.py index 4659fffe..2c10b017 100755 --- a/test/cmdtest.py +++ b/test/cmdtest.py @@ -614,6 +614,7 @@ class CmdTestRunner: timeout = None, pexpect_spawn = None, direct_exec = False, + no_passthru_opts = False, env = {}): desc = self.tg.test_name if cfg.names else self.gm.dpy_data[self.tg.test_name][1] @@ -628,7 +629,7 @@ class CmdTestRunner: self.pre_args + ([] if no_exec_wrapper else ['scripts/exec_wrapper.py']) + [cmd_path] + - self.passthru_opts + + ([] if no_passthru_opts else self.passthru_opts) + self.tg.extra_spawn_args + args ) @@ -968,9 +969,11 @@ class CmdTestRunner: self.cmd_total += 1 elif ret == 'error': die(2,red(f'\nTest {self.tg.test_name!r} failed')) - elif ret in ('skip','silent'): + elif ret in ('skip','skip_msg','silent'): if ret == 'silent': self.cmd_total += 1 + elif ret == 'skip_msg': + ok('SKIP') 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')))) diff --git a/test/cmdtest_py_d/ct_autosign.py b/test/cmdtest_py_d/ct_autosign.py index 646e3589..c056bcde 100755 --- a/test/cmdtest_py_d/ct_autosign.py +++ b/test/cmdtest_py_d/ct_autosign.py @@ -130,9 +130,10 @@ class CmdTestAutosignBase(CmdTestBase): t = self.spawn( 'mmgen-autosign', - self.opts + - ([] if mn_desc == 'default' else [f'--mnemonic-fmt={mn_type}']) + - ['setup'] ) + self.opts + + ([] if mn_desc == 'default' else [f'--mnemonic-fmt={mn_type}']) + + ['setup'], + no_passthru_opts = True) if use_dfl_wallet: t.expect( 'Use default wallet for autosigning? (Y/n): ', 'y' ) @@ -177,7 +178,11 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase): def autosign_start_thread(self): def run(): - t = self.spawn('mmgen-autosign', self.opts + ['--full-summary','wait'], direct_exec=True) + t = self.spawn( + 'mmgen-autosign', + self.opts + ['--full-summary','wait'], + direct_exec = True, + no_passthru_opts = True) self.write_to_tmpfile('autosign_thread_pid',str(t.ep.pid)) import threading threading.Thread(target=run, name='Autosign wait loop').start() @@ -213,6 +218,7 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase): oqmsg(gray('..done')) break time.sleep(0.5) + imsg('') self.remove_device() @property diff --git a/test/include/common.py b/test/include/common.py index e67456e9..1522ed41 100755 --- a/test/include/common.py +++ b/test/include/common.py @@ -171,13 +171,13 @@ def read_from_tmpfile(cfg,fn,binary=False): def joinpath(*args,**kwargs): return os.path.join(*args,**kwargs) -def ok(): +def ok(text='OK'): if cfg.profile: return if cfg.verbose or cfg.exact_output: - gmsg('OK') + gmsg(text) else: - msg(' OK') + msg(f' {text}') def cmp_or_die(s,t,desc=None): if s != t: diff --git a/test/test-release.d/cfg.sh b/test/test-release.d/cfg.sh index 9abf46f5..aef143ba 100755 --- a/test/test-release.d/cfg.sh +++ b/test/test-release.d/cfg.sh @@ -185,7 +185,7 @@ init_tests() { t_bch="- $cmdtest_py --coin=bch --exclude regtest" d_bch_tn="overall operations with emulated RPC data (Bitcoin Cash Node testnet)" - t_bch_tn="- $cmdtest_py --coin=bch --testnet=1 --exclude regtest" + t_bch_tn="- $cmdtest_py --coin=bch --testnet=1" d_bch_rt="overall operations using the regtest network (Bitcoin Cash Node)" t_bch_rt="- $cmdtest_py --coin=bch regtest" @@ -200,7 +200,7 @@ init_tests() { d_ltc_tn="overall operations with emulated RPC data (Litecoin testnet)" t_ltc_tn=" - - $cmdtest_py --coin=ltc --testnet=1 --exclude regtest + - $cmdtest_py --coin=ltc --testnet=1 - $cmdtest_py --coin=ltc --testnet=1 --segwit - $cmdtest_py --coin=ltc --testnet=1 --segwit-random - $cmdtest_py --coin=ltc --testnet=1 --bech32