liquid 3.0.0.rc1 → 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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +4 -0
  3. data/README.md +2 -2
  4. data/lib/liquid.rb +8 -0
  5. data/lib/liquid/block.rb +50 -46
  6. data/lib/liquid/block_body.rb +123 -0
  7. data/lib/liquid/condition.rb +12 -5
  8. data/lib/liquid/context.rb +75 -148
  9. data/lib/liquid/errors.rb +50 -2
  10. data/lib/liquid/expression.rb +33 -0
  11. data/lib/liquid/parser_switching.rb +31 -0
  12. data/lib/liquid/profiler.rb +159 -0
  13. data/lib/liquid/profiler/hooks.rb +23 -0
  14. data/lib/liquid/range_lookup.rb +22 -0
  15. data/lib/liquid/standardfilters.rb +29 -4
  16. data/lib/liquid/tag.rb +6 -25
  17. data/lib/liquid/tags/assign.rb +2 -1
  18. data/lib/liquid/tags/case.rb +1 -1
  19. data/lib/liquid/tags/if.rb +5 -5
  20. data/lib/liquid/tags/ifchanged.rb +1 -1
  21. data/lib/liquid/tags/include.rb +11 -1
  22. data/lib/liquid/tags/raw.rb +1 -4
  23. data/lib/liquid/tags/table_row.rb +1 -1
  24. data/lib/liquid/template.rb +55 -4
  25. data/lib/liquid/token.rb +18 -0
  26. data/lib/liquid/variable.rb +68 -41
  27. data/lib/liquid/variable_lookup.rb +78 -0
  28. data/lib/liquid/version.rb +1 -1
  29. data/test/integration/assign_test.rb +12 -1
  30. data/test/integration/blank_test.rb +1 -1
  31. data/test/integration/capture_test.rb +1 -1
  32. data/test/integration/context_test.rb +10 -11
  33. data/test/integration/drop_test.rb +29 -3
  34. data/test/integration/error_handling_test.rb +138 -41
  35. data/test/integration/filter_test.rb +7 -7
  36. data/test/integration/hash_ordering_test.rb +6 -8
  37. data/test/integration/output_test.rb +1 -1
  38. data/test/integration/parsing_quirks_test.rb +40 -18
  39. data/test/integration/render_profiling_test.rb +154 -0
  40. data/test/integration/security_test.rb +1 -1
  41. data/test/integration/standard_filter_test.rb +47 -1
  42. data/test/integration/tags/break_tag_test.rb +1 -1
  43. data/test/integration/tags/continue_tag_test.rb +1 -1
  44. data/test/integration/tags/for_tag_test.rb +2 -2
  45. data/test/integration/tags/if_else_tag_test.rb +23 -20
  46. data/test/integration/tags/include_tag_test.rb +24 -2
  47. data/test/integration/tags/increment_tag_test.rb +1 -1
  48. data/test/integration/tags/raw_tag_test.rb +1 -1
  49. data/test/integration/tags/standard_tag_test.rb +4 -4
  50. data/test/integration/tags/statements_test.rb +1 -1
  51. data/test/integration/tags/table_row_test.rb +1 -1
  52. data/test/integration/tags/unless_else_tag_test.rb +1 -1
  53. data/test/integration/template_test.rb +16 -4
  54. data/test/integration/variable_test.rb +11 -1
  55. data/test/test_helper.rb +59 -31
  56. data/test/unit/block_unit_test.rb +2 -5
  57. data/test/unit/condition_unit_test.rb +5 -1
  58. data/test/unit/context_unit_test.rb +13 -7
  59. data/test/unit/file_system_unit_test.rb +5 -5
  60. data/test/unit/i18n_unit_test.rb +3 -3
  61. data/test/unit/lexer_unit_test.rb +1 -1
  62. data/test/unit/module_ex_unit_test.rb +1 -1
  63. data/test/unit/parser_unit_test.rb +1 -1
  64. data/test/unit/regexp_unit_test.rb +1 -1
  65. data/test/unit/strainer_unit_test.rb +3 -2
  66. data/test/unit/tag_unit_test.rb +6 -1
  67. data/test/unit/tags/case_tag_unit_test.rb +1 -1
  68. data/test/unit/tags/for_tag_unit_test.rb +1 -1
  69. data/test/unit/tags/if_tag_unit_test.rb +1 -1
  70. data/test/unit/template_unit_test.rb +1 -1
  71. data/test/unit/tokenizer_unit_test.rb +10 -1
  72. data/test/unit/variable_unit_test.rb +49 -46
  73. metadata +71 -47
@@ -0,0 +1,154 @@
1
+ require 'test_helper'
2
+
3
+ class RenderProfilingTest < Minitest::Test
4
+ include Liquid
5
+
6
+ class ProfilingFileSystem
7
+ def read_template_file(template_path, context)
8
+ "Rendering template {% assign template_name = '#{template_path}'%}\n{{ template_name }}"
9
+ end
10
+ end
11
+
12
+ def setup
13
+ Liquid::Template.file_system = ProfilingFileSystem.new
14
+ end
15
+
16
+ def test_template_allows_flagging_profiling
17
+ t = Template.parse("{{ 'a string' | upcase }}")
18
+ t.render!
19
+
20
+ assert_nil t.profiler
21
+ end
22
+
23
+ def test_parse_makes_available_simple_profiling
24
+ t = Template.parse("{{ 'a string' | upcase }}", :profile => true)
25
+ t.render!
26
+
27
+ assert_equal 1, t.profiler.length
28
+
29
+ node = t.profiler[0]
30
+ assert_equal " 'a string' | upcase ", node.code
31
+ end
32
+
33
+ def test_render_ignores_raw_strings_when_profiling
34
+ t = Template.parse("This is raw string\nstuff\nNewline", :profile => true)
35
+ t.render!
36
+
37
+ assert_equal 0, t.profiler.length
38
+ end
39
+
40
+ def test_profiling_includes_line_numbers_of_liquid_nodes
41
+ t = Template.parse("{{ 'a string' | upcase }}\n{% increment test %}", :profile => true)
42
+ t.render!
43
+ assert_equal 2, t.profiler.length
44
+
45
+ # {{ 'a string' | upcase }}
46
+ assert_equal 1, t.profiler[0].line_number
47
+ # {{ increment test }}
48
+ assert_equal 2, t.profiler[1].line_number
49
+ end
50
+
51
+ def test_profiling_includes_line_numbers_of_included_partials
52
+ t = Template.parse("{% include 'a_template' %}", :profile => true)
53
+ t.render!
54
+
55
+ included_children = t.profiler[0].children
56
+
57
+ # {% assign template_name = 'a_template' %}
58
+ assert_equal 1, included_children[0].line_number
59
+ # {{ template_name }}
60
+ assert_equal 2, included_children[1].line_number
61
+ end
62
+
63
+ def test_profiling_times_the_rendering_of_tokens
64
+ t = Template.parse("{% include 'a_template' %}", :profile => true)
65
+ t.render!
66
+
67
+ node = t.profiler[0]
68
+ refute_nil node.render_time
69
+ end
70
+
71
+ def test_profiling_times_the_entire_render
72
+ t = Template.parse("{% include 'a_template' %}", :profile => true)
73
+ t.render!
74
+
75
+ assert t.profiler.total_render_time >= 0, "Total render time was not calculated"
76
+ end
77
+
78
+ def test_profiling_uses_include_to_mark_children
79
+ t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}", :profile => true)
80
+ t.render!
81
+
82
+ include_node = t.profiler[1]
83
+ assert_equal 2, include_node.children.length
84
+ end
85
+
86
+ def test_profiling_marks_children_with_the_name_of_included_partial
87
+ t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}", :profile => true)
88
+ t.render!
89
+
90
+ include_node = t.profiler[1]
91
+ include_node.children.each do |child|
92
+ assert_equal "'a_template'", child.partial
93
+ end
94
+ end
95
+
96
+ def test_profiling_supports_multiple_templates
97
+ t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}\n{% include 'b_template' %}", :profile => true)
98
+ t.render!
99
+
100
+ a_template = t.profiler[1]
101
+ a_template.children.each do |child|
102
+ assert_equal "'a_template'", child.partial
103
+ end
104
+
105
+ b_template = t.profiler[2]
106
+ b_template.children.each do |child|
107
+ assert_equal "'b_template'", child.partial
108
+ end
109
+ end
110
+
111
+ def test_profiling_supports_rendering_the_same_partial_multiple_times
112
+ t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}\n{% include 'a_template' %}", :profile => true)
113
+ t.render!
114
+
115
+ a_template1 = t.profiler[1]
116
+ a_template1.children.each do |child|
117
+ assert_equal "'a_template'", child.partial
118
+ end
119
+
120
+ a_template2 = t.profiler[2]
121
+ a_template2.children.each do |child|
122
+ assert_equal "'a_template'", child.partial
123
+ end
124
+ end
125
+
126
+ def test_can_iterate_over_each_profiling_entry
127
+ t = Template.parse("{{ 'a string' | upcase }}\n{% increment test %}", :profile => true)
128
+ t.render!
129
+
130
+ timing_count = 0
131
+ t.profiler.each do |timing|
132
+ timing_count += 1
133
+ end
134
+
135
+ assert_equal 2, timing_count
136
+ end
137
+
138
+ def test_profiling_marks_children_of_if_blocks
139
+ t = Template.parse("{% if true %} {% increment test %} {{ test }} {% endif %}", :profile => true)
140
+ t.render!
141
+
142
+ assert_equal 1, t.profiler.length
143
+ assert_equal 2, t.profiler[0].children.length
144
+ end
145
+
146
+ def test_profiling_marks_children_of_for_blocks
147
+ t = Template.parse("{% for item in collection %} {{ item }} {% endfor %}", :profile => true)
148
+ t.render!({"collection" => ["one", "two"]})
149
+
150
+ assert_equal 1, t.profiler.length
151
+ # Will profile each invocation of the for block
152
+ assert_equal 2, t.profiler[0].children.length
153
+ end
154
+ end
@@ -6,7 +6,7 @@ module SecurityFilter
6
6
  end
7
7
  end
8
8
 
9
- class SecurityTest < Test::Unit::TestCase
9
+ class SecurityTest < Minitest::Test
10
10
  include Liquid
11
11
 
12
12
  def test_no_instance_eval
@@ -41,7 +41,7 @@ class TestEnumerable < Liquid::Drop
41
41
  end
42
42
  end
43
43
 
44
- class StandardFiltersTest < Test::Unit::TestCase
44
+ class StandardFiltersTest < Minitest::Test
45
45
  include Liquid
46
46
 
47
47
  def setup
@@ -64,6 +64,34 @@ class StandardFiltersTest < Test::Unit::TestCase
64
64
  assert_equal '', @filters.upcase(nil)
65
65
  end
66
66
 
67
+ def test_slice
68
+ assert_equal 'oob', @filters.slice('foobar', 1, 3)
69
+ assert_equal 'oobar', @filters.slice('foobar', 1, 1000)
70
+ assert_equal '', @filters.slice('foobar', 1, 0)
71
+ assert_equal 'o', @filters.slice('foobar', 1, 1)
72
+ assert_equal 'bar', @filters.slice('foobar', 3, 3)
73
+ assert_equal 'ar', @filters.slice('foobar', -2, 2)
74
+ assert_equal 'ar', @filters.slice('foobar', -2, 1000)
75
+ assert_equal 'r', @filters.slice('foobar', -1)
76
+ assert_equal '', @filters.slice(nil, 0)
77
+ assert_equal '', @filters.slice('foobar', 100, 10)
78
+ assert_equal '', @filters.slice('foobar', -100, 10)
79
+ end
80
+
81
+ def test_slice_on_arrays
82
+ input = 'foobar'.split(//)
83
+ assert_equal %w{o o b}, @filters.slice(input, 1, 3)
84
+ assert_equal %w{o o b a r}, @filters.slice(input, 1, 1000)
85
+ assert_equal %w{}, @filters.slice(input, 1, 0)
86
+ assert_equal %w{o}, @filters.slice(input, 1, 1)
87
+ assert_equal %w{b a r}, @filters.slice(input, 3, 3)
88
+ assert_equal %w{a r}, @filters.slice(input, -2, 2)
89
+ assert_equal %w{a r}, @filters.slice(input, -2, 1000)
90
+ assert_equal %w{r}, @filters.slice(input, -1)
91
+ assert_equal %w{}, @filters.slice(input, 100, 10)
92
+ assert_equal %w{}, @filters.slice(input, -100, 10)
93
+ end
94
+
67
95
  def test_truncate
68
96
  assert_equal '1234...', @filters.truncate('1234567890', 7)
69
97
  assert_equal '1234567890', @filters.truncate('1234567890', 20)
@@ -78,6 +106,7 @@ class StandardFiltersTest < Test::Unit::TestCase
78
106
  assert_equal ['A?Z'], @filters.split('A?Z', '~')
79
107
  # Regexp works although Liquid does not support.
80
108
  assert_equal ['A','Z'], @filters.split('AxZ', /x/)
109
+ assert_equal [], @filters.split(nil, ' ')
81
110
  end
82
111
 
83
112
  def test_escape
@@ -89,6 +118,11 @@ class StandardFiltersTest < Test::Unit::TestCase
89
118
  assert_equal '&lt;strong&gt;Hulk&lt;/strong&gt;', @filters.escape_once('&lt;strong&gt;Hulk</strong>')
90
119
  end
91
120
 
121
+ def test_url_encode
122
+ assert_equal 'foo%2B1%40example.com', @filters.url_encode('foo+1@example.com')
123
+ assert_equal nil, @filters.url_encode(nil)
124
+ end
125
+
92
126
  def test_truncatewords
93
127
  assert_equal 'one two three', @filters.truncatewords('one two three', 4)
94
128
  assert_equal 'one two...', @filters.truncatewords('one two three', 2)
@@ -128,6 +162,13 @@ class StandardFiltersTest < Test::Unit::TestCase
128
162
  assert_equal [{"a" => "10"}, {"a" => "2"}], @filters.sort([{"a" => "10"}, {"a" => "2"}], "a")
129
163
  end
130
164
 
165
+ def test_uniq
166
+ assert_equal [1,3,2,4], @filters.uniq([1,1,3,2,3,1,4,3,2,1])
167
+ assert_equal [{"a" => 1}, {"a" => 3}, {"a" => 2}], @filters.uniq([{"a" => 1}, {"a" => 3}, {"a" => 1}, {"a" => 2}], "a")
168
+ testdrop = TestDrop.new
169
+ assert_equal [testdrop], @filters.uniq([testdrop, TestDrop.new], 'test')
170
+ end
171
+
131
172
  def test_reverse
132
173
  assert_equal [4,3,2,1], @filters.reverse([1,2,3,4])
133
174
  end
@@ -184,6 +225,11 @@ class StandardFiltersTest < Test::Unit::TestCase
184
225
  assert_template_result "213", '{{ foo | sort: "bar" | map: "foo" }}', "foo" => TestEnumerable.new
185
226
  end
186
227
 
228
+ def test_first_and_last_call_to_liquid
229
+ assert_template_result 'foobar', '{{ foo | first }}', 'foo' => [ThingWithToLiquid.new]
230
+ assert_template_result 'foobar', '{{ foo | last }}', 'foo' => [ThingWithToLiquid.new]
231
+ end
232
+
187
233
  def test_date
188
234
  assert_equal 'May', @filters.date(Time.parse("2006-05-05 10:00:00"), "%B")
189
235
  assert_equal 'June', @filters.date(Time.parse("2006-06-05 10:00:00"), "%B")
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class BreakTagTest < Test::Unit::TestCase
3
+ class BreakTagTest < Minitest::Test
4
4
  include Liquid
5
5
 
6
6
  # tests that no weird errors are raised if break is called outside of a
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class ContinueTagTest < Test::Unit::TestCase
3
+ class ContinueTagTest < Minitest::Test
4
4
  include Liquid
5
5
 
6
6
  # tests that no weird errors are raised if continue is called outside of a
@@ -6,7 +6,7 @@ class ThingWithValue < Liquid::Drop
6
6
  end
7
7
  end
8
8
 
9
- class ForTagTest < Test::Unit::TestCase
9
+ class ForTagTest < Minitest::Test
10
10
  include Liquid
11
11
 
12
12
  def test_for
@@ -303,7 +303,7 @@ HERE
303
303
  end
304
304
 
305
305
  def test_bad_variable_naming_in_for_loop
306
- assert_raise(Liquid::SyntaxError) do
306
+ assert_raises(Liquid::SyntaxError) do
307
307
  Liquid::Template.parse('{% for a/b in x %}{% endfor %}')
308
308
  end
309
309
  end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class IfElseTagTest < Test::Unit::TestCase
3
+ class IfElseTagTest < Minitest::Test
4
4
  include Liquid
5
5
 
6
6
  def test_if
@@ -10,6 +10,11 @@ class IfElseTagTest < Test::Unit::TestCase
10
10
  assert_template_result(' you rock ?','{% if false %} you suck {% endif %} {% if true %} you rock {% endif %}?')
11
11
  end
12
12
 
13
+ def test_literal_comparisons
14
+ assert_template_result(' NO ','{% assign v = false %}{% if v %} YES {% else %} NO {% endif %}')
15
+ assert_template_result(' YES ','{% assign v = nil %}{% if v == nil %} YES {% else %} NO {% endif %}')
16
+ end
17
+
13
18
  def test_if_else
14
19
  assert_template_result(' YES ','{% if false %} NO {% else %} YES {% endif %}')
15
20
  assert_template_result(' YES ','{% if true %} YES {% else %} NO {% endif %}')
@@ -37,25 +42,19 @@ class IfElseTagTest < Test::Unit::TestCase
37
42
  end
38
43
 
39
44
  def test_comparison_of_strings_containing_and_or_or
40
- assert_nothing_raised do
41
- awful_markup = "a == 'and' and b == 'or' and c == 'foo and bar' and d == 'bar or baz' and e == 'foo' and foo and bar"
42
- assigns = {'a' => 'and', 'b' => 'or', 'c' => 'foo and bar', 'd' => 'bar or baz', 'e' => 'foo', 'foo' => true, 'bar' => true}
43
- assert_template_result(' YES ',"{% if #{awful_markup} %} YES {% endif %}", assigns)
44
- end
45
+ awful_markup = "a == 'and' and b == 'or' and c == 'foo and bar' and d == 'bar or baz' and e == 'foo' and foo and bar"
46
+ assigns = {'a' => 'and', 'b' => 'or', 'c' => 'foo and bar', 'd' => 'bar or baz', 'e' => 'foo', 'foo' => true, 'bar' => true}
47
+ assert_template_result(' YES ',"{% if #{awful_markup} %} YES {% endif %}", assigns)
45
48
  end
46
49
 
47
50
  def test_comparison_of_expressions_starting_with_and_or_or
48
51
  assigns = {'order' => {'items_count' => 0}, 'android' => {'name' => 'Roy'}}
49
- assert_nothing_raised do
50
- assert_template_result( "YES",
51
- "{% if android.name == 'Roy' %}YES{% endif %}",
52
- assigns)
53
- end
54
- assert_nothing_raised do
55
- assert_template_result( "YES",
56
- "{% if order.items_count == 0 %}YES{% endif %}",
57
- assigns)
58
- end
52
+ assert_template_result( "YES",
53
+ "{% if android.name == 'Roy' %}YES{% endif %}",
54
+ assigns)
55
+ assert_template_result( "YES",
56
+ "{% if order.items_count == 0 %}YES{% endif %}",
57
+ assigns)
59
58
  end
60
59
 
61
60
  def test_if_and
@@ -135,31 +134,35 @@ class IfElseTagTest < Test::Unit::TestCase
135
134
  end
136
135
 
137
136
  def test_syntax_error_no_variable
138
- assert_raise(SyntaxError){ assert_template_result('', '{% if jerry == 1 %}')}
137
+ assert_raises(SyntaxError){ assert_template_result('', '{% if jerry == 1 %}')}
139
138
  end
140
139
 
141
140
  def test_syntax_error_no_expression
142
- assert_raise(SyntaxError) { assert_template_result('', '{% if %}') }
141
+ assert_raises(SyntaxError) { assert_template_result('', '{% if %}') }
143
142
  end
144
143
 
145
144
  def test_if_with_custom_condition
145
+ original_op = Condition.operators['contains']
146
146
  Condition.operators['contains'] = :[]
147
147
 
148
148
  assert_template_result('yes', %({% if 'bob' contains 'o' %}yes{% endif %}))
149
149
  assert_template_result('no', %({% if 'bob' contains 'f' %}yes{% else %}no{% endif %}))
150
150
  ensure
151
- Condition.operators.delete 'contains'
151
+ Condition.operators['contains'] = original_op
152
152
  end
153
153
 
154
154
  def test_operators_are_ignored_unless_isolated
155
+ original_op = Condition.operators['contains']
155
156
  Condition.operators['contains'] = :[]
156
157
 
157
158
  assert_template_result('yes',
158
159
  %({% if 'gnomeslab-and-or-liquid' contains 'gnomeslab-and-or-liquid' %}yes{% endif %}))
160
+ ensure
161
+ Condition.operators['contains'] = original_op
159
162
  end
160
163
 
161
164
  def test_operators_are_whitelisted
162
- assert_raise(SyntaxError) do
165
+ assert_raises(SyntaxError) do
163
166
  assert_template_result('', %({% if 1 or throw or or 1 %}yes{% endif %}))
164
167
  end
165
168
  end
@@ -27,6 +27,9 @@ class TestFileSystem
27
27
  when "pick_a_source"
28
28
  "from TestFileSystem"
29
29
 
30
+ when 'assignments'
31
+ "{% assign foo = 'bar' %}"
32
+
30
33
  else
31
34
  template_path
32
35
  end
@@ -65,7 +68,7 @@ class CustomInclude < Liquid::Tag
65
68
  end
66
69
  end
67
70
 
68
- class IncludeTagTest < Test::Unit::TestCase
71
+ class IncludeTagTest < Minitest::Test
69
72
  include Liquid
70
73
 
71
74
  def setup
@@ -108,6 +111,10 @@ class IncludeTagTest < Test::Unit::TestCase
108
111
  'echo1' => 'test123', 'more_echos' => { "echo2" => 'test321'}
109
112
  end
110
113
 
114
+ def test_included_templates_assigns_variables
115
+ assert_template_result "bar", "{% include 'assignments' %}{{ foo }}"
116
+ end
117
+
111
118
  def test_nested_include_tag
112
119
  assert_template_result "body body_detail", "{% include 'body' %}"
113
120
 
@@ -132,7 +139,7 @@ class IncludeTagTest < Test::Unit::TestCase
132
139
 
133
140
  Liquid::Template.file_system = infinite_file_system.new
134
141
 
135
- assert_raise(Liquid::StackLevelError) do
142
+ assert_raises(Liquid::StackLevelError, SystemStackError) do
136
143
  Template.parse("{% include 'loop' %}").render!
137
144
  end
138
145
 
@@ -209,4 +216,19 @@ class IncludeTagTest < Test::Unit::TestCase
209
216
  a.render!
210
217
  assert_empty a.errors
211
218
  end
219
+
220
+ def test_passing_options_to_included_templates
221
+ assert_raises(Liquid::SyntaxError) do
222
+ Template.parse("{% include template %}", error_mode: :strict).render!("template" => '{{ "X" || downcase }}')
223
+ end
224
+ with_error_mode(:lax) do
225
+ assert_equal 'x', Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: true).render!("template" => '{{ "X" || downcase }}')
226
+ end
227
+ assert_raises(Liquid::SyntaxError) do
228
+ Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: [:locale]).render!("template" => '{{ "X" || downcase }}')
229
+ end
230
+ with_error_mode(:lax) do
231
+ assert_equal 'x', Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: [:error_mode]).render!("template" => '{{ "X" || downcase }}')
232
+ end
233
+ end
212
234
  end # IncludeTagTest
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class IncrementTagTest < Test::Unit::TestCase
3
+ class IncrementTagTest < Minitest::Test
4
4
  include Liquid
5
5
 
6
6
  def test_inc
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RawTagTest < Test::Unit::TestCase
3
+ class RawTagTest < Minitest::Test
4
4
  include Liquid
5
5
 
6
6
  def test_tag_in_raw