diff --git a/CHANGELOG.md b/CHANGELOG.md index d049ab723..ac5d33fcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ Get upgrade notes from Sprockets 3.x to 4.x at https://github.com/rails/sprocket ## Master +## 4.0.0.beta10 + +- Fix YACB (Yet Another Caching Bug) [Fix broken expansion of asset link paths](https://github.com/rails/sprockets/pull/614) + ## 4.0.0.beta9 - Minimum Ruby version for Sprockets 4 is now 2.5+ which matches minimum ruby verision of Rails [#604] diff --git a/lib/sprockets/version.rb b/lib/sprockets/version.rb index a22725d59..49781eb68 100644 --- a/lib/sprockets/version.rb +++ b/lib/sprockets/version.rb @@ -1,4 +1,4 @@ # frozen_string_literal: true module Sprockets - VERSION = "4.0.0.beta9" + VERSION = "4.0.0.beta10" end diff --git a/test/test_caching.rb b/test/test_caching.rb index bc067c8b2..261b0df1b 100644 --- a/test/test_caching.rb +++ b/test/test_caching.rb @@ -444,6 +444,30 @@ def cache.set(key, value, local = false) environment['schneems.js'] end + test "no relative paths are present in an asset loaded from cache by accident" do + environment = Sprockets::Environment.new(fixture_path('default')) do |env| + env.append_path(".") + env.cache = @cache + end + environment['schneems.js'] + asset = environment['schneems.js'] + asset_hash = asset.to_hash + + refute has_relative_value?(asset_hash), "Expected asset from cache to have no relative paths, but it does:\n#{asset_hash}" + end + + def has_relative_value?(elem) + if elem.is_a?(Hash) + return elem.values.detect {|e| has_relative_value?(e) } + end + if elem.respond_to?(:each) + return elem.each.detect {|e| has_relative_value?(e) } + end + + return elem.to_s.match(/file:\/\/[^\/]/) + end + + test "no absolute paths are retuned from cache" do env1 = Sprockets::Environment.new(fixture_path('default')) do |env| env.append_path(".")