Update liquid-spec adapters

This commit is contained in:
Ian Ker-Seymer
2026-04-28 10:11:38 -04:00
committed by Ian Ker-Seymer
parent 6d81b1b68c
commit 1954a2655c
7 changed files with 90 additions and 15 deletions
+1 -1
View File
@@ -1 +1 @@
3.4.1 4.0.2
+4 -2
View File
@@ -151,6 +151,8 @@ end
desc('run liquid-spec suite across all adapters') desc('run liquid-spec suite across all adapters')
task :spec do task :spec do
adapters = Dir['./spec/*.rb'].join(',') Dir['./spec/*.rb'].sort.each do |adapter|
sh "bundle exec liquid-spec matrix --adapters=#{adapters} --reference=ruby_liquid" puts "=== Running #{adapter} ==="
sh 'bundle', 'exec', 'liquid-spec', 'run', adapter, '--no-max-failures'
end
end end
+16 -3
View File
@@ -6,14 +6,24 @@
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
require 'liquid' require 'liquid'
require_relative 'support/liquid_spec_adapter_helper'
LiquidSpec.configure do |config| LiquidSpec.configure do |config|
# Run core Liquid specs config.missing_features = [
config.features = [:core] :activesupport,
:lax_parsing,
:shopify_filters,
:shopify_includes,
:shopify_blank,
:shopify_error_handling,
:shopify_error_format,
:shopify_string_access,
]
end end
# Compile a template string into a Liquid::Template # Compile a template string into a Liquid::Template
LiquidSpec.compile do |ctx, source, options| LiquidSpec.compile do |ctx, source, options|
options[:error_mode] ||= :strict
ctx[:template] = Liquid::Template.parse(source, **options) ctx[:template] = Liquid::Template.parse(source, **options)
end end
@@ -28,9 +38,12 @@ LiquidSpec.render do |ctx, assigns, options|
static_environments: assigns, static_environments: assigns,
registers: registers, registers: registers,
rethrow_errors: options[:strict_errors], rethrow_errors: options[:strict_errors],
resource_limits: LiquidSpecAdapterHelper.resource_limits(options),
) )
context.exception_renderer = options[:exception_renderer] if options[:exception_renderer] context.exception_renderer = options[:exception_renderer] if options[:exception_renderer]
ctx[:template].render(context) LiquidSpecAdapterHelper.with_frozen_time do
ctx[:template].render(context)
end
end end
+16 -4
View File
@@ -6,15 +6,24 @@
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
require 'liquid' require 'liquid'
require_relative 'support/liquid_spec_adapter_helper'
LiquidSpec.configure do |config| LiquidSpec.configure do |config|
config.features = [:core, :lax_parsing] config.missing_features = [
:activesupport,
:shopify_filters,
:shopify_includes,
:shopify_blank,
:shopify_error_handling,
:shopify_error_format,
:shopify_string_access,
]
end end
# Compile a template string into a Liquid::Template # Compile a template string into a Liquid::Template
LiquidSpec.compile do |ctx, source, options| LiquidSpec.compile do |ctx, source, options|
# Force lax mode # Default to lax mode while still honoring specs that explicitly set error_mode.
options = options.merge(error_mode: :lax) options = { error_mode: :lax }.merge(options)
ctx[:template] = Liquid::Template.parse(source, **options) ctx[:template] = Liquid::Template.parse(source, **options)
end end
@@ -26,9 +35,12 @@ LiquidSpec.render do |ctx, assigns, options|
static_environments: assigns, static_environments: assigns,
registers: registers, registers: registers,
rethrow_errors: options[:strict_errors], rethrow_errors: options[:strict_errors],
resource_limits: LiquidSpecAdapterHelper.resource_limits(options),
) )
context.exception_renderer = options[:exception_renderer] if options[:exception_renderer] context.exception_renderer = options[:exception_renderer] if options[:exception_renderer]
ctx[:template].render(context) LiquidSpecAdapterHelper.with_frozen_time do
ctx[:template].render(context)
end
end end
+15 -3
View File
@@ -7,14 +7,23 @@
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
require 'active_support/all' require 'active_support/all'
require 'liquid' require 'liquid'
require_relative 'support/liquid_spec_adapter_helper'
LiquidSpec.configure do |config| LiquidSpec.configure do |config|
# Run core Liquid specs plus ActiveSupport SafeBuffer tests config.missing_features = [
config.features = [:core, :activesupport] :lax_parsing,
:shopify_filters,
:shopify_includes,
:shopify_blank,
:shopify_error_handling,
:shopify_error_format,
:shopify_string_access,
]
end end
# Compile a template string into a Liquid::Template # Compile a template string into a Liquid::Template
LiquidSpec.compile do |ctx, source, options| LiquidSpec.compile do |ctx, source, options|
options[:error_mode] ||= :strict
ctx[:template] = Liquid::Template.parse(source, **options) ctx[:template] = Liquid::Template.parse(source, **options)
end end
@@ -29,9 +38,12 @@ LiquidSpec.render do |ctx, assigns, options|
static_environments: assigns, static_environments: assigns,
registers: registers, registers: registers,
rethrow_errors: options[:strict_errors], rethrow_errors: options[:strict_errors],
resource_limits: LiquidSpecAdapterHelper.resource_limits(options),
) )
context.exception_renderer = options[:exception_renderer] if options[:exception_renderer] context.exception_renderer = options[:exception_renderer] if options[:exception_renderer]
ctx[:template].render(context) LiquidSpecAdapterHelper.with_frozen_time do
ctx[:template].render(context)
end
end end
+14 -2
View File
@@ -13,9 +13,18 @@ end
require 'active_support/all' require 'active_support/all'
require 'liquid' require 'liquid'
require_relative 'support/liquid_spec_adapter_helper'
LiquidSpec.configure do |config| LiquidSpec.configure do |config|
config.features = [:core, :activesupport] config.missing_features = [
:lax_parsing,
:shopify_filters,
:shopify_includes,
:shopify_blank,
:shopify_error_handling,
:shopify_error_format,
:shopify_string_access,
]
end end
# Compile a template string into a Liquid::Template # Compile a template string into a Liquid::Template
@@ -33,9 +42,12 @@ LiquidSpec.render do |ctx, assigns, options|
static_environments: assigns, static_environments: assigns,
registers: registers, registers: registers,
rethrow_errors: options[:strict_errors], rethrow_errors: options[:strict_errors],
resource_limits: LiquidSpecAdapterHelper.resource_limits(options),
) )
context.exception_renderer = options[:exception_renderer] if options[:exception_renderer] context.exception_renderer = options[:exception_renderer] if options[:exception_renderer]
ctx[:template].render(context) LiquidSpecAdapterHelper.with_frozen_time do
ctx[:template].render(context)
end
end end
@@ -0,0 +1,24 @@
# frozen_string_literal: true
module LiquidSpecAdapterHelper
extend self
def resource_limits(render_options)
return unless render_options[:resource_limits]
Liquid::ResourceLimits.new({}).tap do |limits|
render_options[:resource_limits].each do |key, value|
limits.public_send(:"#{key}=", value)
end
end
end
def with_frozen_time(&block)
original_tz = ENV['TZ']
ENV['TZ'] = 'UTC'
Liquid::Spec::TimeFreezer.freeze(Liquid::Spec::AdapterRunner::TEST_TIME, &block)
ensure
ENV['TZ'] = original_tz
end
end