Sha256: c55a8a9880c7bcf6d725143a59875f32c0ef13d1044b703fe19759d9da2943ea

Contents?: true

Size: 1.41 KB

Versions: 35

Compression:

Stored size: 1.41 KB

Contents

module Knapsack
  module Distributors
    class BaseDistributor
      attr_reader :report, :node_tests, :test_file_pattern

      def initialize(args={})
        @report = args[:report] || raise('Missing report')
        @test_file_pattern = args[:test_file_pattern] || raise('Missing test_file_pattern')
        @ci_node_total = args[:ci_node_total] || raise('Missing ci_node_total')
        @ci_node_index = args[:ci_node_index] || raise('Missing ci_node_index')

        if ci_node_index >= ci_node_total
          raise("Node indexes are 0-based. Can't be higher or equal to the total number of nodes.")
        end
      end

      def ci_node_total
        @ci_node_total.to_i
      end

      def ci_node_index
        @ci_node_index.to_i
      end

      def tests_for_current_node
        tests_for_node(ci_node_index)
      end

      def tests_for_node(node_index)
        assign_test_files_to_node
        post_tests_for_node(node_index)
      end

      def assign_test_files_to_node
        default_node_tests
        post_assign_test_files_to_node
      end

      def all_tests
        @all_tests ||= Dir.glob(test_file_pattern).uniq.sort
      end

      protected

      def post_tests_for_node(node_index)
        raise NotImplementedError
      end

      def post_assign_test_files_to_node
        raise NotImplementedError
      end

      def default_node_tests
        raise NotImplementedError
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
knapsack-4.0.0 lib/knapsack/distributors/base_distributor.rb
knapsack-3.1.0 lib/knapsack/distributors/base_distributor.rb
knapsack-3.0.0 lib/knapsack/distributors/base_distributor.rb
knapsack-2.0.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.22.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.21.1 lib/knapsack/distributors/base_distributor.rb
knapsack-1.21.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.20.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.19.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.18.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.17.2 lib/knapsack/distributors/base_distributor.rb
knapsack-1.17.1 lib/knapsack/distributors/base_distributor.rb
knapsack-1.17.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.16.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.15.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.14.1 lib/knapsack/distributors/base_distributor.rb
knapsack-1.14.0 lib/knapsack/distributors/base_distributor.rb
knapsack-1.13.3 lib/knapsack/distributors/base_distributor.rb
knapsack-1.13.2 lib/knapsack/distributors/base_distributor.rb
knapsack-1.13.1 lib/knapsack/distributors/base_distributor.rb