Class: SkillBench::Services::JUnitFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/skill_bench/services/junit_formatter.rb

Overview

Formats evaluation results as JUnit XML.

Class Method Summary collapse

Class Method Details

.format(result) ⇒ String

Format result as JUnit XML.

Supports both legacy format (result) and modern DeltaReport format.

Parameters:

  • result (Hash)

    Eval result.

Returns:

  • (String)

    JUnit XML-formatted string.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/skill_bench/services/junit_formatter.rb', line 15

def self.format(result)
  report = result.dig(:response, :report)
  verdict = report.respond_to?(:verdict) ? report.verdict : result[:pass]
  eval_name = CGI.escapeHTML(result[:eval_name].to_s)

  if verdict
    <<~XML
      <?xml version="1.0"?>
      <testsuite name="SkillBench" tests="1" failures="0">
        <testcase name="#{eval_name}" classname="SkillBench"/>
      </testsuite>
    XML
  else
    score = report.respond_to?(:context_total) ? report.context_total : result[:score]
    escaped_score = CGI.escapeHTML(score.to_s)
    <<~XML
      <?xml version="1.0"?>
      <testsuite name="SkillBench" tests="1" failures="1">
        <testcase name="#{eval_name}" classname="SkillBench">
          <failure message="Score: #{escaped_score}">Eval failed</failure>
        </testcase>
      </testsuite>
    XML
  end
end