Skip to content

Commit

Permalink
include error mode to partial cache key
Browse files Browse the repository at this point in the history
  • Loading branch information
ggmichaelgo committed Jun 23, 2023
1 parent cca24a2 commit e195f32
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
5 changes: 3 additions & 2 deletions lib/liquid/partial_cache.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ module Liquid
class PartialCache
def self.load(template_name, context:, parse_context:)
cached_partials = context.registers[:cached_partials]
cached = cached_partials[template_name]
cache_key = "#{template_name}:#{parse_context.error_mode}"
cached = cached_partials[cache_key]
return cached if cached

file_system = context.registers[:file_system]
Expand All @@ -24,7 +25,7 @@ def self.load(template_name, context:, parse_context:)

partial.name ||= template_name

cached_partials[template_name] = partial
cached_partials[cache_key] = partial
ensure
parse_context.partial = false
end
Expand Down
23 changes: 23 additions & 0 deletions test/unit/partial_cache_unit_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -174,4 +174,27 @@ def test_uses_template_name_from_template_factory

assert_equal('some/path/my_partial', partial.name)
end

def test_includes_error_mode_into_template_cache
template_factory = StubTemplateFactory.new
context = Liquid::Context.build(
registers: {
file_system: StubFileSystem.new('my_partial' => 'my partial body'),
template_factory: template_factory,
},
)

[:lax, :warn, :strict].each do |error_mode|
Liquid::PartialCache.load(
'my_partial',
context: context,
parse_context: Liquid::ParseContext.new(error_mode: error_mode),
)
end

assert_equal(
["my_partial:lax", "my_partial:warn", "my_partial:strict"],
context.registers[:cached_partials].keys,
)
end
end

0 comments on commit e195f32

Please sign in to comment.