diff --git a/lib/sprockets/rails/sourcemapping_url_processor.rb b/lib/sprockets/rails/sourcemapping_url_processor.rb index fe8a29cc..cd57de66 100644 --- a/lib/sprockets/rails/sourcemapping_url_processor.rb +++ b/lib/sprockets/rails/sourcemapping_url_processor.rb @@ -2,7 +2,7 @@ module Sprockets module Rails # Rewrites source mapping urls with the digested paths and protect against semicolon appending with a dummy comment line class SourcemappingUrlProcessor - REGEX = /\/\/# sourceMappingURL=(.*\.map)/ + REGEX = /\/\/# sourceMappingURL=(.*\.map\.?\w*)/ class << self def call(input) diff --git a/test/test_sourcemapping_url_processor.rb b/test/test_sourcemapping_url_processor.rb index ead7c33a..468655db 100644 --- a/test/test_sourcemapping_url_processor.rb +++ b/test/test_sourcemapping_url_processor.rb @@ -46,4 +46,28 @@ def resolve(path, **kargs) output = Sprockets::Rails::SourcemappingUrlProcessor.call(input) assert_equal({ data: "var mapped;\n" }, output) end + + def test_missing_with_json_file_ext_also_removes_file_ext + @env.context_class.class_eval do + def resolve(path, **kargs) + raise Sprockets::FileNotFound + end + end + + input = { environment: @env, data: "var mapped;\n//# sourceMappingURL=mappedNOT.js.map.json", name: 'mapped', filename: 'mapped.js', metadata: {} } + output = Sprockets::Rails::SourcemappingUrlProcessor.call(input) + assert_equal({ data: "var mapped;\n" }, output) + end + + def test_missing_with_json_file_ext_and_subsequent_valid_js_retains_valid_js + @env.context_class.class_eval do + def resolve(path, **kargs) + raise Sprockets::FileNotFound + end + end + + input = { environment: @env, data: "var mapped;\n//# sourceMappingURL=mappedNOT.js.map.json\nvar foo = bar();", name: 'mapped', filename: 'mapped.js', metadata: {} } + output = Sprockets::Rails::SourcemappingUrlProcessor.call(input) + assert_equal({ data: "var mapped;\n\nvar foo = bar();" }, output) + end end