Module: RubyLLM::Contract::RSpec::PassEvalHelpers

Defined in:
lib/ruby_llm/contract/rspec/pass_eval.rb

Overview

Helper methods for the pass_eval matcher to keep the block short.

Instance Method Summary collapse

Instance Method Details

#format_error_message(eval_name, error) ⇒ Object



14
15
16
# File 'lib/ruby_llm/contract/rspec/pass_eval.rb', line 14

def format_error_message(eval_name, error)
  "expected #{eval_name} eval to pass, but it raised an error:\n  #{error.class}: #{error.message}"
end

#format_failure_message(eval_name, error, report, minimum_score, maximum_cost) ⇒ Object



8
9
10
11
12
# File 'lib/ruby_llm/contract/rspec/pass_eval.rb', line 8

def format_failure_message(eval_name, error, report, minimum_score, maximum_cost)
  return format_error_message(eval_name, error) if error

  format_report_message(eval_name, report, minimum_score, maximum_cost)
end

#format_report_message(eval_name, report, minimum_score, maximum_cost) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ruby_llm/contract/rspec/pass_eval.rb', line 18

def format_report_message(eval_name, report, minimum_score, maximum_cost)
  lines = build_header(eval_name, report, minimum_score, maximum_cost)
  lines << ""

  report.results.each do |result|
    cost_str = result.cost ? " $#{format("%.4f", result.cost)}" : ""
    lines << "  #{result.label}  #{result.name} (score: #{result.score})#{cost_str}"
    lines << "        #{result.details}" if result.details && result.failed?
  end

  lines.join("\n")
end