From e0b0b923c68dfdf6552bbca69e856424e678f962 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 29 May 2017 06:53:05 +0000 Subject: fix race condition * spec/mspec/lib/mspec/helpers/fs.rb (Object#mkdir_p): fix race condition when multi_exec. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/mspec/lib/mspec/helpers/fs.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'spec/mspec') diff --git a/spec/mspec/lib/mspec/helpers/fs.rb b/spec/mspec/lib/mspec/helpers/fs.rb index ee33f5fec0..e842896126 100644 --- a/spec/mspec/lib/mspec/helpers/fs.rb +++ b/spec/mspec/lib/mspec/helpers/fs.rb @@ -17,11 +17,18 @@ class Object parts.each do |part| name = File.join name, part - if File.file? name + stat = File.stat name + if stat.file? raise ArgumentError, "path component of #{path} is a file" end - Dir.mkdir name unless File.directory? name + unless stat.directory? + begin + Dir.mkdir name + rescue Errno::EEXIST + raise unless File.directory? name + end + end end end -- cgit v1.2.3