From 10d8ce611b3f6c64195894479aa39656088575b4 Mon Sep 17 00:00:00 2001 From: Marco Roth Date: Thu, 19 Feb 2026 03:49:55 +0100 Subject: [PATCH] Engine: Ensure `assert_evaluated_snapshot` produces valid Ruby in tests --- test/snapshot_utils.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/snapshot_utils.rb b/test/snapshot_utils.rb index 58469f842..2989e29eb 100644 --- a/test/snapshot_utils.rb +++ b/test/snapshot_utils.rb @@ -68,11 +68,25 @@ def assert_compiled_snapshot(source, options = {}, **kwargs) def assert_evaluated_snapshot(source, locals = {}, options = {}, **kwargs) require_relative "../lib/herb/engine" + require "prism" enforce_erubi_equality = kwargs.delete(:enforce_erubi_equality) || false engine_options = options.merge(kwargs) engine = Herb::Engine.new(source, engine_options) + + prism_result = Prism.parse(engine.src) + syntax_errors = prism_result.errors.reject { |e| e.type == :invalid_yield } + + assert syntax_errors.empty?, <<~MESSAGE + Compiled output is not valid Ruby: + + #{syntax_errors.map { |e| " - #{e.message} (line #{e.location.start_line})" }.join("\n")} + + Compiled source: + #{engine.src} + MESSAGE + binding_context = Object.new locals.each do |key, value|