Skip to content

Commit b3e6630

Browse files
authored
Merge pull request #30 from cjlarose/allow-missing-manifest-file
Consider manifest to be empty if the corresponding manifest file does not exist
2 parents b9ec27b + ea2c2ac commit b3e6630

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

lib/external_asset_pipeline/manifest.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ def data
2929

3030
def load
3131
JSON.parse(@config.manifest_path.read)
32+
rescue Errno::ENOENT
33+
warning = "No file exists at path #{@config.manifest_path}; "\
34+
'treating it as an empty manifest'
35+
@config.logger.warn warning
36+
{}
3237
end
3338
end
3439
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
module ExternalAssetPipeline
4+
class LoggerDouble
5+
attr_reader :messages
6+
7+
def warn(message)
8+
@messages ||= []
9+
@messages << message
10+
end
11+
end
12+
end

test/external_asset_pipeline/manifest_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'test_helper'
44

55
require 'external_asset_pipeline/configuration'
6+
require 'external_asset_pipeline/logger_double'
67
require 'external_asset_pipeline/manifest'
78

89
module ExternalAssetPipeline
@@ -46,6 +47,20 @@ def test_find_when_manifest_values_include_prefix
4647
assert_nil manifest.find('missing-asset.css')
4748
end
4849

50+
def test_find_when_manifest_file_does_not_exist
51+
config = Configuration.new
52+
config.public_path = Pathname.new(TEST_APP_PUBLIC_PATH)
53+
config.manifest_filename = 'bogus_manifest.json'
54+
config.logger = LoggerDouble.new
55+
56+
manifest = Manifest.new(config)
57+
assert_nil manifest.find 'application.js'
58+
59+
expected_log_warning = "No file exists at path #{config.manifest_path}; "\
60+
'treating it as an empty manifest'
61+
assert_equal [expected_log_warning], config.logger.messages
62+
end
63+
4964
def test_manifest_caching
5065
config = Configuration.new
5166
config.public_path = Pathname.new(TEST_APP_PUBLIC_PATH)

test/external_asset_pipeline/server_manifest_test.rb

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'test_helper'
44

55
require 'external_asset_pipeline/configuration'
6+
require 'external_asset_pipeline/logger_double'
67
require 'external_asset_pipeline/server_double'
78
require 'external_asset_pipeline/server_manifest'
89
require 'json'
@@ -49,14 +50,5 @@ def test_find
4950
assert_equal [expected_log_warning] * 3, @config.logger.messages
5051
assert_equal '/packs/manifest.json', server_stub.path
5152
end
52-
53-
class LoggerDouble
54-
attr_reader :messages
55-
56-
def warn(message)
57-
@messages ||= []
58-
@messages << message
59-
end
60-
end
6153
end
6254
end

0 commit comments

Comments
 (0)