diff --git a/mmgen/color.py b/mmgen/color.py index 49f43c8e..35c5b219 100755 --- a/mmgen/color.py +++ b/mmgen/color.py @@ -60,8 +60,10 @@ def get_terminfo_colors(term=None): try: cmdout = run(cmd,stdout=PIPE,check=True).stdout.decode() except: + set_vt100() return None else: + set_vt100() s = [e.split('#')[1] for e in cmdout.split(',') if e.startswith('colors')][0] from .util import is_hex_str if s.isdecimal(): diff --git a/mmgen/daemon.py b/mmgen/daemon.py index add5c87c..839ade4a 100755 --- a/mmgen/daemon.py +++ b/mmgen/daemon.py @@ -25,6 +25,7 @@ from subprocess import run,PIPE,CompletedProcess from collections import namedtuple from .globalvars import g +from .color import set_vt100 from .util import msg,Msg_r,die from .flags import * @@ -79,6 +80,7 @@ class Daemon(Lockable): cp = run(cmd,check=False,stdout=out,stderr=out) except Exception as e: die( 'MMGenCalledProcessError', f'Error starting executable: {type(e).__name__} [Errno {e.errno}]' ) + set_vt100() if self.debug: print(cp) return cp @@ -425,9 +427,10 @@ class CoinDaemon(Daemon): "remove the network's datadir" assert self.test_suite, 'datadir removal restricted to test suite' if self.state == 'stopped': - try: # exception handling required for MSWin/MSYS2 - run(['/bin/rm','-rf',self.network_datadir]) - except: - pass + run([ + ('rm' if g.platform == 'win' else '/bin/rm'), + '-rf', + self.datadir ]) + set_vt100() else: msg(f'Cannot remove {self.network_datadir!r} - daemon is not stopped') diff --git a/mmgen/fileutil.py b/mmgen/fileutil.py index fc2ad0b0..904ff581 100755 --- a/mmgen/fileutil.py +++ b/mmgen/fileutil.py @@ -23,6 +23,7 @@ fileutil.py: Routines that read, write, execute or stat files import sys,os from .globalvars import g +from .color import set_vt100 from .util import ( msg, qmsg, @@ -43,10 +44,11 @@ def check_or_create_dir(path): except: if os.getenv('MMGEN_TEST_SUITE'): from subprocess import run - try: # exception handling required for MSWin/MSYS2 - run(['/bin/rm','-rf',path]) - except: - pass + run([ + ('rm' if g.platform == 'win' else '/bin/rm'), + '-rf', + path ]) + set_vt100() try: os.makedirs(path,0o700) except: @@ -58,6 +60,7 @@ def check_binary(args): run(args,stdout=DEVNULL,stderr=DEVNULL,check=True) except: die(2,f'{args[0]!r} binary missing, not in path, or not executable') + set_vt100() def shred_file(fn,verbose=False): check_binary(['shred','--version']) @@ -67,6 +70,7 @@ def shred_file(fn,verbose=False): + (['--verbose'] if verbose else []) + [fn], check=True ) + set_vt100() def _check_file_type_and_access(fname,ftype,blkdev_ok=False): diff --git a/mmgen/rpc.py b/mmgen/rpc.py index 4dda0346..545c1f56 100755 --- a/mmgen/rpc.py +++ b/mmgen/rpc.py @@ -241,7 +241,9 @@ class RPCBackends: dmsg_rpc(' RPC curl exec data ==>\n{}\n',exec_cmd) from subprocess import run,PIPE + from .color import set_vt100 res = run(exec_cmd,stdout=PIPE,check=True).stdout.decode() + set_vt100() # res = run(exec_cmd,stdout=PIPE,check=True,text='UTF-8').stdout # Python 3.7+ return (res[:-3],int(res[-3:])) diff --git a/mmgen/util.py b/mmgen/util.py index 34b0b811..571a29e2 100755 --- a/mmgen/util.py +++ b/mmgen/util.py @@ -607,6 +607,7 @@ def do_pager(text): pagers = [os.environ['PAGER']] + pagers from subprocess import run + from .color import set_vt100 for pager in pagers: try: m = text + ('' if pager == 'less' else end_msg) @@ -618,6 +619,7 @@ def do_pager(text): break else: Msg(text+end_msg) + set_vt100() def do_license_msg(immed=False): diff --git a/setup.py b/setup.py index 0e5c3b49..a868ffa9 100755 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ def build_libsecp256k1(): 'Windows': ( ['sh','./autogen.sh'], ['sh','./configure','CFLAGS=-g -O2 -fPIC','--disable-dependency-tracking'], - ['mingw32-make'] + ['mingw32-make','MAKE=mingw32-make'] ), 'Linux': ( ['./autogen.sh'], diff --git a/test/colortest.py b/test/colortest.py index 616a7003..859076ce 100755 --- a/test/colortest.py +++ b/test/colortest.py @@ -29,7 +29,6 @@ def test_color(): for t,c in (('rxvt',8),('xterm',8),('rxvt-unicode',88),('screen-256color',256),('xterm-256color',256)): ret = get_terminfo_colors(t) if ret == None: - set_vt100() ymsg(f'Warning: unable to get info for terminal {t!r}') continue msg(f'{t}: {orange(str(ret))}') @@ -37,6 +36,5 @@ def test_color(): ret = get_terminfo_colors() msg(f'{os.getenv("TERM")} (this terminal): {orange(str(ret))}') - set_vt100() test_color() diff --git a/test/test-release.sh b/test/test-release.sh index b86d570a..5e75668e 100755 --- a/test/test-release.sh +++ b/test/test-release.sh @@ -41,6 +41,8 @@ noalt_tests='dep misc obj color unit hash ref autosign_btc btc btc_tn btc_rt too quick_tests='dep misc obj color unit hash ref altref alts xmr eth autosign btc btc_rt tool tool2 gen' qskip_tests='btc_tn bch bch_rt ltc ltc_rt' +[ "$MSYS2" ] && SKIP_LIST='autosign autosign_btc autosign_live' + PROGNAME=$(basename $0) while getopts hAbCdDfFi:I:lNOps:tvV OPT do diff --git a/test/test_py_d/ts_autosign.py b/test/test_py_d/ts_autosign.py index f5cb297e..a1b5c48d 100755 --- a/test/test_py_d/ts_autosign.py +++ b/test/test_py_d/ts_autosign.py @@ -84,6 +84,8 @@ class TestSuiteAutosignBase(TestSuiteBase): super().__init__(trunner,cfgs,spawn) if trunner == None: return + if g.platform == 'win': + die(1,f'Test {type(self).__name__} not supported for Windows platform') self.network_ids = [c+'_tn' for c in self.daemon_coins] + self.daemon_coins if self.simulate and not opt.exact_output: @@ -124,6 +126,8 @@ class TestSuiteAutosignBase(TestSuiteBase): self.bad_msg_count = 0 def __del__(self): + if g.platform == 'win': + return if self.simulate or not self.live: LEDControl.delete_dummy_control_files() diff --git a/test/test_py_d/ts_input.py b/test/test_py_d/ts_input.py index 0d42661f..571bb7f4 100755 --- a/test/test_py_d/ts_input.py +++ b/test/test_py_d/ts_input.py @@ -45,10 +45,12 @@ class TestSuiteInput(TestSuiteBase): def get_seed_from_stdin(self): self.spawn('',msg_only=True) from subprocess import run,PIPE - cmd = ['cmds/mmgen-walletconv','--in-fmt=words','--out-fmt=bip39','--outdir=test/trash'] + cmd = ['python3','cmds/mmgen-walletconv','--in-fmt=words','--out-fmt=bip39','--outdir=test/trash'] mn = sample_mn['mmgen']['mn'] os.environ['MMGEN_TEST_SUITE'] = '' cp = run( cmd, input=mn.encode(), stdout=PIPE, stderr=PIPE ) + from mmgen.color import set_vt100 + set_vt100() os.environ['MMGEN_TEST_SUITE'] = '1' assert b'written to file' in cp.stderr, "test 'get_seed_from_stdin' failed" imsg(cp.stderr.decode().strip())