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

fix FileUpdateChecker when file has wrong mtime (from future)

This commit is contained in:
abonec 2012-06-29 19:43:33 +04:00
parent 0470ddcf03
commit 20519efa6e
2 changed files with 17 additions and 1 deletions

View file

@ -101,7 +101,9 @@ module ActiveSupport
end
def updated_at(paths)
@updated_at || paths.map { |path| File.mtime(path) }.max || Time.at(0)
time_now = Time.now
@updated_at || paths.map { |path| File.mtime(path) }.
reject { |time| time > time_now }.max || Time.at(0)
end
def compile_glob(hash)

View file

@ -48,6 +48,20 @@ class FileUpdateCheckerWithEnumerableTest < ActiveSupport::TestCase
assert_equal 1, i
end
def test_should_be_robust_to_handle_files_with_wrong_modified_time
i = 0
time = 1.year.from_now # wrong mtime from the future
File.utime time, time, FILES[2]
checker = ActiveSupport::FileUpdateChecker.new(FILES){ i += 1 }
sleep(0.1)
FileUtils.touch(FILES[0..1])
assert checker.execute_if_updated
assert_equal 1, i
end
def test_should_cache_updated_result_until_execute
i = 0
checker = ActiveSupport::FileUpdateChecker.new(FILES){ i += 1 }