1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #5448 from JonRowe/patch_file_update_on_master

Commas in directory names causes hang in ActiveSupport::FileUpdateChecker
This commit is contained in:
José Valim 2012-03-15 05:44:46 -07:00
commit ee8e567d50
2 changed files with 20 additions and 1 deletions

View file

@ -106,11 +106,15 @@ module ActiveSupport
globs = [] globs = []
hash.each do |key, value| hash.each do |key, value|
globs << "#{key}/**/*#{compile_ext(value)}" globs << "#{escape(key)}/**/*#{compile_ext(value)}"
end end
"{#{globs.join(",")}}" "{#{globs.join(",")}}"
end end
def escape(key)
key.gsub(',','\,')
end
def compile_ext(array) #:nodoc: def compile_ext(array) #:nodoc:
array = Array(array) array = Array(array)
return if array.empty? return if array.empty?

View file

@ -1,5 +1,6 @@
require 'abstract_unit' require 'abstract_unit'
require 'fileutils' require 'fileutils'
require 'thread'
MTIME_FIXTURES_PATH = File.expand_path("../fixtures", __FILE__) MTIME_FIXTURES_PATH = File.expand_path("../fixtures", __FILE__)
@ -79,4 +80,18 @@ class FileUpdateCheckerWithEnumerableTest < ActiveSupport::TestCase
assert !checker.execute_if_updated assert !checker.execute_if_updated
assert_equal 0, i assert_equal 0, i
end 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 end