liquid 3.0.6 → 5.4.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 (113) hide show
  1. checksums.yaml +5 -5
  2. data/History.md +243 -58
  3. data/README.md +43 -4
  4. data/lib/liquid/block.rb +57 -123
  5. data/lib/liquid/block_body.rb +217 -85
  6. data/lib/liquid/condition.rb +92 -45
  7. data/lib/liquid/context.rb +154 -89
  8. data/lib/liquid/document.rb +57 -9
  9. data/lib/liquid/drop.rb +20 -17
  10. data/lib/liquid/errors.rb +27 -29
  11. data/lib/liquid/expression.rb +32 -20
  12. data/lib/liquid/extensions.rb +21 -7
  13. data/lib/liquid/file_system.rb +17 -15
  14. data/lib/liquid/forloop_drop.rb +92 -0
  15. data/lib/liquid/i18n.rb +10 -8
  16. data/lib/liquid/interrupts.rb +4 -3
  17. data/lib/liquid/lexer.rb +37 -26
  18. data/lib/liquid/locales/en.yml +13 -6
  19. data/lib/liquid/parse_context.rb +54 -0
  20. data/lib/liquid/parse_tree_visitor.rb +42 -0
  21. data/lib/liquid/parser.rb +30 -18
  22. data/lib/liquid/parser_switching.rb +20 -6
  23. data/lib/liquid/partial_cache.rb +24 -0
  24. data/lib/liquid/profiler/hooks.rb +26 -14
  25. data/lib/liquid/profiler.rb +72 -92
  26. data/lib/liquid/range_lookup.rb +28 -3
  27. data/lib/liquid/registers.rb +51 -0
  28. data/lib/liquid/resource_limits.rb +62 -0
  29. data/lib/liquid/standardfilters.rb +715 -132
  30. data/lib/liquid/strainer_factory.rb +41 -0
  31. data/lib/liquid/strainer_template.rb +62 -0
  32. data/lib/liquid/tablerowloop_drop.rb +121 -0
  33. data/lib/liquid/tag/disableable.rb +22 -0
  34. data/lib/liquid/tag/disabler.rb +21 -0
  35. data/lib/liquid/tag.rb +35 -12
  36. data/lib/liquid/tags/assign.rb +57 -18
  37. data/lib/liquid/tags/break.rb +15 -5
  38. data/lib/liquid/tags/capture.rb +24 -18
  39. data/lib/liquid/tags/case.rb +79 -30
  40. data/lib/liquid/tags/comment.rb +19 -4
  41. data/lib/liquid/tags/continue.rb +16 -12
  42. data/lib/liquid/tags/cycle.rb +47 -27
  43. data/lib/liquid/tags/decrement.rb +23 -24
  44. data/lib/liquid/tags/echo.rb +41 -0
  45. data/lib/liquid/tags/for.rb +155 -124
  46. data/lib/liquid/tags/if.rb +97 -63
  47. data/lib/liquid/tags/ifchanged.rb +11 -12
  48. data/lib/liquid/tags/include.rb +82 -73
  49. data/lib/liquid/tags/increment.rb +23 -17
  50. data/lib/liquid/tags/inline_comment.rb +43 -0
  51. data/lib/liquid/tags/raw.rb +50 -8
  52. data/lib/liquid/tags/render.rb +109 -0
  53. data/lib/liquid/tags/table_row.rb +57 -41
  54. data/lib/liquid/tags/unless.rb +38 -20
  55. data/lib/liquid/template.rb +71 -103
  56. data/lib/liquid/template_factory.rb +9 -0
  57. data/lib/liquid/tokenizer.rb +39 -0
  58. data/lib/liquid/usage.rb +8 -0
  59. data/lib/liquid/utils.rb +63 -9
  60. data/lib/liquid/variable.rb +74 -56
  61. data/lib/liquid/variable_lookup.rb +31 -15
  62. data/lib/liquid/version.rb +3 -1
  63. data/lib/liquid.rb +27 -12
  64. metadata +30 -106
  65. data/lib/liquid/module_ex.rb +0 -62
  66. data/lib/liquid/strainer.rb +0 -59
  67. data/lib/liquid/token.rb +0 -18
  68. data/test/fixtures/en_locale.yml +0 -9
  69. data/test/integration/assign_test.rb +0 -48
  70. data/test/integration/blank_test.rb +0 -106
  71. data/test/integration/capture_test.rb +0 -50
  72. data/test/integration/context_test.rb +0 -32
  73. data/test/integration/drop_test.rb +0 -271
  74. data/test/integration/error_handling_test.rb +0 -207
  75. data/test/integration/filter_test.rb +0 -138
  76. data/test/integration/hash_ordering_test.rb +0 -23
  77. data/test/integration/output_test.rb +0 -124
  78. data/test/integration/parsing_quirks_test.rb +0 -116
  79. data/test/integration/render_profiling_test.rb +0 -154
  80. data/test/integration/security_test.rb +0 -64
  81. data/test/integration/standard_filter_test.rb +0 -396
  82. data/test/integration/tags/break_tag_test.rb +0 -16
  83. data/test/integration/tags/continue_tag_test.rb +0 -16
  84. data/test/integration/tags/for_tag_test.rb +0 -375
  85. data/test/integration/tags/if_else_tag_test.rb +0 -190
  86. data/test/integration/tags/include_tag_test.rb +0 -234
  87. data/test/integration/tags/increment_tag_test.rb +0 -24
  88. data/test/integration/tags/raw_tag_test.rb +0 -25
  89. data/test/integration/tags/standard_tag_test.rb +0 -297
  90. data/test/integration/tags/statements_test.rb +0 -113
  91. data/test/integration/tags/table_row_test.rb +0 -63
  92. data/test/integration/tags/unless_else_tag_test.rb +0 -26
  93. data/test/integration/template_test.rb +0 -182
  94. data/test/integration/variable_test.rb +0 -82
  95. data/test/test_helper.rb +0 -89
  96. data/test/unit/block_unit_test.rb +0 -55
  97. data/test/unit/condition_unit_test.rb +0 -149
  98. data/test/unit/context_unit_test.rb +0 -492
  99. data/test/unit/file_system_unit_test.rb +0 -35
  100. data/test/unit/i18n_unit_test.rb +0 -37
  101. data/test/unit/lexer_unit_test.rb +0 -48
  102. data/test/unit/module_ex_unit_test.rb +0 -87
  103. data/test/unit/parser_unit_test.rb +0 -82
  104. data/test/unit/regexp_unit_test.rb +0 -44
  105. data/test/unit/strainer_unit_test.rb +0 -69
  106. data/test/unit/tag_unit_test.rb +0 -16
  107. data/test/unit/tags/case_tag_unit_test.rb +0 -10
  108. data/test/unit/tags/for_tag_unit_test.rb +0 -13
  109. data/test/unit/tags/if_tag_unit_test.rb +0 -8
  110. data/test/unit/template_unit_test.rb +0 -69
  111. data/test/unit/tokenizer_unit_test.rb +0 -38
  112. data/test/unit/variable_unit_test.rb +0 -145
  113. /data/{MIT-LICENSE → LICENSE} +0 -0
@@ -1,396 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test_helper'
4
-
5
- class Filters
6
- include Liquid::StandardFilters
7
- end
8
-
9
- class TestThing
10
- attr_reader :foo
11
-
12
- def initialize
13
- @foo = 0
14
- end
15
-
16
- def to_s
17
- "woot: #{@foo}"
18
- end
19
-
20
- def [](whatever)
21
- to_s
22
- end
23
-
24
- def to_liquid
25
- @foo += 1
26
- self
27
- end
28
- end
29
-
30
- class TestDrop < Liquid::Drop
31
- def test
32
- "testfoo"
33
- end
34
- end
35
-
36
- class TestEnumerable < Liquid::Drop
37
- include Enumerable
38
-
39
- def each(&block)
40
- [ { "foo" => 1, "bar" => 2 }, { "foo" => 2, "bar" => 1 }, { "foo" => 3, "bar" => 3 } ].each(&block)
41
- end
42
- end
43
-
44
- class StandardFiltersTest < Minitest::Test
45
- include Liquid
46
-
47
- def setup
48
- @filters = Filters.new
49
- end
50
-
51
- def test_size
52
- assert_equal 3, @filters.size([1,2,3])
53
- assert_equal 0, @filters.size([])
54
- assert_equal 0, @filters.size(nil)
55
- end
56
-
57
- def test_downcase
58
- assert_equal 'testing', @filters.downcase("Testing")
59
- assert_equal '', @filters.downcase(nil)
60
- end
61
-
62
- def test_upcase
63
- assert_equal 'TESTING', @filters.upcase("Testing")
64
- assert_equal '', @filters.upcase(nil)
65
- end
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
-
95
- def test_truncate
96
- assert_equal '1234...', @filters.truncate('1234567890', 7)
97
- assert_equal '1234567890', @filters.truncate('1234567890', 20)
98
- assert_equal '...', @filters.truncate('1234567890', 0)
99
- assert_equal '1234567890', @filters.truncate('1234567890')
100
- assert_equal "测试...", @filters.truncate("测试测试测试测试", 5)
101
- end
102
-
103
- def test_split
104
- assert_equal ['12','34'], @filters.split('12~34', '~')
105
- assert_equal ['A? ',' ,Z'], @filters.split('A? ~ ~ ~ ,Z', '~ ~ ~')
106
- assert_equal ['A?Z'], @filters.split('A?Z', '~')
107
- # Regexp works although Liquid does not support.
108
- assert_equal ['A','Z'], @filters.split('AxZ', /x/)
109
- assert_equal [], @filters.split(nil, ' ')
110
- end
111
-
112
- def test_escape
113
- assert_equal '&lt;strong&gt;', @filters.escape('<strong>')
114
- assert_equal '&lt;strong&gt;', @filters.h('<strong>')
115
- end
116
-
117
- def test_escape_once
118
- assert_equal '&lt;strong&gt;Hulk&lt;/strong&gt;', @filters.escape_once('&lt;strong&gt;Hulk</strong>')
119
- end
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
-
126
- def test_truncatewords
127
- assert_equal 'one two three', @filters.truncatewords('one two three', 4)
128
- assert_equal 'one two...', @filters.truncatewords('one two three', 2)
129
- assert_equal 'one two three', @filters.truncatewords('one two three')
130
- assert_equal 'Two small (13&#8221; x 5.5&#8221; x 10&#8221; high) baskets fit inside one large basket (13&#8221;...', @filters.truncatewords('Two small (13&#8221; x 5.5&#8221; x 10&#8221; high) baskets fit inside one large basket (13&#8221; x 16&#8221; x 10.5&#8221; high) with cover.', 15)
131
- assert_equal "测试测试测试测试", @filters.truncatewords('测试测试测试测试', 5)
132
- end
133
-
134
- def test_strip_html
135
- assert_equal 'test', @filters.strip_html("<div>test</div>")
136
- assert_equal 'test', @filters.strip_html("<div id='test'>test</div>")
137
- assert_equal '', @filters.strip_html("<script type='text/javascript'>document.write('some stuff');</script>")
138
- assert_equal '', @filters.strip_html("<style type='text/css'>foo bar</style>")
139
- assert_equal 'test', @filters.strip_html("<div\nclass='multiline'>test</div>")
140
- assert_equal 'test', @filters.strip_html("<!-- foo bar \n test -->test")
141
- assert_equal '', @filters.strip_html(nil)
142
- end
143
-
144
- def test_join
145
- assert_equal '1 2 3 4', @filters.join([1,2,3,4])
146
- assert_equal '1 - 2 - 3 - 4', @filters.join([1,2,3,4], ' - ')
147
- end
148
-
149
- def test_sort
150
- assert_equal [1,2,3,4], @filters.sort([4,3,2,1])
151
- assert_equal [{"a" => 1}, {"a" => 2}, {"a" => 3}, {"a" => 4}], @filters.sort([{"a" => 4}, {"a" => 3}, {"a" => 1}, {"a" => 2}], "a")
152
- end
153
-
154
- def test_legacy_sort_hash
155
- assert_equal [{a:1, b:2}], @filters.sort({a:1, b:2})
156
- end
157
-
158
- def test_numerical_vs_lexicographical_sort
159
- assert_equal [2, 10], @filters.sort([10, 2])
160
- assert_equal [{"a" => 2}, {"a" => 10}], @filters.sort([{"a" => 10}, {"a" => 2}], "a")
161
- assert_equal ["10", "2"], @filters.sort(["10", "2"])
162
- assert_equal [{"a" => "10"}, {"a" => "2"}], @filters.sort([{"a" => "10"}, {"a" => "2"}], "a")
163
- end
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
-
172
- def test_reverse
173
- assert_equal [4,3,2,1], @filters.reverse([1,2,3,4])
174
- end
175
-
176
- def test_legacy_reverse_hash
177
- assert_equal [{a:1, b:2}], @filters.reverse(a:1, b:2)
178
- end
179
-
180
- def test_map
181
- assert_equal [1,2,3,4], @filters.map([{"a" => 1}, {"a" => 2}, {"a" => 3}, {"a" => 4}], 'a')
182
- assert_template_result 'abc', "{{ ary | map:'foo' | map:'bar' }}",
183
- 'ary' => [{'foo' => {'bar' => 'a'}}, {'foo' => {'bar' => 'b'}}, {'foo' => {'bar' => 'c'}}]
184
- end
185
-
186
- def test_map_doesnt_call_arbitrary_stuff
187
- assert_template_result "", '{{ "foo" | map: "__id__" }}'
188
- assert_template_result "", '{{ "foo" | map: "inspect" }}'
189
- end
190
-
191
- def test_map_calls_to_liquid
192
- t = TestThing.new
193
- assert_template_result "woot: 1", '{{ foo | map: "whatever" }}', "foo" => [t]
194
- end
195
-
196
- def test_map_on_hashes
197
- assert_template_result "4217", '{{ thing | map: "foo" | map: "bar" }}',
198
- "thing" => { "foo" => [ { "bar" => 42 }, { "bar" => 17 } ] }
199
- end
200
-
201
- def test_legacy_map_on_hashes_with_dynamic_key
202
- template = "{% assign key = 'foo' %}{{ thing | map: key | map: 'bar' }}"
203
- hash = { "foo" => { "bar" => 42 } }
204
- assert_template_result "42", template, "thing" => hash
205
- end
206
-
207
- def test_sort_calls_to_liquid
208
- t = TestThing.new
209
- Liquid::Template.parse('{{ foo | sort: "whatever" }}').render("foo" => [t])
210
- assert t.foo > 0
211
- end
212
-
213
- def test_map_over_proc
214
- drop = TestDrop.new
215
- p = Proc.new{ drop }
216
- templ = '{{ procs | map: "test" }}'
217
- assert_template_result "testfoo", templ, "procs" => [p]
218
- end
219
-
220
- def test_map_works_on_enumerables
221
- assert_template_result "123", '{{ foo | map: "foo" }}', "foo" => TestEnumerable.new
222
- end
223
-
224
- def test_sort_works_on_enumerables
225
- assert_template_result "213", '{{ foo | sort: "bar" | map: "foo" }}', "foo" => TestEnumerable.new
226
- end
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
-
233
- def test_date
234
- assert_equal 'May', @filters.date(Time.parse("2006-05-05 10:00:00"), "%B")
235
- assert_equal 'June', @filters.date(Time.parse("2006-06-05 10:00:00"), "%B")
236
- assert_equal 'July', @filters.date(Time.parse("2006-07-05 10:00:00"), "%B")
237
-
238
- assert_equal 'May', @filters.date("2006-05-05 10:00:00", "%B")
239
- assert_equal 'June', @filters.date("2006-06-05 10:00:00", "%B")
240
- assert_equal 'July', @filters.date("2006-07-05 10:00:00", "%B")
241
-
242
- assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "")
243
- assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "")
244
- assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "")
245
- assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", nil)
246
-
247
- assert_equal '07/05/2006', @filters.date("2006-07-05 10:00:00", "%m/%d/%Y")
248
-
249
- assert_equal "07/16/2004", @filters.date("Fri Jul 16 01:00:00 2004", "%m/%d/%Y")
250
- assert_equal "#{Date.today.year}", @filters.date('now', '%Y')
251
- assert_equal "#{Date.today.year}", @filters.date('today', '%Y')
252
-
253
- assert_equal nil, @filters.date(nil, "%B")
254
-
255
- with_timezone("UTC") do
256
- assert_equal "07/05/2006", @filters.date(1152098955, "%m/%d/%Y")
257
- assert_equal "07/05/2006", @filters.date("1152098955", "%m/%d/%Y")
258
- end
259
- end
260
-
261
- def test_first_last
262
- assert_equal 1, @filters.first([1,2,3])
263
- assert_equal 3, @filters.last([1,2,3])
264
- assert_equal nil, @filters.first([])
265
- assert_equal nil, @filters.last([])
266
- end
267
-
268
- def test_replace
269
- assert_equal '2 2 2 2', @filters.replace('1 1 1 1', '1', 2)
270
- assert_equal '2 1 1 1', @filters.replace_first('1 1 1 1', '1', 2)
271
- assert_template_result '2 1 1 1', "{{ '1 1 1 1' | replace_first: '1', 2 }}"
272
- end
273
-
274
- def test_remove
275
- assert_equal ' ', @filters.remove("a a a a", 'a')
276
- assert_equal 'a a a', @filters.remove_first("a a a a", 'a ')
277
- assert_template_result 'a a a', "{{ 'a a a a' | remove_first: 'a ' }}"
278
- end
279
-
280
- def test_pipes_in_string_arguments
281
- assert_template_result 'foobar', "{{ 'foo|bar' | remove: '|' }}"
282
- end
283
-
284
- def test_strip
285
- assert_template_result 'ab c', "{{ source | strip }}", 'source' => " ab c "
286
- assert_template_result 'ab c', "{{ source | strip }}", 'source' => " \tab c \n \t"
287
- end
288
-
289
- def test_lstrip
290
- assert_template_result 'ab c ', "{{ source | lstrip }}", 'source' => " ab c "
291
- assert_template_result "ab c \n \t", "{{ source | lstrip }}", 'source' => " \tab c \n \t"
292
- end
293
-
294
- def test_rstrip
295
- assert_template_result " ab c", "{{ source | rstrip }}", 'source' => " ab c "
296
- assert_template_result " \tab c", "{{ source | rstrip }}", 'source' => " \tab c \n \t"
297
- end
298
-
299
- def test_strip_newlines
300
- assert_template_result 'abc', "{{ source | strip_newlines }}", 'source' => "a\nb\nc"
301
- assert_template_result 'abc', "{{ source | strip_newlines }}", 'source' => "a\r\nb\nc"
302
- end
303
-
304
- def test_newlines_to_br
305
- assert_template_result "a<br />\nb<br />\nc", "{{ source | newline_to_br }}", 'source' => "a\nb\nc"
306
- end
307
-
308
- def test_plus
309
- assert_template_result "2", "{{ 1 | plus:1 }}"
310
- assert_template_result "2.0", "{{ '1' | plus:'1.0' }}"
311
- end
312
-
313
- def test_minus
314
- assert_template_result "4", "{{ input | minus:operand }}", 'input' => 5, 'operand' => 1
315
- assert_template_result "2.3", "{{ '4.3' | minus:'2' }}"
316
- end
317
-
318
- def test_times
319
- assert_template_result "12", "{{ 3 | times:4 }}"
320
- assert_template_result "0", "{{ 'foo' | times:4 }}"
321
-
322
- assert_template_result "6", "{{ '2.1' | times:3 | replace: '.','-' | plus:0}}"
323
-
324
- assert_template_result "7.25", "{{ 0.0725 | times:100 }}"
325
- end
326
-
327
- def test_divided_by
328
- assert_template_result "4", "{{ 12 | divided_by:3 }}"
329
- assert_template_result "4", "{{ 14 | divided_by:3 }}"
330
-
331
- assert_template_result "5", "{{ 15 | divided_by:3 }}"
332
- assert_equal "Liquid error: divided by 0", Template.parse("{{ 5 | divided_by:0 }}").render
333
-
334
- assert_template_result "0.5", "{{ 2.0 | divided_by:4 }}"
335
- end
336
-
337
- def test_modulo
338
- assert_template_result "1", "{{ 3 | modulo:2 }}"
339
- end
340
-
341
- def test_round
342
- assert_template_result "5", "{{ input | round }}", 'input' => 4.6
343
- assert_template_result "4", "{{ '4.3' | round }}"
344
- assert_template_result "4.56", "{{ input | round: 2 }}", 'input' => 4.5612
345
- end
346
-
347
- def test_ceil
348
- assert_template_result "5", "{{ input | ceil }}", 'input' => 4.6
349
- assert_template_result "5", "{{ '4.3' | ceil }}"
350
- end
351
-
352
- def test_floor
353
- assert_template_result "4", "{{ input | floor }}", 'input' => 4.6
354
- assert_template_result "4", "{{ '4.3' | floor }}"
355
- end
356
-
357
- def test_append
358
- assigns = {'a' => 'bc', 'b' => 'd' }
359
- assert_template_result('bcd',"{{ a | append: 'd'}}",assigns)
360
- assert_template_result('bcd',"{{ a | append: b}}",assigns)
361
- end
362
-
363
- def test_prepend
364
- assigns = {'a' => 'bc', 'b' => 'a' }
365
- assert_template_result('abc',"{{ a | prepend: 'a'}}",assigns)
366
- assert_template_result('abc',"{{ a | prepend: b}}",assigns)
367
- end
368
-
369
- def test_default
370
- assert_equal "foo", @filters.default("foo", "bar")
371
- assert_equal "bar", @filters.default(nil, "bar")
372
- assert_equal "bar", @filters.default("", "bar")
373
- assert_equal "bar", @filters.default(false, "bar")
374
- assert_equal "bar", @filters.default([], "bar")
375
- assert_equal "bar", @filters.default({}, "bar")
376
- end
377
-
378
- def test_cannot_access_private_methods
379
- assert_template_result('a',"{{ 'a' | to_number }}")
380
- end
381
-
382
- def test_date_raises_nothing
383
- assert_template_result('', "{{ '' | date: '%D' }}")
384
- assert_template_result('abc', "{{ 'abc' | date: '%D' }}")
385
- end
386
-
387
- private
388
-
389
- def with_timezone(tz)
390
- old_tz = ENV['TZ']
391
- ENV['TZ'] = tz
392
- yield
393
- ensure
394
- ENV['TZ'] = old_tz
395
- end
396
- end # StandardFiltersTest
@@ -1,16 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BreakTagTest < Minitest::Test
4
- include Liquid
5
-
6
- # tests that no weird errors are raised if break is called outside of a
7
- # block
8
- def test_break_with_no_block
9
- assigns = {'i' => 1}
10
- markup = '{% break %}'
11
- expected = ''
12
-
13
- assert_template_result(expected, markup, assigns)
14
- end
15
-
16
- end
@@ -1,16 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ContinueTagTest < Minitest::Test
4
- include Liquid
5
-
6
- # tests that no weird errors are raised if continue is called outside of a
7
- # block
8
- def test_continue_with_no_block
9
- assigns = {}
10
- markup = '{% continue %}'
11
- expected = ''
12
-
13
- assert_template_result(expected, markup, assigns)
14
- end
15
-
16
- end