jekyll-minibundle 2.2.0 → 3.0.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 (56) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +162 -63
  3. data/README.md +62 -57
  4. data/Rakefile +27 -14
  5. data/jekyll-minibundle.gemspec +15 -13
  6. data/lib/jekyll/minibundle.rb +2 -0
  7. data/lib/jekyll/minibundle/asset_bundle.rb +16 -10
  8. data/lib/jekyll/minibundle/asset_file_drop.rb +5 -2
  9. data/lib/jekyll/minibundle/asset_file_properties.rb +2 -0
  10. data/lib/jekyll/minibundle/asset_file_registry.rb +9 -7
  11. data/lib/jekyll/minibundle/asset_stamp.rb +2 -0
  12. data/lib/jekyll/minibundle/asset_tag_markup.rb +6 -4
  13. data/lib/jekyll/minibundle/bundle_file.rb +8 -0
  14. data/lib/jekyll/minibundle/development_file.rb +4 -0
  15. data/lib/jekyll/minibundle/development_file_collection.rb +2 -0
  16. data/lib/jekyll/minibundle/environment.rb +5 -1
  17. data/lib/jekyll/minibundle/exceptions.rb +2 -0
  18. data/lib/jekyll/minibundle/files.rb +2 -0
  19. data/lib/jekyll/minibundle/hashes.rb +3 -0
  20. data/lib/jekyll/minibundle/log.rb +3 -1
  21. data/lib/jekyll/minibundle/mini_bundle_block.rb +8 -1
  22. data/lib/jekyll/minibundle/mini_stamp_tag.rb +3 -1
  23. data/lib/jekyll/minibundle/stamp_file.rb +4 -0
  24. data/lib/jekyll/minibundle/variable_template.rb +15 -12
  25. data/lib/jekyll/minibundle/variable_template_registry.rb +2 -0
  26. data/lib/jekyll/minibundle/version.rb +3 -1
  27. data/test/fixture/site/_bin/remove_comments +1 -0
  28. data/test/fixture/site/_bin/with_count +1 -0
  29. data/test/fixture/site/_config.yml +2 -1
  30. data/test/integration/minibundle_development_mode_test.rb +115 -29
  31. data/test/integration/minibundle_production_mode_test.rb +157 -69
  32. data/test/integration/ministamp_development_mode_test.rb +4 -2
  33. data/test/integration/ministamp_production_mode_test.rb +6 -4
  34. data/test/integration/static_files_as_asset_sources_test.rb +6 -4
  35. data/test/support/assertions.rb +2 -0
  36. data/test/support/fixture_config.rb +14 -12
  37. data/test/support/static_file_config.rb +18 -16
  38. data/test/support/test_case.rb +5 -3
  39. data/test/unit/asset_bundle_test.rb +14 -12
  40. data/test/unit/asset_file_drop_test.rb +4 -3
  41. data/test/unit/asset_file_registry_test.rb +16 -19
  42. data/test/unit/asset_tag_markup_test.rb +8 -6
  43. data/test/unit/bundle_file_properties_test.rb +6 -4
  44. data/test/unit/bundle_file_writing_test.rb +6 -4
  45. data/test/unit/development_file_properties_test.rb +5 -3
  46. data/test/unit/development_file_writing_test.rb +4 -2
  47. data/test/unit/environment_test.rb +6 -4
  48. data/test/unit/files_test.rb +3 -1
  49. data/test/unit/hashes_test.rb +3 -1
  50. data/test/unit/jekyll_static_file_api_test.rb +13 -9
  51. data/test/unit/mini_bundle_block_test.rb +42 -35
  52. data/test/unit/mini_stamp_tag_test.rb +4 -2
  53. data/test/unit/stamp_file_properties_test.rb +5 -3
  54. data/test/unit/stamp_file_writing_test.rb +4 -2
  55. data/test/unit/variable_template_test.rb +8 -8
  56. metadata +13 -14
@@ -1,4 +1,6 @@
1
- require 'support/test_case'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
2
4
  require 'jekyll/minibundle/files'
3
5
 
4
6
  module Jekyll::Minibundle::Test
@@ -1,4 +1,6 @@
1
- require 'support/test_case'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
2
4
  require 'jekyll/minibundle/hashes'
3
5
 
4
6
  module Jekyll::Minibundle::Test
@@ -1,22 +1,26 @@
1
- require 'support/test_case'
2
- require 'support/static_file_config'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
4
+ require_relative '../support/static_file_config'
3
5
  require 'jekyll/minibundle/development_file'
4
6
  require 'jekyll/minibundle/bundle_file'
5
7
  require 'jekyll/minibundle/stamp_file'
6
8
 
7
9
  module Jekyll::Minibundle::Test
8
10
  class JekyllStaticFileAPITest < TestCase
11
+ IGNORED_STATIC_FILE_METHODS = %i[cleaned_relative_path].freeze
12
+
9
13
  include StaticFileConfig
10
14
 
11
- def test_development_file_has_all_static_file_methods
15
+ def test_development_file_has_most_static_file_methods
12
16
  assert_empty(missing_static_file_methods(DevelopmentFile))
13
17
  end
14
18
 
15
- def test_bundle_file_has_all_static_file_methods
19
+ def test_bundle_file_has_most_static_file_methods
16
20
  assert_empty(missing_static_file_methods(BundleFile))
17
21
  end
18
22
 
19
- def test_stamp_file_has_all_static_file_methods
23
+ def test_stamp_file_has_most_static_file_methods
20
24
  assert_empty(missing_static_file_methods(StampFile))
21
25
  end
22
26
 
@@ -42,7 +46,7 @@ module Jekyll::Minibundle::Test
42
46
 
43
47
  return_type_diff = diff_non_nil_response_types_of_static_file_properties(
44
48
  make_static_file(site, 'static.txt'),
45
- make_bundle_file(site, %w{dependency app})
49
+ make_bundle_file(site, %w[dependency app])
46
50
  )
47
51
 
48
52
  assert_empty(return_type_diff)
@@ -82,7 +86,7 @@ module Jekyll::Minibundle::Test
82
86
  FileUtils.touch('app.js')
83
87
 
84
88
  expected_keys = make_static_file(site, 'static.txt').to_liquid.keys.sort
85
- actual_keys = make_bundle_file(site, %w{dependency app}).to_liquid.keys.sort
89
+ actual_keys = make_bundle_file(site, %w[dependency app]).to_liquid.keys.sort
86
90
 
87
91
  assert_equal(expected_keys, actual_keys)
88
92
  end
@@ -103,7 +107,7 @@ module Jekyll::Minibundle::Test
103
107
  private
104
108
 
105
109
  def missing_static_file_methods(clazz)
106
- Jekyll::StaticFile.public_instance_methods - clazz.public_instance_methods
110
+ Jekyll::StaticFile.public_instance_methods - IGNORED_STATIC_FILE_METHODS - clazz.public_instance_methods
107
111
  end
108
112
 
109
113
  def response_types_of_methods(file, methods)
@@ -112,7 +116,7 @@ module Jekyll::Minibundle::Test
112
116
  begin
113
117
  value = file.send(method_name)
114
118
  {returned_type: value.class}
115
- rescue => e
119
+ rescue StandardError => e
116
120
  {raised: e}
117
121
  end
118
122
  end
@@ -1,5 +1,7 @@
1
- require 'support/test_case'
2
- require 'support/fixture_config'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
4
+ require_relative '../support/fixture_config'
3
5
  require 'jekyll/minibundle/mini_bundle_block'
4
6
 
5
7
  module Jekyll::Minibundle::Test
@@ -18,34 +20,39 @@ module Jekyll::Minibundle::Test
18
20
  end
19
21
 
20
22
  def test_raise_exception_if_missing_block_contents
21
- rendered = render_template(<<-END)
22
- {% minibundle css %}
23
+ err = assert_raises(ArgumentError) do
24
+ render_template(<<~LIQUID)
25
+ {% minibundle css %}
23
26
 
24
- {% endminibundle %}
25
- END
26
- expected = "Liquid error: Missing configuration for minibundle block; pass configuration in YAML syntax\n"
27
- assert_equal(expected, rendered)
27
+ {% endminibundle %}
28
+ LIQUID
29
+ end
30
+ assert_equal('Missing configuration for minibundle block; pass configuration in YAML syntax', err.to_s)
28
31
  end
29
32
 
30
33
  def test_raise_exception_if_invalid_block_contents_syntax
31
- rendered = render_template(<<-END)
32
- {% minibundle css %}
33
- }
34
- {% endminibundle %}
35
- END
34
+ err = assert_raises(ArgumentError) do
35
+ render_template(<<~LIQUID)
36
+ {% minibundle css %}
37
+ }
38
+ {% endminibundle %}
39
+ LIQUID
40
+ end
36
41
  expected =
37
- 'Liquid error: Failed parsing minibundle block contents syntax as YAML: "}". ' \
38
- "Cause: (<unknown>): did not find expected node content while parsing a block node at line 2 column 1\n"
39
- assert_equal(expected, rendered)
42
+ 'Failed parsing minibundle block contents syntax as YAML: "}". ' \
43
+ 'Cause: (<unknown>): did not find expected node content while parsing a block node at line 2 column 1'
44
+ assert_equal(expected, err.to_s)
40
45
  end
41
46
 
42
47
  def test_raise_exception_if_unsupported_block_contents_type
43
- rendered = render_template(<<-END)
44
- {% minibundle css %}
45
- str
46
- {% endminibundle %}
47
- END
48
- assert_equal("Liquid error: Unsupported minibundle block contents type (String), only Hash is supported: \nstr\n\n", rendered)
48
+ err = assert_raises(ArgumentError) do
49
+ render_template(<<~LIQUID)
50
+ {% minibundle css %}
51
+ str
52
+ {% endminibundle %}
53
+ LIQUID
54
+ end
55
+ assert_equal("Unsupported minibundle block contents type (String), only Hash is supported: \nstr\n", err.to_s)
49
56
  end
50
57
 
51
58
  [
@@ -86,19 +93,19 @@ str
86
93
  }
87
94
  ].each do |spec|
88
95
  define_method :"test_normalizing_baseurl_with_#{spec.fetch(:description)}" do
89
- actual_output = render_template(<<-END)
90
- {% minibundle css %}
91
- source_dir: _assets/styles
92
- destination_path: assets/site
93
- #{spec.fetch(:baseurl_config)}
94
- assets:
95
- - reset
96
- - common
97
- minifier_cmd: #{minifier_cmd_to_remove_comments}
98
- {% endminibundle %}
99
- END
96
+ actual_output = render_template(<<~LIQUID)
97
+ {% minibundle css %}
98
+ source_dir: _assets/styles
99
+ destination_path: assets/site
100
+ #{spec.fetch(:baseurl_config)}
101
+ assets:
102
+ - reset
103
+ - common
104
+ minifier_cmd: #{minifier_cmd_to_remove_comments}
105
+ {% endminibundle %}
106
+ LIQUID
100
107
 
101
- expected_output = %{<link rel="stylesheet" href="#{spec.fetch(:expected_asset_url)}">\n}
108
+ expected_output = %(<link rel="stylesheet" href="#{spec.fetch(:expected_asset_url)}">\n)
102
109
 
103
110
  assert_equal(expected_output, actual_output)
104
111
  end
@@ -110,7 +117,7 @@ minifier_cmd: #{minifier_cmd_to_remove_comments}
110
117
  compiled = Liquid::Template.parse(template)
111
118
  rendered = nil
112
119
  capture_io do
113
- rendered = compiled.render({}, registers: {site: make_fake_site(site_fixture_path)})
120
+ rendered = compiled.render!({}, registers: {site: make_fake_site(site_fixture_path)})
114
121
  end
115
122
  rendered
116
123
  end
@@ -1,5 +1,7 @@
1
- require 'support/test_case'
2
- require 'support/fixture_config'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
4
+ require_relative '../support/fixture_config'
3
5
  require 'jekyll/minibundle/mini_stamp_tag'
4
6
 
5
7
  module Jekyll::Minibundle::Test
@@ -1,6 +1,8 @@
1
- require 'support/test_case'
2
- require 'support/fixture_config'
3
- require 'support/static_file_config'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
4
+ require_relative '../support/fixture_config'
5
+ require_relative '../support/static_file_config'
4
6
  require 'jekyll/minibundle/stamp_file'
5
7
 
6
8
  module Jekyll::Minibundle::Test
@@ -1,5 +1,7 @@
1
- require 'support/test_case'
2
- require 'support/fixture_config'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../support/test_case'
4
+ require_relative '../support/fixture_config'
3
5
  require 'jekyll/minibundle/stamp_file'
4
6
 
5
7
  module Jekyll::Minibundle::Test
@@ -1,6 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require 'support/test_case'
3
+ require_relative '../support/test_case'
4
4
  require 'jekyll/minibundle/variable_template'
5
5
 
6
6
  module Jekyll::Minibundle::Test
@@ -49,10 +49,10 @@ module Jekyll::Minibundle::Test
49
49
 
50
50
  def test_raise_error_if_unclosed_open_tag
51
51
  err = assert_raises(VariableTemplate::SyntaxError) { VariableTemplate.compile('beg{{var}end') }
52
- expected = <<-END
53
- Missing closing tag ("}}") for variable opening tag ("{{") at position 5 in template (position highlighted with "@"):
54
- beg{{@var}end
55
- END
52
+ expected = <<~MESSAGE
53
+ Missing closing tag ("}}") for variable opening tag ("{{") at position 5 in template (position highlighted with "@"):
54
+ beg{{@var}end
55
+ MESSAGE
56
56
  assert_equal(expected, err.to_s)
57
57
  end
58
58
 
@@ -85,7 +85,7 @@ beg{{@var}end
85
85
  end
86
86
 
87
87
  def test_generator_escapes_text_token
88
- assert_equal('#{}', render('#{}', {}))
88
+ assert_equal('#{}', render('#{}', {})) # rubocop:disable Lint/InterpolationCheck
89
89
  assert_equal('"hey"', render('"hey"', {}))
90
90
  assert_equal("'hey'", render("'hey'", {}))
91
91
  end
@@ -94,7 +94,7 @@ beg{{@var}end
94
94
  assert_equal('42', render('{{ \\ }}', '\\' => 42))
95
95
  assert_equal('42', render("{{ ' }}", "'" => 42))
96
96
  assert_equal('42', render('{{ " }}', '"' => 42))
97
- assert_equal('42', render('{{ #{} }}', '#{}' => 42))
97
+ assert_equal('42', render('{{ #{} }}', '#{}' => 42)) # rubocop:disable Lint/InterpolationCheck
98
98
  assert_equal("beg'42'end", render("beg'{{ 'var' }}'end", "'var'" => 42))
99
99
  end
100
100
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-minibundle
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tuomas Kareinen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-10 00:00:00.000000000 Z
11
+ date: 2020-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: jekyll
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '12.0'
89
+ version: '13.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '12.0'
96
+ version: '13.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.47.0
103
+ version: 0.90.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.47.0
110
+ version: 0.90.0
111
111
  description: |
112
112
  A straightforward asset bundling plugin for Jekyll, utilizing external
113
113
  minification tool of your choice. It provides asset concatenation for
@@ -187,7 +187,7 @@ homepage: https://github.com/tkareine/jekyll-minibundle
187
187
  licenses:
188
188
  - MIT
189
189
  metadata: {}
190
- post_install_message:
190
+ post_install_message:
191
191
  rdoc_options:
192
192
  - "--line-numbers"
193
193
  - "--title"
@@ -200,16 +200,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
200
  requirements:
201
201
  - - ">="
202
202
  - !ruby/object:Gem::Version
203
- version: 2.0.0
203
+ version: 2.4.0
204
204
  required_rubygems_version: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  requirements: []
210
- rubyforge_project:
211
- rubygems_version: 2.6.10
212
- signing_key:
210
+ rubygems_version: 3.1.4
211
+ signing_key:
213
212
  specification_version: 4
214
213
  summary: A minimalistic asset bundling plugin for Jekyll
215
214
  test_files: