From 0b6d047c253a85b7301bd08e8626c5bd06b2fa63 Mon Sep 17 00:00:00 2001 From: MMGen Date: Tue, 8 May 2018 10:44:12 +0000 Subject: [PATCH] test.py: add throwaway tmp dir --- test/test.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/test/test.py b/test/test.py index cbf73eb5..39eca769 100755 --- a/test/test.py +++ b/test/test.py @@ -82,20 +82,22 @@ shortopts = ['-'+e for e in list(shortopts)] data_dir_basename = 'data_dir' + ('',u'-α')[bool(os.getenv('MMGEN_DEBUG_UTF8'))] data_dir = path_join('test',data_dir_basename) data_dir_enc = data_dir.encode('utf8') +trash_dir = path_join('test','trash') if not any(e in ('--skip-deps','--resume','-S','-r') for e in sys.argv+shortopts): if g.platform == 'win': - try: os.listdir(data_dir_enc) - except: pass - else: - try: shutil.rmtree(data_dir_enc) - except: # we couldn't remove data dir - perhaps regtest daemon is running - try: subprocess.call(['python',os.path.join('cmds','mmgen-regtest'),'stop']) - except: rdie(1,'Unable to remove data dir!') - else: - time.sleep(2) - shutil.rmtree(data_dir_enc) - os.mkdir(data_dir_enc,0755) + for tdir in (data_dir_enc,trash_dir): + try: os.listdir(tdir) + except: pass + else: + try: shutil.rmtree(tdir) + except: # we couldn't remove data dir - perhaps regtest daemon is running + try: subprocess.call(['python',os.path.join('cmds','mmgen-regtest'),'stop']) + except: rdie(1,"Unable to remove {!r}!".format(tdir)) + else: + time.sleep(2) + shutil.rmtree(tdir) + os.mkdir(tdir,0755) else: d,pfx = '/dev/shm','mmgen-test-' try: @@ -107,11 +109,12 @@ if not any(e in ('--skip-deps','--resume','-S','-r') for e in sys.argv+shortopts shm_dir = tempfile.mkdtemp('',pfx,d) except Exception as e: die(2,'Unable to create temporary directory in {} ({})'.format(d,e)) - dd = path_join(shm_dir,data_dir_basename,decode=False) - os.mkdir(dd,0755) - try: os.unlink(data_dir_enc) - except: pass - os.symlink(dd,data_dir_enc) + for tdir in (data_dir_enc,trash_dir): + dd = path_join(shm_dir,os.path.basename(tdir),decode=False) + os.mkdir(dd,0755) + try: os.unlink(tdir) + except: pass + os.symlink(dd,tdir) opts_data = lambda: { 'desc': 'Test suite for the MMGen suite', @@ -1359,6 +1362,7 @@ def clean(usr_dirs=[]): else: die(1,'{}: invalid directory number'.format(d)) cleandir(data_dir) + cleandir(trash_dir) def skip_for_win(): if g.platform == 'win':