middleman-core 4.1.3 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07f3019963e912c90ffd23f7781a1e2708916d99
4
- data.tar.gz: 390ae3524c422182a88efcc01cf84b99406819b2
3
+ metadata.gz: 4c11a191bebfe7ff3fc0a2418fc2334f38373f01
4
+ data.tar.gz: 45c019a96a431a716864f3ee952614022c6ad374
5
5
  SHA512:
6
- metadata.gz: 808225bf5afa002a4ce07c597bcc3bf9db8896214701b7d07ca279c3a5549101a147617b3c285c9d912d4edad6aa2d8315cc0e026e9f68cb7105b8e464520371
7
- data.tar.gz: 6252c9056ac15fac4b34ad46a7853b0855a0d7d89ad1fffc605b2eaa23a78e240af0bba31dcb3d6f96a65951f728c4422f665a3d0771e5ff4b10c0ce42cbc81f
6
+ metadata.gz: 234bf4823fc4870dd79df4605b8cee91efbe7037b6a2403ce0bb2c2c33f9f4ff736349eae87aecdfbe964a28f0a4ff51434bb7511cb529523a410006904fa855
7
+ data.tar.gz: eae2a780c9486f90aa2230a4b8e756e463a330af7088e710d5818e2bcec852d43267fcbce0a4a00f97da1a5717ae59278c606b773b78d789e694c3e4bb7beb74
@@ -283,8 +283,15 @@ Feature: Assets get file hashes appended to them and references to them are upda
283
283
  When I cd to "build"
284
284
  Then the following files should exist:
285
285
  | javascripts/jquery.min-276c87ff.js |
286
+ | stylesheets/test-7de2ad06.css |
286
287
  And the following files should not exist:
287
288
  | javascripts/jquery.min.js |
289
+ And the file "stylesheets/test-7de2ad06.css" should contain:
290
+ """
291
+ .no-bug{background-image:url(/images/100px-5fd6fb90.jpg)}
292
+ .bug{content:"";background-image:url(/images/100px-5fd6fb90.jpg)}
293
+ .no-bug{content:""; background-image:url(/images/100px-5fd6fb90.jpg)}
294
+ """
288
295
 
289
296
  Scenario: Source map paths include the hash
290
297
  Given a successfully built app at "asset-hash-source-map"
@@ -31,7 +31,8 @@ Feature: Dynamic Pages
31
31
  | should_be_ignored6.html |
32
32
  | should_be_ignored7.html |
33
33
  | should_be_ignored8.html |
34
-
34
+ | should_be_ignored9.html |
35
+
35
36
  Scenario: Preview basic proxy
36
37
  Given the Server is running at "dynamic-pages-app"
37
38
  When I go to "/fake.html"
@@ -42,46 +43,46 @@ Feature: Dynamic Pages
42
43
  Then I should see "I am real"
43
44
  When I go to "/fake4.html"
44
45
  Then I should see "I am real"
45
-
46
+
46
47
  Scenario: Preview proxy with variable one
47
48
  Given the Server is running at "dynamic-pages-app"
48
49
  When I go to "/fake/one.html"
49
50
  Then I should see "I am real: one"
50
51
  Then I should see "Global: I am one glob"
51
52
  Then I should see "All: I am all glob"
52
-
53
+
53
54
  When I go to "/fake2/one.html"
54
55
  Then I should see "I am real: one"
55
56
  Then I should see "Global: I am two glob"
56
57
  Then I should see "All: I am all glob"
57
-
58
+
58
59
  When I go to "/fake3/one.html"
59
60
  Then I should see "I am real: one"
60
61
  Then I should see "Global: I am three glob"
61
62
  Then I should see "All: I am all glob"
62
-
63
+
63
64
  When I go to "/fake4/one.html"
64
65
  Then I should see "I am real: one"
65
66
  Then I should see "Global: I am four glob"
66
67
  Then I should see "All: I am all glob"
67
-
68
+
68
69
  Scenario: Preview proxy with variable two
69
70
  Given the Server is running at "dynamic-pages-app"
70
71
  When I go to "/fake/two.html"
71
72
  Then I should see "I am real: two"
72
73
  Then I should see "Global: I am one glob"
73
74
  Then I should see "All: I am all glob"
74
-
75
+
75
76
  When I go to "/fake2/two.html"
76
77
  Then I should see "I am real: two"
77
78
  Then I should see "Global: I am two glob"
78
79
  Then I should see "All: I am all glob"
79
-
80
+
80
81
  When I go to "/fake3/two.html"
81
82
  Then I should see "I am real: two"
82
83
  Then I should see "Global: I am three glob"
83
84
  Then I should see "All: I am all glob"
84
-
85
+
85
86
  When I go to "/fake4/two.html"
86
87
  Then I should see "I am real: two"
87
88
  Then I should see "Global: I am four glob"
@@ -101,7 +102,7 @@ Feature: Dynamic Pages
101
102
  Then the file "fake3/one.html" should contain "I am real: one"
102
103
  Then the file "fake3/one.html" should contain "Global: I am three glob"
103
104
  Then the file "fake3/one.html" should contain "All: I am all glob"
104
-
105
+
105
106
  Scenario: Target ignore
106
107
  Given the Server is running at "dynamic-pages-app"
107
108
  When I go to "/target_ignore.html"
@@ -112,7 +113,7 @@ Feature: Dynamic Pages
112
113
  Then I should see "Ignore me! 7"
113
114
  When I go to "/target_ignore4.html"
114
115
  Then I should see "Ignore me! 8"
115
-
116
+
116
117
  Scenario: Preview ignored paths
117
118
  Given the Server is running at "dynamic-pages-app"
118
119
  When I go to "/should_be_ignored.html"
@@ -130,4 +131,6 @@ Feature: Dynamic Pages
130
131
  When I go to "/should_be_ignored7.html"
131
132
  Then I should see "File Not Found"
132
133
  When I go to "/should_be_ignored8.html"
133
- Then I should see "File Not Found"
134
+ Then I should see "File Not Found"
135
+ When I go to "/should_be_ignored9.html"
136
+ Then I should see "File Not Found"
@@ -0,0 +1,3 @@
1
+ .no-bug{background-image:url(/images/100px.jpg)}
2
+ .bug{content:"";background-image:url(/images/100px.jpg)}
3
+ .no-bug{content:""; background-image:url(/images/100px.jpg)}
@@ -28,3 +28,7 @@ page "fake/*", locals: { glob_var: "I am one glob" }
28
28
  page "fake2/*", locals: { glob_var: "I am two glob" }
29
29
  page "fake3/*", locals: { glob_var: "I am three glob" }
30
30
  page "fake4/*", locals: { glob_var: "I am four glob" }
31
+
32
+ ["tom", "dick", "harry"].each do |name|
33
+ proxy "/about/#{name}.html", "/should_be_ignored9.html", locals: { person_name: name }, ignore: true
34
+ end
@@ -0,0 +1 @@
1
+ <h1>Ignore me! 9</h1>
@@ -160,6 +160,10 @@ module Middleman
160
160
  # @return [Array.<String>]
161
161
  define_setting :extensions_with_layout, %w(.htm .html .xhtml .php), 'Which file extensions have a layout by default.'
162
162
 
163
+ # Which file extensions are "assets."
164
+ # @return [Array.<String>]
165
+ define_setting :asset_extensions, %w(.css .png .jpg .jpeg .webp .svg .svgz .js .gif .ttf .otf .woff .woff2 .eot .ico .map), 'Which file extensions are treated as assets.'
166
+
163
167
  # Default string encoding for templates and output.
164
168
  # @return [String]
165
169
  define_setting :encoding, 'utf-8', 'Default string encoding for templates and output'
@@ -194,6 +198,8 @@ module Middleman
194
198
 
195
199
  define_setting :skip_build_clean, proc { |p| [/\.git/].any? { |r| p =~ r } }, 'Whether some paths should not be removed during a clean build.'
196
200
 
201
+ define_setting :cli_options, {}, 'Options from the Command Line.'
202
+
197
203
  define_setting :watcher_disable, false, 'If the Listen watcher should not run'
198
204
  define_setting :watcher_force_polling, false, 'If the Listen watcher should run in polling mode'
199
205
  define_setting :watcher_latency, nil, 'The Listen watcher latency'
@@ -269,6 +275,8 @@ module Middleman
269
275
  # Before config is parsed, before extensions get to it.
270
276
  execute_callbacks(:initialized)
271
277
 
278
+ apply_cli_options
279
+
272
280
  # Before config is parsed. Mostly used for extensions.
273
281
  execute_callbacks(:before_configuration)
274
282
 
@@ -281,6 +289,8 @@ module Middleman
281
289
  # Run any `configure` blocks for the current mode.
282
290
  execute_callbacks([:configure, config[:mode]])
283
291
 
292
+ apply_cli_options
293
+
284
294
  # Post parsing, pre-extension callback
285
295
  execute_callbacks(:after_configuration_eval)
286
296
 
@@ -297,6 +307,17 @@ module Middleman
297
307
  execute_callbacks(:ready) unless config[:exit_before_ready]
298
308
  end
299
309
 
310
+ def apply_cli_options
311
+ config[:cli_options].each do |k, v|
312
+ setting = config.setting(k.to_sym)
313
+ next unless setting
314
+
315
+ v = setting.options[:import].call(v) if setting.options[:import]
316
+
317
+ config[k.to_sym] = v
318
+ end
319
+ end
320
+
300
321
  # Eval config
301
322
  def evaluate_configuration!
302
323
  # Check for and evaluate local configuration in `config.rb`
@@ -3,7 +3,7 @@ require 'middleman-core/rack'
3
3
 
4
4
  class Middleman::Extensions::AssetHash < ::Middleman::Extension
5
5
  option :sources, %w(.css .htm .html .js .php .xhtml), 'List of extensions that are searched for hashable assets.'
6
- option :exts, %w(.jpg .jpeg .png .gif .webp .js .css .otf .woff .woff2 .eot .ttf .svg .svgz .map), 'List of extensions that get asset hashes appended to them.'
6
+ option :exts, nil, 'List of extensions that get asset hashes appended to them.'
7
7
  option :ignore, [], 'Regexes of filenames to skip adding asset hashes to'
8
8
  option :rewrite_ignore, [], 'Regexes of filenames to skip processing for path rewrites'
9
9
 
@@ -17,8 +17,12 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension
17
17
  # Allow specifying regexes to ignore, plus always ignore apple touch icons
18
18
  @ignore = Array(options.ignore) + [/^apple-touch-icon/]
19
19
 
20
+ # Exclude .ico from the default list because browsers expect it
21
+ # to be named "favicon.ico"
22
+ @exts = options.exts || (app.config[:asset_extensions] - %w(.ico))
23
+
20
24
  app.rewrite_inline_urls id: :asset_hash,
21
- url_extensions: options.exts.sort.reverse,
25
+ url_extensions: @exts.sort.reverse,
22
26
  source_extensions: options.sources,
23
27
  ignore: @ignore,
24
28
  rewrite_ignore: options.rewrite_ignore,
@@ -70,7 +74,7 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension
70
74
 
71
75
  Contract IsA['Middleman::Sitemap::Resource'] => Maybe[IsA['Middleman::Sitemap::Resource']]
72
76
  def manipulate_single_resource(resource)
73
- return unless options.exts.include?(resource.ext)
77
+ return unless @exts.include?(resource.ext)
74
78
  return if ignored_resource?(resource)
75
79
  return if resource.ignored?
76
80
 
@@ -2,7 +2,7 @@ require 'addressable/uri'
2
2
 
3
3
  class Middleman::Extensions::AssetHost < ::Middleman::Extension
4
4
  option :host, nil, 'The asset host to use or a Proc to determine asset host', required: true
5
- option :exts, %w(.css .png .jpg .jpeg .webp .svg .svgz .js .gif), 'List of extensions that get cache busters strings appended to them.'
5
+ option :exts, nil, 'List of extensions that get cache busters strings appended to them.'
6
6
  option :sources, %w(.css .htm .html .js .php .xhtml), 'List of extensions that are searched for bustable assets.'
7
7
  option :ignore, [], 'Regexes of filenames to skip adding query strings to'
8
8
  option :rewrite_ignore, [], 'Regexes of filenames to skip processing for host rewrites'
@@ -11,7 +11,7 @@ class Middleman::Extensions::AssetHost < ::Middleman::Extension
11
11
  super
12
12
 
13
13
  app.rewrite_inline_urls id: :asset_host,
14
- url_extensions: options.exts,
14
+ url_extensions: options.exts || app.config[:asset_extensions],
15
15
  source_extensions: options.sources,
16
16
  ignore: options.ignore,
17
17
  rewrite_ignore: options.rewrite_ignore,
@@ -1,6 +1,6 @@
1
1
  # The Cache Buster extension
2
2
  class Middleman::Extensions::CacheBuster < ::Middleman::Extension
3
- option :exts, %w(.css .png .jpg .jpeg .webp .svg .svgz .js .gif), 'List of extensions that get cache busters strings appended to them.'
3
+ option :exts, nil, 'List of extensions that get cache busters strings appended to them.'
4
4
  option :sources, %w(.css .htm .html .js .php .xhtml), 'List of extensions that are searched for bustable assets.'
5
5
  option :ignore, [], 'Regexes of filenames to skip adding query strings to'
6
6
  option :rewrite_ignore, [], 'Regexes of filenames to skip processing for path rewrites'
@@ -9,7 +9,7 @@ class Middleman::Extensions::CacheBuster < ::Middleman::Extension
9
9
  super
10
10
 
11
11
  app.rewrite_inline_urls id: :cache_buster,
12
- url_extensions: options.exts,
12
+ url_extensions: options.exts || app.config[:asset_extensions],
13
13
  source_extensions: options.sources,
14
14
  ignore: options.ignore,
15
15
  rewrite_ignore: options.rewrite_ignore,
@@ -11,7 +11,7 @@ class Middleman::Extensions::DirectoryIndexes < ::Middleman::Extension
11
11
  index_file = app.config[:index_file]
12
12
  new_index_path = "/#{index_file}"
13
13
 
14
- extensions = %w(.htm .html .php)
14
+ extensions = %w(.htm .html .php .xhtml)
15
15
 
16
16
  resources.each do |resource|
17
17
  # Check if it would be pointless to reroute
@@ -10,10 +10,18 @@ class Middleman::Extensions::ExternalPipeline < ::Middleman::Extension
10
10
  def initialize(app, config={}, &block)
11
11
  super
12
12
 
13
+ return if app.mode?(:config)
14
+
13
15
  require 'thread'
16
+ require 'fileutils'
17
+
18
+ source_path = File.expand_path(options[:source], app.root)
19
+
20
+ # Make sure it exists, or `listen` will explode.
21
+ ::FileUtils.mkdir_p(source_path)
14
22
 
15
23
  @watcher = app.files.watch :source,
16
- path: File.expand_path(options[:source], app.root),
24
+ path: source_path,
17
25
  latency: options[:latency],
18
26
  frontmatter: false
19
27
 
@@ -2,7 +2,7 @@ require 'addressable/uri'
2
2
 
3
3
  # Relative Assets extension
4
4
  class Middleman::Extensions::RelativeAssets < ::Middleman::Extension
5
- option :exts, %w(.css .png .jpg .jpeg .webp .svg .svgz .js .gif .ttf .otf .woff .woff2 .eot), 'List of extensions that get cache busters strings appended to them.'
5
+ option :exts, nil, 'List of extensions that get cache busters strings appended to them.'
6
6
  option :sources, %w(.css .htm .html .xhtml), 'List of extensions that are searched for relative assets.'
7
7
  option :ignore, [], 'Regexes of filenames to skip adding query strings to'
8
8
  option :rewrite_ignore, [], 'Regexes of filenames to skip processing for path rewrites'
@@ -11,7 +11,7 @@ class Middleman::Extensions::RelativeAssets < ::Middleman::Extension
11
11
  super
12
12
 
13
13
  app.rewrite_inline_urls id: :asset_hash,
14
- url_extensions: options.exts,
14
+ url_extensions: options.exts || app.config[:asset_extensions],
15
15
  source_extensions: options.sources,
16
16
  ignore: options.ignore,
17
17
  rewrite_ignore: options.rewrite_ignore,
@@ -140,13 +140,8 @@ module Middleman
140
140
  )
141
141
 
142
142
  app = ::Middleman::Application.new do
143
- cli_options.each do |k, v|
144
- setting = config.setting(k.to_sym)
145
- next unless setting
146
-
147
- v = setting.options[:import].call(v) if setting.options[:import]
148
-
149
- config[k.to_sym] = v
143
+ config[:cli_options] = cli_options.each_with_object({}) do |(k, v), sum|
144
+ sum[k] = v unless v == :undefined
150
145
  end
151
146
 
152
147
  ready do
@@ -176,18 +171,21 @@ module Middleman
176
171
  end
177
172
 
178
173
  # store configured port to make a check later on possible
179
- configured_port = app.config[:port]
174
+ configured_port = possible_from_cli(:port, app.config)
180
175
 
181
176
  # Use configuration values to set `bind_address` etc. in
182
177
  # `server_information`
183
- server_information.use app.config
178
+ server_information.use(bind_address: possible_from_cli(:bind_address, app.config),
179
+ port: possible_from_cli(:port, app.config),
180
+ server_name: possible_from_cli(:server_name, app.config),
181
+ https: possible_from_cli(:https, app.config))
184
182
 
185
- app.logger.warn format('== The Middleman uses a different port "%s" then the configured one "%s" because some other server is listening on that port.', server_information.port, configured_port) unless app.config[:port] == configured_port
183
+ app.logger.warn format('== The Middleman uses a different port "%s" then the configured one "%s" because some other server is listening on that port.', server_information.port, configured_port) unless server_information.port == configured_port
186
184
 
187
- @environment = app.config[:environment]
185
+ @environment = possible_from_cli(:environment, app.config)
188
186
 
189
- @ssl_certificate = app.config[:ssl_certificate]
190
- @ssl_private_key = app.config[:ssl_private_key]
187
+ @ssl_certificate = possible_from_cli(:ssl_certificate, app.config)
188
+ @ssl_private_key = possible_from_cli(:ssl_private_key, app.config)
191
189
 
192
190
  app.files.on_change :reload do
193
191
  $mm_reload = true
@@ -203,6 +201,14 @@ module Middleman
203
201
  app
204
202
  end
205
203
 
204
+ def possible_from_cli(key, config)
205
+ if @cli_options[key] && @cli_options[key] != :undefined
206
+ @cli_options[key]
207
+ else
208
+ config[key]
209
+ end
210
+ end
211
+
206
212
  # Trap some interupt signals and shut down smoothly
207
213
  # @return [void]
208
214
  def register_signal_handlers
@@ -23,7 +23,7 @@ module Middleman
23
23
  attr_accessor :current_engine
24
24
 
25
25
  # Shorthand references to global values on the app instance.
26
- def_delegators :@app, :config, :logger, :sitemap, :server?, :build?, :environment?, :data, :extensions, :root
26
+ def_delegators :@app, :config, :logger, :sitemap, :server?, :build?, :environment?, :environment, :data, :extensions, :root
27
27
 
28
28
  # Initialize a context with the current app and predefined locals and options hashes.
29
29
  #
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Middleman
2
4
  module Util
3
5
  include Contracts
@@ -52,9 +54,15 @@ module Middleman
52
54
  result.encode('UTF-8', 'UTF-8-MAC')
53
55
  end
54
56
 
57
+ Contract String => Bool
58
+ def tilt_recognizes?(path)
59
+ @@tilt_lookup_cache ||= {}
60
+ @@tilt_lookup_cache[path] ||= ::Tilt[path]
61
+ end
62
+
55
63
  Contract String => String
56
64
  def step_through_extensions(path)
57
- while ::Tilt[path]
65
+ while tilt_recognizes?(path)
58
66
  ext = ::File.extname(path)
59
67
  yield ext if block_given?
60
68
 
@@ -80,13 +88,18 @@ module Middleman
80
88
  # @return [String]
81
89
  Contract String => ArrayOf[String]
82
90
  def collect_extensions(path)
83
- return [] if ::File.basename(path).start_with?('.')
91
+ @@extensions_cache ||= {}
84
92
 
85
- result = []
93
+ base_name = ::File.basename(path)
94
+ @@extensions_cache[base_name] ||= begin
95
+ result = []
86
96
 
87
- step_through_extensions(path) { |e| result << e }
97
+ unless base_name.start_with?('.')
98
+ step_through_extensions(base_name) { |e| result << e }
99
+ end
88
100
 
89
- result
101
+ result
102
+ end
90
103
  end
91
104
 
92
105
  # Finds files which should also be considered to be dirty when
@@ -99,8 +112,9 @@ module Middleman
99
112
  def find_related_files(app, files)
100
113
  return [] if files.empty?
101
114
 
102
- all_extensions = files.flat_map { |f| collect_extensions(f.to_s) }
115
+ file_set = ::Set.new(files)
103
116
 
117
+ all_extensions = files.flat_map { |f| collect_extensions(f.to_s) }
104
118
  sass_type_aliasing = ['.scss', '.sass']
105
119
  erb_type_aliasing = ['.erb', '.haml', '.slim']
106
120
 
@@ -109,14 +123,18 @@ module Middleman
109
123
 
110
124
  all_extensions.uniq!
111
125
 
112
- app.sitemap.resources.select(&:file_descriptor).select { |r|
113
- local_extensions = collect_extensions(r.file_descriptor[:full_path].to_s)
114
- local_extensions |= sass_type_aliasing unless (local_extensions & sass_type_aliasing).empty?
115
- local_extensions |= erb_type_aliasing unless (local_extensions & erb_type_aliasing).empty?
126
+ app.sitemap.resources.select { |r|
127
+ if r.file_descriptor
128
+ local_extensions = collect_extensions(r.file_descriptor[:full_path].to_s)
129
+ local_extensions |= sass_type_aliasing unless (local_extensions & sass_type_aliasing).empty?
130
+ local_extensions |= erb_type_aliasing unless (local_extensions & erb_type_aliasing).empty?
116
131
 
117
- local_extensions.uniq!
132
+ local_extensions.uniq!
118
133
 
119
- !(all_extensions & local_extensions).empty? && files.none? { |f| f == r.file_descriptor[:full_path] }
134
+ !(all_extensions & local_extensions).empty? && !file_set.include?(r.file_descriptor[:full_path])
135
+ else
136
+ false
137
+ end
120
138
  }.map(&:file_descriptor)
121
139
  end
122
140
  end
@@ -77,7 +77,11 @@ module Middleman
77
77
  uri = URI(path)
78
78
  path = uri.path
79
79
 
80
- result = if resource = app.sitemap.find_resource_by_destination_path(url_for(app, path, options))
80
+ # Ensure the url we pass into find_resource_by_destination_path is not a
81
+ # relative path, since it only takes absolute url paths.
82
+ dest_path = url_for(app, path, options.merge(relative: false))
83
+
84
+ result = if resource = app.sitemap.find_resource_by_destination_path(dest_path)
81
85
  resource.url
82
86
  else
83
87
  path = ::File.join(prefix, path)
@@ -22,7 +22,7 @@ module Middleman
22
22
 
23
23
  Contract String, String, ArrayOf[String], Proc => String
24
24
  def rewrite_paths(body, _path, exts, &_block)
25
- matcher = /([\'\"\(,]\s*|# sourceMappingURL=)([^\s\'\"\)>]+(#{::Regexp.union(exts)}))/
25
+ matcher = /([\'\"\(,]\s*|# sourceMappingURL=)([^\s\'\"\)\(>]+(#{::Regexp.union(exts)}))/
26
26
 
27
27
  url_fn_prefix = 'url('
28
28
 
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  # Current Version
3
3
  # @return [String]
4
- VERSION = '4.1.3'.freeze unless const_defined?(:VERSION)
4
+ VERSION = '4.1.5'.freeze unless const_defined?(:VERSION)
5
5
  end
@@ -120,6 +120,20 @@ describe Middleman::Util do
120
120
  relative: true ) ).to eq '../images/blank.gif'
121
121
  end
122
122
 
123
+ context "when the asset is stored in the same directory as current_resource" do
124
+ before do
125
+ Given.file 'source/a-path/index.html', ''
126
+ Given.file 'source/a-path/blank.gif', ''
127
+ @mm = Middleman::Application.new
128
+ end
129
+
130
+ it "returns path relative to the provided current_resource" do
131
+ current_resource = @mm.sitemap.find_resource_by_path('a-path/index.html')
132
+ expect( Middleman::Util.asset_url( @mm, 'blank.gif', 'images', current_resource: current_resource,
133
+ relative: true) ).to eq 'blank.gif'
134
+ end
135
+ end
136
+
123
137
  it "raises error if not given a current_resource" do
124
138
  expect{
125
139
  Middleman::Util.asset_url( @mm, 'blank.gif', 'images', relative: true )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.3
4
+ version: 4.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-03-17 00:00:00.000000000 Z
13
+ date: 2016-03-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -446,7 +446,9 @@ files:
446
446
  - fixtures/asset-hash-host-app/source/stylesheets/site.css.scss
447
447
  - fixtures/asset-hash-host-app/source/subdir/index.html.erb
448
448
  - fixtures/asset-hash-minified-app/config.rb
449
+ - fixtures/asset-hash-minified-app/source/images/100px.jpg
449
450
  - fixtures/asset-hash-minified-app/source/javascripts/jquery.min.js
451
+ - fixtures/asset-hash-minified-app/source/stylesheets/test.css
450
452
  - fixtures/asset-hash-source-map/config.rb
451
453
  - fixtures/asset-hash-source-map/lib/middleware.rb
452
454
  - fixtures/asset-hash-source-map/source/index.html.erb
@@ -592,6 +594,7 @@ files:
592
594
  - fixtures/dynamic-pages-app/source/should_be_ignored6.html
593
595
  - fixtures/dynamic-pages-app/source/should_be_ignored7.html
594
596
  - fixtures/dynamic-pages-app/source/should_be_ignored8.html
597
+ - fixtures/dynamic-pages-app/source/should_be_ignored9.html
595
598
  - fixtures/ember-cli-app/config.rb
596
599
  - fixtures/ember-cli-app/source/javascripts/file.js
597
600
  - fixtures/ember-cli-app/test-app/.bowerrc
@@ -1601,7 +1604,9 @@ test_files:
1601
1604
  - fixtures/asset-hash-host-app/source/stylesheets/site.css.scss
1602
1605
  - fixtures/asset-hash-host-app/source/subdir/index.html.erb
1603
1606
  - fixtures/asset-hash-minified-app/config.rb
1607
+ - fixtures/asset-hash-minified-app/source/images/100px.jpg
1604
1608
  - fixtures/asset-hash-minified-app/source/javascripts/jquery.min.js
1609
+ - fixtures/asset-hash-minified-app/source/stylesheets/test.css
1605
1610
  - fixtures/asset-hash-source-map/config.rb
1606
1611
  - fixtures/asset-hash-source-map/lib/middleware.rb
1607
1612
  - fixtures/asset-hash-source-map/source/index.html.erb
@@ -1747,6 +1752,7 @@ test_files:
1747
1752
  - fixtures/dynamic-pages-app/source/should_be_ignored6.html
1748
1753
  - fixtures/dynamic-pages-app/source/should_be_ignored7.html
1749
1754
  - fixtures/dynamic-pages-app/source/should_be_ignored8.html
1755
+ - fixtures/dynamic-pages-app/source/should_be_ignored9.html
1750
1756
  - fixtures/ember-cli-app/config.rb
1751
1757
  - fixtures/ember-cli-app/source/javascripts/file.js
1752
1758
  - fixtures/ember-cli-app/test-app/.bowerrc