Sha256: 5a5cd5b4417c2b3573a2964bf683ed80678ffc13bd8af3b8404b33392009fc67

Contents?: true

Size: 976 Bytes

Versions: 41

Compression:

Stored size: 976 Bytes

Contents

# frozen_string_literal: true

require 'digest/sha2'

module Cucumber
  module Filters
    # Batches up all test cases, randomizes them, and then sends them on
    class Randomizer
      def initialize(seed, receiver = nil)
        @receiver = receiver
        @test_cases = []
        @seed = seed
      end

      def test_case(test_case)
        @test_cases << test_case
        self
      end

      def done
        shuffled_test_cases.each do |test_case|
          test_case.describe_to(@receiver)
        end
        @receiver.done
        self
      end

      def with_receiver(receiver)
        self.class.new(@seed, receiver)
      end

      private

      def shuffled_test_cases
        digester = Digest::SHA2.new(256)
        @test_cases.map.with_index
                   .sort_by { |_, index| digester.digest((@seed + index).to_s) }
                   .map { |test_case, _| test_case }
      end

      attr_reader :seed
      private :seed
    end
  end
end

Version data entries

41 entries across 41 versions & 4 rubygems

Version Path
cucumber-9.2.1 lib/cucumber/filters/randomizer.rb
cucumber-9.2.0 lib/cucumber/filters/randomizer.rb
cucumber-9.1.2 lib/cucumber/filters/randomizer.rb
cucumber-9.1.1 lib/cucumber/filters/randomizer.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/cucumber-9.1.0/lib/cucumber/filters/randomizer.rb
cucumber-9.1.0 lib/cucumber/filters/randomizer.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/cucumber-9.0.2/lib/cucumber/filters/randomizer.rb
cucumber-9.0.2 lib/cucumber/filters/randomizer.rb
cucumber-9.0.1 lib/cucumber/filters/randomizer.rb
cucumber-9.0.0 lib/cucumber/filters/randomizer.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/filters/randomizer.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/filters/randomizer.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/filters/randomizer.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/filters/randomizer.rb
cucumber-8.0.0 lib/cucumber/filters/randomizer.rb
cucumber-8.0.0.rc.1 lib/cucumber/filters/randomizer.rb
phillipug-foodie-0.1.0 .vendor/ruby/3.0.0/gems/cucumber-7.1.0/lib/cucumber/filters/randomizer.rb
cucumber-7.1.0 lib/cucumber/filters/randomizer.rb
cucumber-7.0.0 lib/cucumber/filters/randomizer.rb
cucumber-6.1.0 lib/cucumber/filters/randomizer.rb