Sha256: ebca6dde9b213d0608ee440c0fd6314fb4ead59f841ac94ed50af77bb1779bc8

Contents?: true

Size: 1.07 KB

Versions: 17

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true
module CI
  module Queue
    class Bisect
      def initialize(path, config)
        @tests = ::File.readlines(path).map(&:strip).reject(&:empty?).take_while { |t| t != config.failing_test }
        @config = config
      end

      def size
        @tests.size
      end

      def populate(all_tests, random: nil)
        @all_tests = all_tests
      end

      def to_a
        @tests + [config.failing_test]
      end

      def suspects_left
        @tests.size
      end

      def failing_test
        Static.new([config.failing_test], config).populate(@all_tests)
      end

      def candidates
        Static.new(first_half + [config.failing_test], config).populate(@all_tests)
      end

      def failed!
        @tests = first_half
      end

      def succeeded!
        @tests = second_half
      end

      private

      attr_reader :config

      def slices
        @tests.each_slice((@tests.size / 2.0).ceil).to_a
      end

      def first_half
        slices.first
      end

      def second_half
        slices.last
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ci-queue-0.21.1 lib/ci/queue/bisect.rb
ci-queue-0.21.0 lib/ci/queue/bisect.rb
ci-queue-0.20.9 lib/ci/queue/bisect.rb
ci-queue-0.20.8 lib/ci/queue/bisect.rb
ci-queue-0.20.7 lib/ci/queue/bisect.rb
ci-queue-0.20.6 lib/ci/queue/bisect.rb
ci-queue-0.20.5 lib/ci/queue/bisect.rb
ci-queue-0.20.4 lib/ci/queue/bisect.rb
ci-queue-0.20.3 lib/ci/queue/bisect.rb
ci-queue-0.20.2 lib/ci/queue/bisect.rb
ci-queue-0.20.1 lib/ci/queue/bisect.rb
ci-queue-0.20.0 lib/ci/queue/bisect.rb
ci-queue-0.19.0 lib/ci/queue/bisect.rb
ci-queue-0.18.0 lib/ci/queue/bisect.rb
ci-queue-0.17.2 lib/ci/queue/bisect.rb
ci-queue-0.17.1 lib/ci/queue/bisect.rb
ci-queue-0.17.0 lib/ci/queue/bisect.rb