jekyll-minibundle 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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