Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass strict_variables and strict filters to render context #1670

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/liquid/context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ def new_isolated_subcontext
subcontext.errors = errors
subcontext.warnings = warnings
subcontext.disabled_tags = @disabled_tags
subcontext.strict_filters = strict_filters
subcontext.strict_variables = strict_variables
end
end

Expand Down
14 changes: 14 additions & 0 deletions test/integration/context_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,20 @@ def my_filter(*)
assert_equal('my filter result', template.render(subcontext))
end

def test_new_isolated_subcontext_inherits_strict_filters
super_context = Context.new
super_context.strict_filters = true
subcontext = super_context.new_isolated_subcontext
assert_equal(true, subcontext.strict_filters)
end

def test_new_isolated_subcontext_inherits_strict_variables
super_context = Context.new
super_context.strict_variables = true
subcontext = super_context.new_isolated_subcontext
assert_equal(true, subcontext.strict_variables)
end

def test_disables_tag_specified
context = Context.new
context.with_disabled_tags(%w(foo bar)) do
Expand Down
22 changes: 22 additions & 0 deletions test/integration/tags/render_tag_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -285,4 +285,26 @@ def test_render_tag_renders_error_with_template_name_from_template_factory
render_errors: true,
)
end

def test_render_tag_raises_strict_variables_errors
assert_raises(Liquid::UndefinedVariable) do
assert_template_result("123",
'{% render "partial" %}',
partials: {
'partial' => "{{ undefined_variable }}",
},
strict_variables: true)
end
end

def test_render_tag_raises_strict_filters_errors
assert_raises(Liquid::UndefinedFilter) do
assert_template_result("123",
'{% render "partial" %}',
partials: {
'partial' => "{{ '123' | undefined_filter }}",
},
strict_filters: true)
end
end
end
4 changes: 2 additions & 2 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ module Assertions

def assert_template_result(
expected, template, assigns = {},
message: nil, partials: nil, error_mode: nil, render_errors: false,
message: nil, partials: nil, error_mode: nil, render_errors: false, strict_variables: nil, strict_filters: nil,
template_factory: nil
)
template = Liquid::Template.parse(template, line_numbers: true, error_mode: error_mode&.to_sym)
file_system = StubFileSystem.new(partials || {})
registers = Liquid::Registers.new(file_system: file_system, template_factory: template_factory)
context = Liquid::Context.build(static_environments: assigns, rethrow_errors: !render_errors, registers: registers)
output = template.render(context)
output = template.render(context, strict_variables: strict_variables, strict_filters: strict_filters)
assert_equal(expected, output, message)
end

Expand Down