diff --git a/test/basetest/utils.py b/test/basetest/utils.py index b9824cfc6..7604af12e 100644 --- a/test/basetest/utils.py +++ b/test/basetest/utils.py @@ -5,6 +5,8 @@ import sys import socket import signal import functools +import atexit +import tempfile from subprocess import Popen, PIPE, STDOUT from threading import Thread from Queue import Queue, Empty @@ -444,4 +446,32 @@ def parse_datafile(file): return data +def mkstemp(data): + """ + Create a temporary file that is removed at process exit + """ + def rmtemp(name): + try: + os.remove(name) + except OSError: + pass + + f = tempfile.NamedTemporaryFile(delete=False) + f.write(data) + f.close() + + # Ensure removal at end of python session + atexit.register(rmtemp, f.name) + + return f.name + + +def mkstemp_exec(data): + """Create a temporary executable file that is removed at process exit + """ + name = mkstemp(data) + os.chmod(name, 0755) + + return name + # vim: ai sts=4 et sw=4