Sha256: 5274b47c4b8e653622c171f9c5cd5c01101f6f04508f87dde16f30532a327299

Contents?: true

Size: 1.28 KB

Versions: 11

Compression:

Stored size: 1.28 KB

Contents

require 'xcknife/json_stream_parser_helper'
require 'set'

module XCKnife
  class EventsAnalyzer
    include JsonStreamParserHelper
    attr_reader :target_class_map, :total_tests

    def self.for(events, relevant_partitions)
      return NullEventsAnalyzer.new if events.nil?
      new(events, relevant_partitions)
    end

    def initialize(events, relevant_partitions)
      @total_tests = 0
      @relevant_partitions = relevant_partitions
      @target_class_map = analyze_events(events)
    end

    def has_test_target?(target)
      target_class_map.has_key?(target)
    end

    def has_test_class?(target, clazz)
      has_test_target?(target) and target_class_map[target].include?(clazz)
    end

    private
    def analyze_events(events)
      ret = Hash.new { |h, key| h[key] = Set.new }
      each_test_event(events) do |target_name, result|
        next unless @relevant_partitions.include?(target_name)
        @total_tests += 1
        ret[target_name] << result.className
      end
      ret
    end
  end

  # Null object for EventsAnalyzer
  # @ref https://en.wikipedia.org/wiki/Null_Object_pattern
  class NullEventsAnalyzer
    def has_test_target?(target)
      true
    end

    def has_test_class?(target, clazz)
      true
    end

    def total_tests
      0
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
xcknife-0.11.1 lib/xcknife/events_analyzer.rb
xcknife-0.11.0 lib/xcknife/events_analyzer.rb
xcknife-0.10.0 lib/xcknife/events_analyzer.rb
xcknife-0.6.6 lib/xcknife/events_analyzer.rb
xcknife-0.6.5 lib/xcknife/events_analyzer.rb
xcknife-0.6.4 lib/xcknife/events_analyzer.rb
xcknife-0.6.3 lib/xcknife/events_analyzer.rb
xcknife-0.6.2 lib/xcknife/events_analyzer.rb
xcknife-0.6.1 lib/xcknife/events_analyzer.rb
xcknife-0.6.0 lib/xcknife/events_analyzer.rb
xcknife-0.5.0 lib/xcknife/events_analyzer.rb