
This test still checked for a \r\n, which is why we modified the RegEx. Further, during testing of this change, I noticed that the line number 50 was outdated and only valid for JUnit 4.11. Since we updated to 4.13 recently, we need to find another mechanism to check for the correct line.
24 lines
1.0 KiB
Ruby
24 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class JunitAdapter < TestingFrameworkAdapter
|
|
COUNT_REGEXP = /Tests run: (\d+)/
|
|
FAILURES_REGEXP = /Failures: (\d+)/
|
|
SUCCESS_REGEXP = /OK \((\d+) tests?\)\s*(?:\x1B\]0;|exit)?\s*\z/
|
|
ASSERTION_ERROR_REGEXP = /java\.lang\.AssertionError:?\s(.*?)\tat org\.junit|org\.junit\.ComparisonFailure:\s(.*?)\tat org\.junit|\)\n(.*?)\tat org\.junit\.internal\.ComparisonCriteria\.arrayEquals\(ComparisonCriteria\.java:\d*\).*(?=\n\tat org\.junit\.internal)/m
|
|
|
|
def self.framework_name
|
|
'JUnit 4'
|
|
end
|
|
|
|
def parse_output(output)
|
|
if SUCCESS_REGEXP.match(output[:stdout])
|
|
{count: Regexp.last_match(1).to_i, passed: Regexp.last_match(1).to_i}
|
|
else
|
|
count = output[:stdout].scan(COUNT_REGEXP).try(:last).try(:first).try(:to_i) || 0
|
|
failed = output[:stdout].scan(FAILURES_REGEXP).try(:last).try(:first).try(:to_i) || 0
|
|
error_matches = output[:stdout].scan(ASSERTION_ERROR_REGEXP) || []
|
|
{count:, failed:, error_messages: error_matches.flatten.compact_blank}
|
|
end
|
|
end
|
|
end
|