diff options
-rw-r--r-- | src/test/test.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/test/test.c b/src/test/test.c index f0f86cdb5..2d396b581 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -70,6 +70,7 @@ int have_failed = 0; /** Temporary directory (set up by setup_directory) under which we store all * our files during testing. */ static char temp_dir[256]; +static pid_t temp_dir_setup_in_pid = 0; /** Select and create the temporary directory we'll use to run our unit tests. * Store it in <b>temp_dir</b>. Exit immediately if we can't create it. @@ -96,6 +97,7 @@ setup_directory(void) exit(1); } is_setup = 1; + temp_dir_setup_in_pid = getpid(); } /** Return a filename relative to our testing temporary directory */ @@ -109,11 +111,16 @@ get_fname(const char *name) } /** Remove all files stored under the temporary directory, and the directory - * itself. */ + * itself. Called by atexit(). */ static void remove_directory(void) { - smartlist_t *elements = tor_listdir(temp_dir); + smartlist_t *elements; + if (getpid() != temp_dir_setup_in_pid) { + /* Only clean out the tempdir when the main process is exiting. */ + return; + } + elements = tor_listdir(temp_dir); if (elements) { SMARTLIST_FOREACH(elements, const char *, cp, { |