ext: Fix tmpfiles in testlib
authorJason Lowe-Power <jason@lowepower.com>
Tue, 16 Jul 2019 22:13:06 +0000 (15:13 -0700)
committerJason Lowe-Power <power.jg@gmail.com>
Sat, 2 May 2020 00:23:12 +0000 (00:23 +0000)
Previously, the testlib would generate and not clean up 100s of
temporary files in /tmp. This puts all of the tempfiles in the same
directory to make sure they are cleaned up on a successful test.

Change-Id: If4dcd93ab4b5df556c046753266a71365d1388c1
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19528
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
ext/testlib/helper.py

index 18256eab097b538994e49eda262f6cd908743b8f..ac49e468ebb06df4302cdd7696e0a91d529d1f19 100644 (file)
@@ -390,13 +390,13 @@ def _copy_file_keep_perms(source, target):
     os.chown(target, st[stat.ST_UID], st[stat.ST_GID])
 
 
-def _filter_file_inplace(fname, filters):
+def _filter_file_inplace(fname, dir, filters):
     '''
     Filter the given file writing filtered lines out to a temporary file, then
     copy that tempfile back into the original file.
     '''
     reenter = False
-    (_, tfname) = tempfile.mkstemp(text=True)
+    (_, tfname) = tempfile.mkstemp(dir=dir, text=True)
     with open(tfname, 'w') as tempfile_:
         for line in _filter_file(fname, filters):
             tempfile_.write(line)
@@ -414,11 +414,11 @@ def diff_out_file(ref_file, out_file, logger, ignore_regexes=tuple()):
     if not os.path.exists(out_file):
         raise OSError("%s doesn't exist in output directory" % out_file)
 
-    _filter_file_inplace(out_file, ignore_regexes)
-    _filter_file_inplace(ref_file, ignore_regexes)
+    _filter_file_inplace(out_file, os.path.dirname(out_file), ignore_regexes)
+    _filter_file_inplace(ref_file, os.path.dirname(out_file), ignore_regexes)
 
     #try :
-    (_, tfname) = tempfile.mkstemp(text=True)
+    (_, tfname) = tempfile.mkstemp(dir=os.path.dirname(out_file), text=True)
     with open(tfname, 'r+') as tempfile_:
         try:
             log_call(logger, ['diff', out_file, ref_file], stdout=tempfile_)
@@ -457,4 +457,4 @@ class Timer():
 
     @staticmethod
     def timestamp():
-        return time.time()
\ No newline at end of file
+        return time.time()