From 188fd4ba614e60e74a38ae2442ac747829564902 Mon Sep 17 00:00:00 2001 From: Renato Alves Date: Fri, 5 Jun 2015 14:09:47 +0100 Subject: [PATCH] Tests: Accessory functions to create temporary files These use tempfile.NamedTemporaryFile but allow execution without raising "Text file busy". The file is removed at exit (of the process) so no cleanup is necessary. --- test/basetest/utils.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) 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