jekyll-minibundle 2.1.2 → 2.2.0

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -42
  3. data/LICENSE.txt +1 -1
  4. data/README.md +232 -52
  5. data/Rakefile +16 -0
  6. data/jekyll-minibundle.gemspec +7 -6
  7. data/lib/jekyll/minibundle/asset_bundle.rb +3 -3
  8. data/lib/jekyll/minibundle/asset_file_drop.rb +45 -0
  9. data/lib/jekyll/minibundle/asset_file_properties.rb +12 -8
  10. data/lib/jekyll/minibundle/asset_file_registry.rb +4 -4
  11. data/lib/jekyll/minibundle/asset_tag_markup.rb +21 -20
  12. data/lib/jekyll/minibundle/bundle_file.rb +6 -1
  13. data/lib/jekyll/minibundle/development_file.rb +2 -1
  14. data/lib/jekyll/minibundle/development_file_collection.rb +2 -2
  15. data/lib/jekyll/minibundle/environment.rb +13 -15
  16. data/lib/jekyll/minibundle/files.rb +16 -18
  17. data/lib/jekyll/minibundle/hashes.rb +10 -12
  18. data/lib/jekyll/minibundle/log.rb +5 -7
  19. data/lib/jekyll/minibundle/mini_bundle_block.rb +35 -12
  20. data/lib/jekyll/minibundle/mini_stamp_tag.rb +108 -16
  21. data/lib/jekyll/minibundle/stamp_file.rb +1 -0
  22. data/lib/jekyll/minibundle/variable_template.rb +145 -0
  23. data/lib/jekyll/minibundle/variable_template_registry.rb +19 -0
  24. data/lib/jekyll/minibundle/version.rb +1 -1
  25. data/test/fixture/site/_bin/with_count +1 -1
  26. data/test/integration/minibundle_development_mode_test.rb +146 -61
  27. data/test/integration/minibundle_production_mode_test.rb +271 -143
  28. data/test/integration/ministamp_development_mode_test.rb +66 -25
  29. data/test/integration/ministamp_production_mode_test.rb +129 -37
  30. data/test/integration/static_files_as_asset_sources_test.rb +10 -10
  31. data/test/support/assertions.rb +1 -1
  32. data/test/support/{static_file_api_config.rb → static_file_config.rb} +6 -3
  33. data/test/support/test_case.rb +7 -4
  34. data/test/unit/asset_bundle_test.rb +6 -6
  35. data/test/unit/asset_file_drop_test.rb +65 -0
  36. data/test/unit/asset_file_registry_test.rb +136 -98
  37. data/test/unit/asset_tag_markup_test.rb +11 -5
  38. data/test/unit/bundle_file_properties_test.rb +44 -23
  39. data/test/unit/bundle_file_writing_test.rb +50 -32
  40. data/test/unit/development_file_properties_test.rb +95 -0
  41. data/test/unit/development_file_writing_test.rb +15 -6
  42. data/test/unit/environment_test.rb +3 -3
  43. data/test/unit/files_test.rb +7 -7
  44. data/test/unit/hashes_test.rb +12 -12
  45. data/test/unit/jekyll_static_file_api_test.rb +91 -20
  46. data/test/unit/mini_bundle_block_test.rb +59 -9
  47. data/test/unit/mini_stamp_tag_test.rb +37 -6
  48. data/test/unit/stamp_file_properties_test.rb +47 -24
  49. data/test/unit/stamp_file_writing_test.rb +33 -24
  50. data/test/unit/variable_template_test.rb +121 -0
  51. metadata +27 -6
  52. data/test/unit/development_file_collection_properties_test.rb +0 -106
@@ -7,8 +7,8 @@ module Jekyll::Minibundle::Test
7
7
 
8
8
  def test_asset_destination_path_has_no_stamp
9
9
  with_precompiled_site(:development) do
10
- assert_equal STAMP_DESTINATION_PATH, find_css_path_from_index
11
- assert File.exist?(destination_path(STAMP_DESTINATION_PATH))
10
+ assert_equal(STAMP_DESTINATION_PATH, find_css_path_from_index)
11
+ assert(File.file?(destination_path(STAMP_DESTINATION_PATH)))
12
12
  end
13
13
  end
14
14
 
@@ -16,7 +16,7 @@ module Jekyll::Minibundle::Test
16
16
  with_precompiled_site(:development) do
17
17
  source_contents = File.read(site_fixture_path(STAMP_SOURCE_PATH))
18
18
  destination_contents = File.read(destination_path(STAMP_DESTINATION_PATH))
19
- assert_equal source_contents, destination_contents
19
+ assert_equal(source_contents, destination_contents)
20
20
  end
21
21
  end
22
22
 
@@ -30,7 +30,7 @@ module Jekyll::Minibundle::Test
30
30
  generate_site(:development, clear_cache: false)
31
31
 
32
32
  new_mtime = file_mtime_of(destination_path(STAMP_DESTINATION_PATH))
33
- assert_operator new_mtime, :>, org_mtime
33
+ assert_operator(new_mtime, :>, org_mtime)
34
34
  end
35
35
  end
36
36
 
@@ -44,7 +44,7 @@ module Jekyll::Minibundle::Test
44
44
  generate_site(:development, clear_cache: false)
45
45
 
46
46
  new_mtime = file_mtime_of(destination_path(STAMP_DESTINATION_PATH))
47
- assert_operator new_mtime, :>, org_mtime
47
+ assert_operator(new_mtime, :>, org_mtime)
48
48
  end
49
49
  end
50
50
 
@@ -68,7 +68,7 @@ module Jekyll::Minibundle::Test
68
68
 
69
69
  new_mtime = file_mtime_of(destination_path(STAMP_DESTINATION_PATH))
70
70
 
71
- assert_operator new_mtime, :>, org_mtime
71
+ assert_operator(new_mtime, :>, org_mtime)
72
72
  end
73
73
  end
74
74
 
@@ -76,7 +76,7 @@ module Jekyll::Minibundle::Test
76
76
  with_site_dir do
77
77
  generate_site(:development)
78
78
 
79
- assert File.exist?(destination_path(STAMP_DESTINATION_PATH))
79
+ assert(File.file?(destination_path(STAMP_DESTINATION_PATH)))
80
80
 
81
81
  ensure_file_mtime_changes do
82
82
  find_and_gsub_in_file(
@@ -88,12 +88,12 @@ module Jekyll::Minibundle::Test
88
88
 
89
89
  generate_site(:development, clear_cache: false)
90
90
 
91
- refute File.exist?(destination_path(STAMP_DESTINATION_PATH))
91
+ refute(File.file?(destination_path(STAMP_DESTINATION_PATH)))
92
92
 
93
93
  new_destination = 'assets/screen2.css'
94
94
 
95
- assert_equal new_destination, find_css_path_from_index
96
- assert File.exist?(destination_path(new_destination))
95
+ assert_equal(new_destination, find_css_path_from_index)
96
+ assert(File.file?(destination_path(new_destination)))
97
97
  end
98
98
  end
99
99
 
@@ -101,7 +101,7 @@ module Jekyll::Minibundle::Test
101
101
  with_site_dir do
102
102
  generate_site(:development)
103
103
 
104
- assert File.exist?(destination_path(STAMP_DESTINATION_PATH))
104
+ assert(File.file?(destination_path(STAMP_DESTINATION_PATH)))
105
105
 
106
106
  ensure_file_mtime_changes do
107
107
  find_and_gsub_in_file(
@@ -113,12 +113,12 @@ module Jekyll::Minibundle::Test
113
113
 
114
114
  generate_site(:development, clear_cache: false)
115
115
 
116
- refute File.exist?(destination_path(STAMP_DESTINATION_PATH))
116
+ refute(File.file?(destination_path(STAMP_DESTINATION_PATH)))
117
117
 
118
118
  new_destination = 'assets/screen2.css'
119
119
 
120
- assert_equal new_destination, find_css_path_from_index
121
- assert File.exist?(destination_path(new_destination))
120
+ assert_equal(new_destination, find_css_path_from_index)
121
+ assert(File.file?(destination_path(new_destination)))
122
122
 
123
123
  ensure_file_mtime_changes do
124
124
  find_and_gsub_in_file(
@@ -130,10 +130,10 @@ module Jekyll::Minibundle::Test
130
130
 
131
131
  generate_site(:development, clear_cache: false)
132
132
 
133
- refute File.exist?(destination_path(new_destination))
133
+ refute(File.file?(destination_path(new_destination)))
134
134
 
135
- assert_equal STAMP_DESTINATION_PATH, find_css_path_from_index
136
- assert File.exist?(destination_path(STAMP_DESTINATION_PATH))
135
+ assert_equal(STAMP_DESTINATION_PATH, find_css_path_from_index)
136
+ assert(File.file?(destination_path(STAMP_DESTINATION_PATH)))
137
137
  end
138
138
  end
139
139
 
@@ -144,8 +144,8 @@ module Jekyll::Minibundle::Test
144
144
  destination = destination_path(STAMP_DESTINATION_PATH)
145
145
  org_mtime = file_mtime_of(destination)
146
146
 
147
- assert File.exist?(destination)
148
- assert_equal STAMP_DESTINATION_PATH, find_css_path_from_index
147
+ assert(File.file?(destination))
148
+ assert_equal(STAMP_DESTINATION_PATH, find_css_path_from_index)
149
149
 
150
150
  ensure_file_mtime_changes do
151
151
  find_and_gsub_in_file(
@@ -157,13 +157,28 @@ module Jekyll::Minibundle::Test
157
157
 
158
158
  generate_site(:development, clear_cache: false)
159
159
 
160
- assert File.exist?(destination)
161
- assert_equal org_mtime, file_mtime_of(destination)
162
- assert_equal "/#{STAMP_DESTINATION_PATH}", find_css_path_from_index
160
+ assert(File.file?(destination))
161
+ assert_equal(org_mtime, file_mtime_of(destination))
162
+ assert_equal("/#{STAMP_DESTINATION_PATH}", find_css_path_from_index)
163
163
  end
164
164
  end
165
165
 
166
- def test_does_not_rewrite_destination_when_nonsource_files_change
166
+ def test_supports_yaml_hash_argument_with_render_basename_only_option
167
+ with_site_dir do
168
+ find_and_gsub_in_file(
169
+ source_path('_layouts/default.html'),
170
+ '{% ministamp _tmp/site.css assets/screen.css',
171
+ %({% ministamp { source_path: _tmp/site.css, destination_path: /assets/screen.css, render_basename_only: true })
172
+ )
173
+
174
+ generate_site(:development)
175
+
176
+ assert(File.file?(destination_path(STAMP_DESTINATION_PATH)))
177
+ assert_equal('screen.css', find_css_path_from_index)
178
+ end
179
+ end
180
+
181
+ def test_does_not_rewrite_destination_when_changing_nonsource_files
167
182
  with_site_dir do
168
183
  generate_site(:development)
169
184
 
@@ -173,13 +188,39 @@ module Jekyll::Minibundle::Test
173
188
 
174
189
  generate_site(:development, clear_cache: false)
175
190
 
176
- assert_equal org_mtime, file_mtime_of(expected_path)
191
+ assert_equal(org_mtime, file_mtime_of(expected_path))
177
192
 
178
193
  ensure_file_mtime_changes { FileUtils.touch('index.html') }
179
194
 
180
195
  generate_site(:development, clear_cache: false)
181
196
 
182
- assert_equal org_mtime, file_mtime_of(expected_path)
197
+ assert_equal(org_mtime, file_mtime_of(expected_path))
198
+ end
199
+ end
200
+
201
+ def test_does_not_rewrite_destination_when_changing_render_basename_only_option
202
+ with_site_dir do
203
+ generate_site(:development)
204
+
205
+ destination = destination_path(STAMP_DESTINATION_PATH)
206
+ org_mtime = file_mtime_of(destination)
207
+
208
+ assert(File.file?(destination))
209
+ assert_equal(STAMP_DESTINATION_PATH, find_css_path_from_index)
210
+
211
+ ensure_file_mtime_changes do
212
+ find_and_gsub_in_file(
213
+ source_path('_layouts/default.html'),
214
+ '<link rel="stylesheet" href="{% ministamp _tmp/site.css assets/screen.css %}" media="screen">',
215
+ %(<link rel="stylesheet" href="{% ministamp { source_path: _tmp/site.css, destination_path: assets/screen.css, render_basename_only: true } %}" media="screen">)
216
+ )
217
+ end
218
+
219
+ generate_site(:development, clear_cache: false)
220
+
221
+ assert(File.file?(destination))
222
+ assert_equal(org_mtime, file_mtime_of(destination))
223
+ assert_equal('screen.css', find_css_path_from_index)
183
224
  end
184
225
  end
185
226
 
@@ -7,8 +7,8 @@ module Jekyll::Minibundle::Test
7
7
 
8
8
  def test_asset_destination_path_has_stamp
9
9
  with_precompiled_site(:production) do
10
- assert_equal STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index
11
- assert File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
10
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
11
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
12
12
  end
13
13
  end
14
14
 
@@ -16,7 +16,7 @@ module Jekyll::Minibundle::Test
16
16
  with_precompiled_site(:production) do
17
17
  source_contents = File.read(site_fixture_path(STAMP_SOURCE_PATH))
18
18
  destination_contents = File.read(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
19
- assert_equal source_contents, destination_contents
19
+ assert_equal(source_contents, destination_contents)
20
20
  end
21
21
  end
22
22
 
@@ -28,12 +28,12 @@ module Jekyll::Minibundle::Test
28
28
 
29
29
  generate_site(:production, clear_cache: false)
30
30
 
31
- refute File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
31
+ refute(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
32
32
 
33
33
  new_destination = 'assets/screen-0f5dbd1e527a2bee267e85007b08d2a5.css'
34
34
 
35
- assert_equal new_destination, find_css_path_from_index
36
- assert File.exist?(destination_path(new_destination))
35
+ assert_equal(new_destination, find_css_path_from_index)
36
+ assert(File.file?(destination_path(new_destination)))
37
37
  end
38
38
  end
39
39
 
@@ -45,10 +45,10 @@ module Jekyll::Minibundle::Test
45
45
  ensure_file_mtime_changes { FileUtils.touch(source_path(STAMP_SOURCE_PATH)) }
46
46
  generate_site(:production, clear_cache: false)
47
47
 
48
- assert_equal STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index
48
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
49
49
 
50
50
  new_mtime = file_mtime_of(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
51
- assert_operator new_mtime, :>, org_mtime
51
+ assert_operator(new_mtime, :>, org_mtime)
52
52
  end
53
53
  end
54
54
 
@@ -72,7 +72,7 @@ module Jekyll::Minibundle::Test
72
72
 
73
73
  new_mtime = file_mtime_of(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
74
74
 
75
- assert_operator new_mtime, :>, org_mtime
75
+ assert_operator(new_mtime, :>, org_mtime)
76
76
  end
77
77
  end
78
78
 
@@ -80,7 +80,7 @@ module Jekyll::Minibundle::Test
80
80
  with_site_dir do
81
81
  generate_site(:production)
82
82
 
83
- assert File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
83
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
84
84
 
85
85
  ensure_file_mtime_changes do
86
86
  find_and_gsub_in_file(
@@ -92,12 +92,12 @@ module Jekyll::Minibundle::Test
92
92
 
93
93
  generate_site(:production, clear_cache: false)
94
94
 
95
- refute File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
95
+ refute(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
96
96
 
97
97
  new_destination = "assets/screen2-#{STAMP_FINGERPRINT}.css"
98
98
 
99
- assert_equal new_destination, find_css_path_from_index
100
- assert File.exist?(destination_path(new_destination))
99
+ assert_equal(new_destination, find_css_path_from_index)
100
+ assert(File.file?(destination_path(new_destination)))
101
101
  end
102
102
  end
103
103
 
@@ -105,7 +105,7 @@ module Jekyll::Minibundle::Test
105
105
  with_site_dir do
106
106
  generate_site(:production)
107
107
 
108
- assert File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
108
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
109
109
 
110
110
  ensure_file_mtime_changes do
111
111
  find_and_gsub_in_file(
@@ -117,12 +117,12 @@ module Jekyll::Minibundle::Test
117
117
 
118
118
  generate_site(:production, clear_cache: false)
119
119
 
120
- refute File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
120
+ refute(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
121
121
 
122
122
  new_destination = "assets/screen2-#{STAMP_FINGERPRINT}.css"
123
123
 
124
- assert_equal new_destination, find_css_path_from_index
125
- assert File.exist?(destination_path(new_destination))
124
+ assert_equal(new_destination, find_css_path_from_index)
125
+ assert(File.file?(destination_path(new_destination)))
126
126
 
127
127
  ensure_file_mtime_changes do
128
128
  find_and_gsub_in_file(
@@ -134,10 +134,10 @@ module Jekyll::Minibundle::Test
134
134
 
135
135
  generate_site(:production, clear_cache: false)
136
136
 
137
- refute File.exist?(destination_path(new_destination))
137
+ refute(File.file?(destination_path(new_destination)))
138
138
 
139
- assert_equal STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index
140
- assert File.exist?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH))
139
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
140
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
141
141
  end
142
142
  end
143
143
 
@@ -148,8 +148,8 @@ module Jekyll::Minibundle::Test
148
148
  destination = destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)
149
149
  org_mtime = file_mtime_of(destination)
150
150
 
151
- assert File.exist?(destination)
152
- assert_equal STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index
151
+ assert(File.file?(destination))
152
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
153
153
 
154
154
  ensure_file_mtime_changes do
155
155
  find_and_gsub_in_file(
@@ -161,9 +161,9 @@ module Jekyll::Minibundle::Test
161
161
 
162
162
  generate_site(:production, clear_cache: false)
163
163
 
164
- assert File.exist?(destination)
165
- assert_equal org_mtime, file_mtime_of(destination)
166
- assert_equal "/#{STAMP_DESTINATION_FINGERPRINT_PATH}", find_css_path_from_index
164
+ assert(File.file?(destination))
165
+ assert_equal(org_mtime, file_mtime_of(destination))
166
+ assert_equal("/#{STAMP_DESTINATION_FINGERPRINT_PATH}", find_css_path_from_index)
167
167
  end
168
168
  end
169
169
 
@@ -180,16 +180,16 @@ module Jekyll::Minibundle::Test
180
180
  destination = destination_path("screen-#{STAMP_FINGERPRINT}.css")
181
181
  org_mtime = file_mtime_of(destination)
182
182
 
183
- assert File.exist?(destination)
184
- assert_equal "screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index
183
+ assert(File.file?(destination))
184
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
185
185
 
186
186
  ensure_file_mtime_changes do
187
187
  generate_site(:production, clear_cache: false)
188
188
  end
189
189
 
190
- assert File.exist?(destination)
191
- assert_equal org_mtime, file_mtime_of(destination)
192
- assert_equal "screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index
190
+ assert(File.file?(destination))
191
+ assert_equal(org_mtime, file_mtime_of(destination))
192
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
193
193
  end
194
194
  end
195
195
 
@@ -206,16 +206,65 @@ module Jekyll::Minibundle::Test
206
206
  destination = destination_path("screen-#{STAMP_FINGERPRINT}.css")
207
207
  org_mtime = file_mtime_of(destination)
208
208
 
209
- assert File.exist?(destination)
210
- assert_equal "screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index
209
+ assert(File.file?(destination))
210
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
211
211
 
212
212
  ensure_file_mtime_changes do
213
213
  generate_site(:production, clear_cache: false)
214
214
  end
215
215
 
216
- assert File.exist?(destination)
217
- assert_equal org_mtime, file_mtime_of(destination)
218
- assert_equal "screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index
216
+ assert(File.file?(destination))
217
+ assert_equal(org_mtime, file_mtime_of(destination))
218
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
219
+ end
220
+ end
221
+
222
+ def test_supports_yaml_hash_argument_with_source_and_destination_paths
223
+ with_site_dir do
224
+ find_and_gsub_in_file(
225
+ source_path('_layouts/default.html'),
226
+ '<link rel="stylesheet" href="{% ministamp _tmp/site.css assets/screen.css %}" media="screen">',
227
+ %(<link rel="stylesheet" href="{% ministamp { source_path: _tmp/site.css, destination_path: assets/screen.css } %}" media="screen">)
228
+ )
229
+
230
+ generate_site(:production)
231
+
232
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
233
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
234
+ end
235
+ end
236
+
237
+ def test_supports_yaml_hash_argument_with_source_and_destination_paths_with_liquid_variables
238
+ with_site_dir do
239
+ find_and_gsub_in_file(
240
+ source_path('_layouts/default.html'),
241
+ ' <link rel="stylesheet" href="{% ministamp _tmp/site.css assets/screen.css %}" media="screen">',
242
+ <<-END
243
+ {% assign stamp_source_filename = 'site' %}
244
+ {% assign stamp_destination_url = 'assets/screen.css' %}
245
+ <link rel="stylesheet" href="{% ministamp { source_path: '_tmp/{{ stamp_source_filename }}.css', destination_path: '{{ stamp_destination_url }}' } %}" media="screen">
246
+ END
247
+ )
248
+
249
+ generate_site(:production)
250
+
251
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
252
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
253
+ end
254
+ end
255
+
256
+ def test_supports_yaml_hash_argument_with_render_basename_only_option
257
+ with_site_dir do
258
+ find_and_gsub_in_file(
259
+ source_path('_layouts/default.html'),
260
+ '{% ministamp _tmp/site.css assets/screen.css',
261
+ %({% ministamp { source_path: _tmp/site.css, destination_path: /assets/screen.css, render_basename_only: true })
262
+ )
263
+
264
+ generate_site(:production)
265
+
266
+ assert(File.file?(destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)))
267
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
219
268
  end
220
269
  end
221
270
 
@@ -229,13 +278,56 @@ module Jekyll::Minibundle::Test
229
278
 
230
279
  generate_site(:production, clear_cache: false)
231
280
 
232
- assert_equal org_mtime, file_mtime_of(expected_path)
281
+ assert_equal(org_mtime, file_mtime_of(expected_path))
233
282
 
234
283
  ensure_file_mtime_changes { FileUtils.touch('index.html') }
235
284
 
236
285
  generate_site(:production, clear_cache: false)
237
286
 
238
- assert_equal org_mtime, file_mtime_of(expected_path)
287
+ assert_equal(org_mtime, file_mtime_of(expected_path))
288
+ end
289
+ end
290
+
291
+ def test_does_not_rewrite_destination_when_changing_render_basename_only_option
292
+ with_site_dir do
293
+ generate_site(:production)
294
+
295
+ destination = destination_path(STAMP_DESTINATION_FINGERPRINT_PATH)
296
+ org_mtime = file_mtime_of(destination)
297
+
298
+ assert(File.file?(destination))
299
+ assert_equal(STAMP_DESTINATION_FINGERPRINT_PATH, find_css_path_from_index)
300
+
301
+ ensure_file_mtime_changes do
302
+ find_and_gsub_in_file(
303
+ source_path('_layouts/default.html'),
304
+ '<link rel="stylesheet" href="{% ministamp _tmp/site.css assets/screen.css %}" media="screen">',
305
+ %(<link rel="stylesheet" href="{% ministamp { source_path: _tmp/site.css, destination_path: assets/screen.css, render_basename_only: true } %}" media="screen">)
306
+ )
307
+ end
308
+
309
+ generate_site(:production, clear_cache: false)
310
+
311
+ assert(File.file?(destination))
312
+ assert_equal(org_mtime, file_mtime_of(destination))
313
+ assert_equal("screen-#{STAMP_FINGERPRINT}.css", find_css_path_from_index)
314
+ end
315
+ end
316
+
317
+ def test_escapes_generated_url
318
+ with_site_dir do
319
+ find_and_gsub_in_file(
320
+ source_path('_layouts/default.html'),
321
+ '{% ministamp _tmp/site.css assets/screen.css %}',
322
+ %({% ministamp { source_path: '_tmp/site.css', destination_path: 'scre">en.css' } %})
323
+ )
324
+
325
+ generate_site(:production)
326
+
327
+ filename = %(scre">en-#{STAMP_FINGERPRINT}.css)
328
+
329
+ assert(File.file?(destination_path(filename)))
330
+ assert_equal(filename, find_css_path_from_index)
239
331
  end
240
332
  end
241
333