ext: Fix tmpfiles in testlib
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>
diff --git a/ext/testlib/helper.py b/ext/testlib/helper.py
index 18256ea..ac49e46 100644
--- a/ext/testlib/helper.py
+++ b/ext/testlib/helper.py
@@ -390,13 +390,13 @@
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 @@
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 @@
@staticmethod
def timestamp():
- return time.time()
\ No newline at end of file
+ return time.time()