Browse Source

test.py: add throwaway tmp dir

MMGen 7 years ago
parent
commit
0b6d047c25
1 changed files with 20 additions and 16 deletions
  1. 20 16
      test/test.py

+ 20 - 16
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':