summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk1
-rw-r--r--spec/mspec/lib/mspec/helpers/tmp.rb18
2 files changed, 15 insertions, 4 deletions
diff --git a/common.mk b/common.mk
index 449f032074..616276eb2a 100644
--- a/common.mk
+++ b/common.mk
@@ -823,7 +823,6 @@ test-spec: $(TEST_RUNNABLE)-test-spec
yes-test-spec: test-spec-precheck
$(gnumake_recursive)$(Q) \
$(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
- $(RMDIR) rubyspec_temp
no-test-spec:
RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable
diff --git a/spec/mspec/lib/mspec/helpers/tmp.rb b/spec/mspec/lib/mspec/helpers/tmp.rb
index 5062991d63..433c0b6d88 100644
--- a/spec/mspec/lib/mspec/helpers/tmp.rb
+++ b/spec/mspec/lib/mspec/helpers/tmp.rb
@@ -4,13 +4,25 @@
# directory is empty when the process exits.
SPEC_TEMP_DIR_PID = Process.pid
-SPEC_TEMP_DIR = File.expand_path(ENV["SPEC_TEMP_DIR"] || "rubyspec_temp/#{SPEC_TEMP_DIR_PID}")
+SPEC_TEMP_DIR_LIST = []
+if tmpdir = ENV['SPEC_TEMP_DIR']
+ temppath = File.expand_path(tmpdir) + "/"
+else
+ tmpdir = File.expand_path("rubyspec_temp")
+ temppath = tmpdir + "/#{SPEC_TEMP_DIR_PID}"
+ SPEC_TEMP_DIR_LIST << tmpdir
+end
+SPEC_TEMP_DIR_LIST << temppath
+SPEC_TEMP_DIR = temppath
SPEC_TEMP_UNIQUIFIER = "0"
at_exit do
begin
if SPEC_TEMP_DIR_PID == Process.pid
- Dir.delete SPEC_TEMP_DIR if File.directory? SPEC_TEMP_DIR
+ while temppath = SPEC_TEMP_DIR_LIST.pop
+ next unless File.directory? temppath
+ Dir.delete temppath
+ end
end
rescue SystemCallError
STDERR.puts <<-EOM
@@ -18,7 +30,7 @@ at_exit do
-----------------------------------------------------
The rubyspec temp directory is not empty. Ensure that
all specs are cleaning up temporary files:
- #{SPEC_TEMP_DIR}
+ #{temppath}
-----------------------------------------------------
EOM