diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index 9400e38..4867922 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -154,6 +154,7 @@ module Liquid private def render_node(context, output, node) + node.disabled?(context, output) && return if node.is_a?(Tag) node.render_to_output_buffer(context, output) rescue UndefinedVariable, UndefinedDropMethod, UndefinedFilter => e context.handle_error(e, node.line_number) diff --git a/lib/liquid/tags/include.rb b/lib/liquid/tags/include.rb index ba0e255..bbcfb1c 100644 --- a/lib/liquid/tags/include.rb +++ b/lib/liquid/tags/include.rb @@ -45,7 +45,6 @@ module Liquid end def render_to_output_buffer(context, output) - disabled?(context, output) && return template_name = context.evaluate(@template_name_expr) raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name diff --git a/test/integration/registers/disabled_tags_test.rb b/test/integration/registers/disabled_tags_test.rb new file mode 100644 index 0000000..1f26f6c --- /dev/null +++ b/test/integration/registers/disabled_tags_test.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'test_helper' + +class DisabledTagsTest < Minitest::Test + include Liquid + + class DisableRaw < Block + def render(context) + disable_tags(context, ["raw"]) do + @body.render(context) + end + end + end + + class DisableRawEcho < Block + def render(context) + disable_tags(context, ["raw", "echo"]) do + @body.render(context) + end + end + end + + def test_disables_raw + with_custom_tag('disable', DisableRaw) do + assert_template_result 'raw usage has been disabled in this context.foo', '{% disable %}{% raw %}Foobar{% endraw %}{% echo "foo" %}{% enddisable %}' + end + end + + def test_disables_echo_and_raw + with_custom_tag('disable', DisableRawEcho) do + assert_template_result 'raw usage has been disabled in this context.echo usage has been disabled in this context.', '{% disable %}{% raw %}Foobar{% endraw %}{% echo "foo" %}{% enddisable %}' + end + end +end diff --git a/test/unit/registers/disabled_tags_test.rb b/test/unit/registers/disabled_tags_unit_test.rb similarity index 95% rename from test/unit/registers/disabled_tags_test.rb rename to test/unit/registers/disabled_tags_unit_test.rb index bff4bc3..90ac016 100644 --- a/test/unit/registers/disabled_tags_test.rb +++ b/test/unit/registers/disabled_tags_unit_test.rb @@ -2,7 +2,7 @@ require 'test_helper' -class DisabledTagsTest < Minitest::Test +class DisabledTagsUnitTest < Minitest::Test include Liquid def test_disables_tag_specified