Skip to content

Commit 479c27e

Browse files
iHiDclaude
andauthored
Guard against Array status in test results (#8637)
Tooling runners can return `status` as an Array (e.g., `["pass"]`) inside individual test result objects. Use `Array().first` to safely unwrap, matching the existing pattern for the `version` field. Closes #8634 Closes #8635 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f500887 commit 479c27e

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

app/models/submission/test_run.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class TestResult
7474
def to_h
7575
{
7676
name: test[:name].to_s,
77-
status: test[:status].try(&:to_sym),
77+
status: Array(test[:status]).first.try(&:to_sym),
7878
test_code: test[:test_code],
7979
message: test[:message],
8080
message_html: Ansi::RenderHTML.(test[:message]),

test/models/submission/test_run_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,12 @@ class Submission::TestRunTest < ActiveSupport::TestCase
235235
assert_equal 3, tr.version
236236
end
237237

238+
test "handles test result status as array" do
239+
tests = [{ 'name' => 'test1', 'status' => ['pass'] }]
240+
tr = create(:submission_test_run, raw_results: { version: 2, status: 'pass', tests: tests })
241+
assert_equal :pass, tr.test_results.first.to_h[:status]
242+
end
243+
238244
test "truncate message" do
239245
message = 'a' * 66_000
240246
test_run = create(:submission_test_run, raw_results: { message: })

0 commit comments

Comments
 (0)