Module: RubyLLM::Contract::MinitestHelpers
- Includes:
- Concerns::StubHelpers
- Defined in:
- lib/ruby_llm/contract/minitest.rb
Instance Method Summary collapse
- #assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) ⇒ Object
- #assert_satisfies_contract(result, msg = nil) ⇒ Object
- #refute_satisfies_contract(result, msg = nil) ⇒ Object
-
#setup ⇒ Object
Snapshot adapter before each test so teardown can restore it.
-
#teardown ⇒ Object
Auto-cleanup: clear overrides AND restore original adapter.
Methods included from Concerns::StubHelpers
#stub_all_steps, #stub_step, #stub_steps
Instance Method Details
#assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ruby_llm/contract/minitest.rb', line 33 def assert_eval_passes(step, eval_name, minimum_score: nil, maximum_cost: nil, context: {}, msg: nil) report = step.run_eval(eval_name, context: context) if minimum_score assert report.score >= minimum_score, msg || "Expected #{eval_name} eval score >= #{minimum_score}, got #{report.score.round(2)} (#{report.pass_rate})" else assert report.passed?, msg || "Expected #{eval_name} eval to pass, got #{report.score.round(2)} (#{report.pass_rate})" end if maximum_cost assert report.total_cost <= maximum_cost, msg || "Expected #{eval_name} eval cost <= $#{format("%.4f", maximum_cost)}, got $#{format("%.4f", report.total_cost)}" end report end |
#assert_satisfies_contract(result, msg = nil) ⇒ Object
24 25 26 27 |
# File 'lib/ruby_llm/contract/minitest.rb', line 24 def assert_satisfies_contract(result, msg = nil) assert result.ok?, msg || "Expected step result to satisfy contract, " \ "but got status: #{result.status}. Errors: #{result.validation_errors.join(", ")}" end |
#refute_satisfies_contract(result, msg = nil) ⇒ Object
29 30 31 |
# File 'lib/ruby_llm/contract/minitest.rb', line 29 def refute_satisfies_contract(result, msg = nil) refute result.ok?, msg || "Expected step result NOT to satisfy contract, but it passed" end |
#setup ⇒ Object
Snapshot adapter before each test so teardown can restore it.
11 12 13 14 |
# File 'lib/ruby_llm/contract/minitest.rb', line 11 def setup super if defined?(super) @_contract_original_adapter = RubyLLM::Contract.configuration.default_adapter end |
#teardown ⇒ Object
Auto-cleanup: clear overrides AND restore original adapter. Prevents both non-block stub_step and stub_all_steps from leaking.
18 19 20 21 22 |
# File 'lib/ruby_llm/contract/minitest.rb', line 18 def teardown RubyLLM::Contract.step_adapter_overrides.clear RubyLLM::Contract.configuration.default_adapter = @_contract_original_adapter super if defined?(super) end |