test.py: add throwaway tmp dir

This commit is contained in:
The MMGen Project 2018-05-08 10:44:12 +00:00
commit 0b6d047c25
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2

View file

@ -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':