class Trainer::XCResult::ActionTestMetadata

Attributes

activity_summaries_count[RW]
duration[RW]
failure_summaries_count[RW]
performance_metrics_count[RW]
test_status[RW]

Public Class Methods

new(data, parent) click to toggle source
# File trainer/lib/trainer/xcresult.rb, line 162
def initialize(data, parent)
  self.test_status = fetch_value(data, "testStatus")
  self.duration = fetch_value(data, "duration").to_f
  self.performance_metrics_count = fetch_value(data, "performanceMetricsCount")
  self.failure_summaries_count = fetch_value(data, "failureSummariesCount")
  self.activity_summaries_count = fetch_value(data, "activitySummariesCount")
  super(data, parent)
end

Public Instance Methods

all_subtests() click to toggle source
# File trainer/lib/trainer/xcresult.rb, line 171
def all_subtests
  return [self]
end
find_failure(failures) click to toggle source
# File trainer/lib/trainer/xcresult.rb, line 175
def find_failure(failures)
  sanitizer = proc { |name| name.gsub(/\W/, "_") }
  sanitized_identifier = sanitizer.call(self.identifier)
  if self.test_status == "Failure"
    # Tries to match failure on test case name
    # Example TestFailureIssueSummary:
    #   producingTarget: "TestThisDude"
    #   test_case_name: "TestThisDude.testFailureJosh2()" (when Swift)
    #     or "-[TestThisDudeTests testFailureJosh2]" (when Objective-C)
    # Example ActionTestMetadata
    #   identifier: "TestThisDude/testFailureJosh2()" (when Swift)
    #     or identifier: "TestThisDude/testFailureJosh2" (when Objective-C)

    found_failure = failures.find do |failure|
      # Sanitize both test case name and identifier in a consistent fashion, then replace all non-word
      # chars with underscore, and compare them
      sanitized_test_case_name = sanitizer.call(failure.test_case_name)
      sanitized_identifier == sanitized_test_case_name
    end
    return found_failure
  else
    return nil
  end
end