提交 40735050 编写于 作者: J Jon Rowe

escape commas in paths before globbing to avoid infinite hang in Dir[]

上级 fbc9d0f4
......@@ -106,11 +106,15 @@ def compile_glob(hash) #:nodoc:
globs = []
hash.each do |key, value|
globs << "#{key}/**/*#{compile_ext(value)}"
globs << "#{escape(key)}/**/*#{compile_ext(value)}"
end
"{#{globs.join(",")}}"
end
def escape(key)
key.gsub(',','\,')
end
def compile_ext(array) #:nodoc:
array = Array(array)
return if array.empty?
......
require 'abstract_unit'
require 'fileutils'
require 'thread'
MTIME_FIXTURES_PATH = File.expand_path("../fixtures", __FILE__)
......@@ -79,4 +80,18 @@ def test_should_not_invoke_the_block_if_a_watched_dir_changed_its_glob
assert !checker.execute_if_updated
assert_equal 0, i
end
def test_should_not_block_if_a_strange_filename_used
FileUtils.mkdir_p("tmp_watcher/valid,yetstrange,path,")
FileUtils.touch(FILES.map { |file_name| "tmp_watcher/valid,yetstrange,path,/#{file_name}" } )
test = Thread.new do
checker = ActiveSupport::FileUpdateChecker.new([],"tmp_watcher/valid,yetstrange,path," => :txt){ i += 1 }
Thread.exit
end
test.priority = -1
test.join(5)
assert !test.alive?
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册