knapsack_pro 3.4.0 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +16 -0
 - data/lib/knapsack_pro/adapters/rspec_adapter.rb +12 -7
 - data/lib/knapsack_pro/runners/queue/rspec_runner.rb +35 -8
 - data/lib/knapsack_pro/runners/rspec_runner.rb +2 -0
 - data/lib/knapsack_pro/version.rb +1 -1
 - data/spec/knapsack_pro/adapters/rspec_adapter_spec.rb +52 -0
 - data/spec/knapsack_pro/runners/queue/rspec_runner_spec.rb +48 -7
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2b7ff9f0b6a3c331eb6c09ea0e04678152db2bae4248e47181bcffe6c88ee194
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4ae766dc15f410d4c82baf223c5ca9abfce4a84c031a37693649e1b58e98b13a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 63ee85c13851d6d87b8d73c189eae9b477ccfb231b9119e1efbc1921142a31b7c82b85a425223cf8f60927b2de8a0b58e72ae77395844f78b6bc2711b0cfe13d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1b782f2383e2b583cb718e67b2a65feb0ee568378d09411aae80ac55a51e3fe243017ce179c6f3c6199e9fe7bf683dec0dd72465fa41a1f1b250bf50d231371d
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Change Log
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ### 3.4.2
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Fix: Load `rspec/core` in Regular Mode when using RSpec split by test examples feature
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                https://github.com/KnapsackPro/knapsack_pro-ruby/pull/181
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.4.1...v3.4.2
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### 3.4.1
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            * Improve the RSpec Queue Mode runner log output (add seed)
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              https://github.com/KnapsackPro/knapsack_pro-ruby/pull/178
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.4.0...v3.4.1
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       3 
19 
     | 
    
         
             
            ### 3.4.0
         
     | 
| 
       4 
20 
     | 
    
         | 
| 
       5 
21 
     | 
    
         
             
            * Update documentation and code because the encryption feature does not work with the RSpec split by examples feature
         
     | 
| 
         @@ -12,16 +12,15 @@ module KnapsackPro 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                  def self.has_tag_option?(cli_args)
         
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
       16 
     | 
    
         
            -
                    # -t mytag
         
     | 
| 
       17 
     | 
    
         
            -
                    # -tmytag
         
     | 
| 
       18 
     | 
    
         
            -
                    # --tag mytag
         
     | 
| 
       19 
     | 
    
         
            -
                    # --tag=mytag
         
     | 
| 
       20 
     | 
    
         
            -
                    cli_args.any? { |arg| arg.start_with?('-t') || arg.start_with?('--tag') }
         
     | 
| 
      
 15 
     | 
    
         
            +
                    !!parsed_options(cli_args)&.[](:inclusion_filter)
         
     | 
| 
       21 
16 
     | 
    
         
             
                  end
         
     | 
| 
       22 
17 
     | 
    
         | 
| 
       23 
18 
     | 
    
         
             
                  def self.has_format_option?(cli_args)
         
     | 
| 
       24 
     | 
    
         
            -
                    cli_args 
     | 
| 
      
 19 
     | 
    
         
            +
                    !!parsed_options(cli_args)&.[](:formatters)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  def self.order_option(cli_args)
         
     | 
| 
      
 23 
     | 
    
         
            +
                    parsed_options(cli_args)&.[](:order)
         
     | 
| 
       25 
24 
     | 
    
         
             
                  end
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
26 
     | 
    
         
             
                  def self.test_path(example)
         
     | 
| 
         @@ -107,6 +106,12 @@ module KnapsackPro 
     | 
|
| 
       107 
106 
     | 
    
         
             
                  def self.rspec_configuration
         
     | 
| 
       108 
107 
     | 
    
         
             
                    ::RSpec.configuration
         
     | 
| 
       109 
108 
     | 
    
         
             
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                  def self.parsed_options(cli_args)
         
     | 
| 
      
 111 
     | 
    
         
            +
                    ::RSpec::Core::Parser.parse(cli_args)
         
     | 
| 
      
 112 
     | 
    
         
            +
                  rescue SystemExit
         
     | 
| 
      
 113 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
       110 
115 
     | 
    
         
             
                end
         
     | 
| 
       111 
116 
     | 
    
         | 
| 
       112 
117 
     | 
    
         
             
                # This is added to provide backwards compatibility
         
     | 
| 
         @@ -2,6 +2,8 @@ module KnapsackPro 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module Runners
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Queue
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class RSpecRunner < BaseRunner
         
     | 
| 
      
 5 
     | 
    
         
            +
                    @@used_seed = nil
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       5 
7 
     | 
    
         
             
                    def self.run(args)
         
     | 
| 
       6 
8 
     | 
    
         
             
                      require 'rspec/core'
         
     | 
| 
       7 
9 
     | 
    
         
             
                      require_relative '../../formatters/rspec_queue_summary_formatter'
         
     | 
| 
         @@ -11,7 +13,6 @@ module KnapsackPro 
     | 
|
| 
       11 
13 
     | 
    
         
             
                      ENV['KNAPSACK_PRO_QUEUE_RECORDING_ENABLED'] = 'true'
         
     | 
| 
       12 
14 
     | 
    
         
             
                      ENV['KNAPSACK_PRO_QUEUE_ID'] = KnapsackPro::Config::EnvGenerator.set_queue_id
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                      adapter_class = KnapsackPro::Adapters::RSpecAdapter
         
     | 
| 
       15 
16 
     | 
    
         
             
                      KnapsackPro::Config::Env.set_test_runner_adapter(adapter_class)
         
     | 
| 
       16 
17 
     | 
    
         
             
                      runner = new(adapter_class)
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
         @@ -61,6 +62,8 @@ module KnapsackPro 
     | 
|
| 
       61 
62 
     | 
    
         
             
                          KnapsackPro::Formatters::RSpecQueueSummaryFormatter.print_summary
         
     | 
| 
       62 
63 
     | 
    
         
             
                          KnapsackPro::Formatters::RSpecQueueProfileFormatterExtension.print_summary
         
     | 
| 
       63 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
                          args += ['--seed', @@used_seed] if @@used_seed
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       64 
67 
     | 
    
         
             
                          log_rspec_command(args, all_test_file_paths, :end_of_queue)
         
     | 
| 
       65 
68 
     | 
    
         
             
                        end
         
     | 
| 
       66 
69 
     | 
    
         | 
| 
         @@ -82,12 +85,15 @@ module KnapsackPro 
     | 
|
| 
       82 
85 
     | 
    
         
             
                        all_test_file_paths += test_file_paths
         
     | 
| 
       83 
86 
     | 
    
         
             
                        cli_args = args + test_file_paths
         
     | 
| 
       84 
87 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
                        log_rspec_command(args, test_file_paths, :subset_queue)
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
88 
     | 
    
         
             
                        options = ::RSpec::Core::ConfigurationOptions.new(cli_args)
         
     | 
| 
       88 
     | 
    
         
            -
                         
     | 
| 
      
 89 
     | 
    
         
            +
                        rspec_runner = ::RSpec::Core::Runner.new(options)
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                        exit_code = rspec_runner.run($stderr, $stdout)
         
     | 
| 
       89 
92 
     | 
    
         
             
                        exitstatus = exit_code if exit_code != 0
         
     | 
| 
       90 
93 
     | 
    
         | 
| 
      
 94 
     | 
    
         
            +
                        printable_args = args_with_seed_option_added_when_viable(args, rspec_runner)
         
     | 
| 
      
 95 
     | 
    
         
            +
                        log_rspec_command(printable_args, test_file_paths, :subset_queue)
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
       91 
97 
     | 
    
         
             
                        rspec_clear_examples
         
     | 
| 
       92 
98 
     | 
    
         | 
| 
       93 
99 
     | 
    
         
             
                        KnapsackPro::Hooks::Queue.call_after_subset_queue
         
     | 
| 
         @@ -107,19 +113,22 @@ module KnapsackPro 
     | 
|
| 
       107 
113 
     | 
    
         | 
| 
       108 
114 
     | 
    
         
             
                    private
         
     | 
| 
       109 
115 
     | 
    
         | 
| 
      
 116 
     | 
    
         
            +
                    def self.adapter_class
         
     | 
| 
      
 117 
     | 
    
         
            +
                      KnapsackPro::Adapters::RSpecAdapter
         
     | 
| 
      
 118 
     | 
    
         
            +
                    end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
       110 
120 
     | 
    
         
             
                    def self.log_rspec_command(cli_args, test_file_paths, type)
         
     | 
| 
       111 
121 
     | 
    
         
             
                      case type
         
     | 
| 
       112 
122 
     | 
    
         
             
                      when :subset_queue
         
     | 
| 
       113 
     | 
    
         
            -
                        KnapsackPro.logger.info("To retry the last batch of tests fetched from the API Queue, please run the following command on your machine 
     | 
| 
      
 123 
     | 
    
         
            +
                        KnapsackPro.logger.info("To retry the last batch of tests fetched from the API Queue, please run the following command on your machine:")
         
     | 
| 
       114 
124 
     | 
    
         
             
                      when :end_of_queue
         
     | 
| 
       115 
125 
     | 
    
         
             
                        KnapsackPro.logger.info("To retry all the tests assigned to this CI node, please run the following command on your machine:")
         
     | 
| 
       116 
126 
     | 
    
         
             
                      end
         
     | 
| 
       117 
127 
     | 
    
         | 
| 
       118 
     | 
    
         
            -
                       
     | 
| 
       119 
     | 
    
         
            -
                      stringify_cli_args.slice!("--format #{KnapsackPro::Formatters::RSpecQueueSummaryFormatter}")
         
     | 
| 
      
 128 
     | 
    
         
            +
                      stringified_cli_args = cli_args.join(' ').sub(" --format #{KnapsackPro::Formatters::RSpecQueueSummaryFormatter}", '')
         
     | 
| 
       120 
129 
     | 
    
         | 
| 
       121 
130 
     | 
    
         
             
                      KnapsackPro.logger.info(
         
     | 
| 
       122 
     | 
    
         
            -
                        "bundle exec rspec #{ 
     | 
| 
      
 131 
     | 
    
         
            +
                        "bundle exec rspec #{stringified_cli_args} " +
         
     | 
| 
       123 
132 
     | 
    
         
             
                        KnapsackPro::TestFilePresenter.stringify_paths(test_file_paths)
         
     | 
| 
       124 
133 
     | 
    
         
             
                      )
         
     | 
| 
       125 
134 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -151,6 +160,24 @@ module KnapsackPro 
     | 
|
| 
       151 
160 
     | 
    
         
             
                        ::RSpec.configuration.reset_filters
         
     | 
| 
       152 
161 
     | 
    
         
             
                      end
         
     | 
| 
       153 
162 
     | 
    
         
             
                    end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                    def self.args_with_seed_option_added_when_viable(args, rspec_runner)
         
     | 
| 
      
 165 
     | 
    
         
            +
                      order_option = adapter_class.order_option(args)
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                      if order_option
         
     | 
| 
      
 168 
     | 
    
         
            +
                        # Don't add the seed option for order other than random, e.g. `defined`
         
     | 
| 
      
 169 
     | 
    
         
            +
                        return args unless order_option.include?('rand')
         
     | 
| 
      
 170 
     | 
    
         
            +
                        # Don't add the seed option if the seed is already set in args, e.g. `rand:12345`
         
     | 
| 
      
 171 
     | 
    
         
            +
                        return args if order_option.to_s.split(':')[1]
         
     | 
| 
      
 172 
     | 
    
         
            +
                      end
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                      # Don't add the seed option if the seed was not used (i.e. a different order is being used, e.g. `defined`)
         
     | 
| 
      
 175 
     | 
    
         
            +
                      return args unless rspec_runner.configuration.seed_used?
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
                      @@used_seed = rspec_runner.configuration.seed.to_s
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                      args + ['--seed', @@used_seed]
         
     | 
| 
      
 180 
     | 
    
         
            +
                    end
         
     | 
| 
       154 
181 
     | 
    
         
             
                  end
         
     | 
| 
       155 
182 
     | 
    
         
             
                end
         
     | 
| 
       156 
183 
     | 
    
         
             
              end
         
     | 
    
        data/lib/knapsack_pro/version.rb
    CHANGED
    
    
| 
         @@ -110,6 +110,58 @@ describe KnapsackPro::Adapters::RSpecAdapter do 
     | 
|
| 
       110 
110 
     | 
    
         
             
                end
         
     | 
| 
       111 
111 
     | 
    
         
             
              end
         
     | 
| 
       112 
112 
     | 
    
         | 
| 
      
 113 
     | 
    
         
            +
              describe '.order_option' do
         
     | 
| 
      
 114 
     | 
    
         
            +
                subject { described_class.order_option(cli_args) }
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                context "when order is 'defined'" do
         
     | 
| 
      
 117 
     | 
    
         
            +
                  let(:cli_args) { ['--order', 'defined'] }
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                  it { expect(subject).to eq 'defined' }
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                context "when order is 'recently-modified'" do
         
     | 
| 
      
 123 
     | 
    
         
            +
                  let(:cli_args) { ['--order', 'recently-modified'] }
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  it { expect(subject).to eq 'recently-modified' }
         
     | 
| 
      
 126 
     | 
    
         
            +
                end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                context "when order is 'rand'" do
         
     | 
| 
      
 129 
     | 
    
         
            +
                  let(:cli_args) { ['--order', 'rand'] }
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                  it { expect(subject).to eq 'rand' }
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                  context 'with the seed' do
         
     | 
| 
      
 134 
     | 
    
         
            +
                    let(:cli_args) { ['--order', 'rand:123456'] }
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                    it { expect(subject).to eq 'rand:123456' }
         
     | 
| 
      
 137 
     | 
    
         
            +
                  end
         
     | 
| 
      
 138 
     | 
    
         
            +
                end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
                context "when order is 'random'" do
         
     | 
| 
      
 141 
     | 
    
         
            +
                  let(:cli_args) { ['--order', 'random'] }
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                  it { expect(subject).to eq 'random' }
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                  context 'with the seed' do
         
     | 
| 
      
 146 
     | 
    
         
            +
                    let(:cli_args) { ['--order', 'random:123456'] }
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                    it { expect(subject).to eq 'random:123456' }
         
     | 
| 
      
 149 
     | 
    
         
            +
                  end
         
     | 
| 
      
 150 
     | 
    
         
            +
                end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                context 'when some custom order is specified' do
         
     | 
| 
      
 153 
     | 
    
         
            +
                  let(:cli_args) { ['--order', 'some-custom-order'] }
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                  it { expect(subject).to eq 'some-custom-order' }
         
     | 
| 
      
 156 
     | 
    
         
            +
                end
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
                context "when the seed is given with the --seed command" do
         
     | 
| 
      
 159 
     | 
    
         
            +
                  let(:cli_args) { ['--seed', '123456'] }
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                  it { expect(subject).to eq 'rand:123456' }
         
     | 
| 
      
 162 
     | 
    
         
            +
                end
         
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
       113 
165 
     | 
    
         
             
              describe '.test_path' do
         
     | 
| 
       114 
166 
     | 
    
         
             
                let(:example_group) do
         
     | 
| 
       115 
167 
     | 
    
         
             
                  {
         
     | 
| 
         @@ -177,7 +177,7 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       177 
177 
     | 
    
         
             
              describe '.run_tests' do
         
     | 
| 
       178 
178 
     | 
    
         
             
                let(:runner) { instance_double(described_class) }
         
     | 
| 
       179 
179 
     | 
    
         
             
                let(:can_initialize_queue) { double(:can_initialize_queue) }
         
     | 
| 
       180 
     | 
    
         
            -
                let(:args) { ['-- 
     | 
| 
      
 180 
     | 
    
         
            +
                let(:args) { ['--no-color', '--default-path', 'fake-test-dir'] }
         
     | 
| 
       181 
181 
     | 
    
         
             
                let(:exitstatus) { double }
         
     | 
| 
       182 
182 
     | 
    
         
             
                let(:all_test_file_paths) { [] }
         
     | 
| 
       183 
183 
     | 
    
         
             
                let(:accumulator) do
         
     | 
| 
         @@ -198,6 +198,8 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       198 
198 
     | 
    
         | 
| 
       199 
199 
     | 
    
         
             
                context 'when test files exist' do
         
     | 
| 
       200 
200 
     | 
    
         
             
                  let(:test_file_paths) { ['a_spec.rb', 'b_spec.rb'] }
         
     | 
| 
      
 201 
     | 
    
         
            +
                  let(:logger) { double }
         
     | 
| 
      
 202 
     | 
    
         
            +
                  let(:rspec_seed) { 7771 }
         
     | 
| 
       201 
203 
     | 
    
         | 
| 
       202 
204 
     | 
    
         
             
                  before do
         
     | 
| 
       203 
205 
     | 
    
         
             
                    subset_queue_id = 'fake-subset-queue-id'
         
     | 
| 
         @@ -212,7 +214,7 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       212 
214 
     | 
    
         | 
| 
       213 
215 
     | 
    
         
             
                    options = double
         
     | 
| 
       214 
216 
     | 
    
         
             
                    expect(RSpec::Core::ConfigurationOptions).to receive(:new).with([
         
     | 
| 
       215 
     | 
    
         
            -
                      '-- 
     | 
| 
      
 217 
     | 
    
         
            +
                      '--no-color',
         
     | 
| 
       216 
218 
     | 
    
         
             
                      '--default-path', 'fake-test-dir',
         
     | 
| 
       217 
219 
     | 
    
         
             
                      'a_spec.rb', 'b_spec.rb',
         
     | 
| 
       218 
220 
     | 
    
         
             
                    ]).and_return(options)
         
     | 
| 
         @@ -226,6 +228,16 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       226 
228 
     | 
    
         
             
                    expect(KnapsackPro::Hooks::Queue).to receive(:call_after_subset_queue)
         
     | 
| 
       227 
229 
     | 
    
         | 
| 
       228 
230 
     | 
    
         
             
                    expect(KnapsackPro::Report).to receive(:save_subset_queue_to_file)
         
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
                    configuration = double
         
     | 
| 
      
 233 
     | 
    
         
            +
                    expect(rspec_core_runner).to receive(:configuration).twice.and_return(configuration)
         
     | 
| 
      
 234 
     | 
    
         
            +
                    expect(configuration).to receive(:seed_used?).and_return(true)
         
     | 
| 
      
 235 
     | 
    
         
            +
                    expect(configuration).to receive(:seed).and_return(rspec_seed)
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
      
 237 
     | 
    
         
            +
                    expect(KnapsackPro).to receive(:logger).twice.and_return(logger)
         
     | 
| 
      
 238 
     | 
    
         
            +
                    expect(logger).to receive(:info)
         
     | 
| 
      
 239 
     | 
    
         
            +
                      .with("To retry the last batch of tests fetched from the API Queue, please run the following command on your machine:")
         
     | 
| 
      
 240 
     | 
    
         
            +
                    expect(logger).to receive(:info).with(/#{args.join(' ')} --seed #{rspec_seed}/)
         
     | 
| 
       229 
241 
     | 
    
         
             
                  end
         
     | 
| 
       230 
242 
     | 
    
         | 
| 
       231 
243 
     | 
    
         
             
                  context 'when exit code is zero' do
         
     | 
| 
         @@ -264,8 +276,13 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       264 
276 
     | 
    
         | 
| 
       265 
277 
     | 
    
         
             
                  context 'when all_test_file_paths exist' do
         
     | 
| 
       266 
278 
     | 
    
         
             
                    let(:all_test_file_paths) { ['a_spec.rb'] }
         
     | 
| 
      
 279 
     | 
    
         
            +
                    let(:logger) { double }
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
      
 281 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 282 
     | 
    
         
            +
                      described_class.class_variable_set(:@@used_seed, used_seed)
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
                      expect(KnapsackPro).to receive(:logger).twice.and_return(logger)
         
     | 
| 
       267 
285 
     | 
    
         | 
| 
       268 
     | 
    
         
            -
                    it do
         
     | 
| 
       269 
286 
     | 
    
         
             
                      expect(KnapsackPro::Adapters::RSpecAdapter).to receive(:verify_bind_method_called)
         
     | 
| 
       270 
287 
     | 
    
         | 
| 
       271 
288 
     | 
    
         
             
                      expect(KnapsackPro::Formatters::RSpecQueueSummaryFormatter).to receive(:print_summary)
         
     | 
| 
         @@ -274,10 +291,33 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       274 
291 
     | 
    
         
             
                      expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
         
     | 
| 
       275 
292 
     | 
    
         
             
                      expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
         
     | 
| 
       276 
293 
     | 
    
         | 
| 
       277 
     | 
    
         
            -
                      expect( 
     | 
| 
       278 
     | 
    
         
            -
                         
     | 
| 
       279 
     | 
    
         
            -
             
     | 
| 
       280 
     | 
    
         
            -
             
     | 
| 
      
 294 
     | 
    
         
            +
                      expect(logger).to receive(:info)
         
     | 
| 
      
 295 
     | 
    
         
            +
                        .with('To retry all the tests assigned to this CI node, please run the following command on your machine:')
         
     | 
| 
      
 296 
     | 
    
         
            +
                      expect(logger).to receive(:info).with(logged_rspec_command_matcher)
         
     | 
| 
      
 297 
     | 
    
         
            +
                    end
         
     | 
| 
      
 298 
     | 
    
         
            +
             
     | 
| 
      
 299 
     | 
    
         
            +
                    context 'when @@used_seed has been set' do
         
     | 
| 
      
 300 
     | 
    
         
            +
                      let(:used_seed) { '8333' }
         
     | 
| 
      
 301 
     | 
    
         
            +
                      let(:logged_rspec_command_matcher) { /#{args.join(' ')} --seed #{used_seed} \"a_spec.rb"/ }
         
     | 
| 
      
 302 
     | 
    
         
            +
             
     | 
| 
      
 303 
     | 
    
         
            +
                      it do
         
     | 
| 
      
 304 
     | 
    
         
            +
                        expect(subject).to eq({
         
     | 
| 
      
 305 
     | 
    
         
            +
                          status: :completed,
         
     | 
| 
      
 306 
     | 
    
         
            +
                          exitstatus: exitstatus,
         
     | 
| 
      
 307 
     | 
    
         
            +
                        })
         
     | 
| 
      
 308 
     | 
    
         
            +
                      end
         
     | 
| 
      
 309 
     | 
    
         
            +
                    end
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
                    context 'when @@used_seed has not been set' do
         
     | 
| 
      
 312 
     | 
    
         
            +
                      let(:used_seed) { nil }
         
     | 
| 
      
 313 
     | 
    
         
            +
                      let(:logged_rspec_command_matcher) { /#{args.join(' ')} \"a_spec.rb"/ }
         
     | 
| 
      
 314 
     | 
    
         
            +
             
     | 
| 
      
 315 
     | 
    
         
            +
                      it do
         
     | 
| 
      
 316 
     | 
    
         
            +
                        expect(subject).to eq({
         
     | 
| 
      
 317 
     | 
    
         
            +
                          status: :completed,
         
     | 
| 
      
 318 
     | 
    
         
            +
                          exitstatus: exitstatus,
         
     | 
| 
      
 319 
     | 
    
         
            +
                        })
         
     | 
| 
      
 320 
     | 
    
         
            +
                      end
         
     | 
| 
       281 
321 
     | 
    
         
             
                    end
         
     | 
| 
       282 
322 
     | 
    
         
             
                  end
         
     | 
| 
       283 
323 
     | 
    
         | 
| 
         @@ -287,6 +327,7 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do 
     | 
|
| 
       287 
327 
     | 
    
         
             
                    it do
         
     | 
| 
       288 
328 
     | 
    
         
             
                      expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
         
     | 
| 
       289 
329 
     | 
    
         
             
                      expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
         
     | 
| 
      
 330 
     | 
    
         
            +
                      expect(KnapsackPro).to_not receive(:logger)
         
     | 
| 
       290 
331 
     | 
    
         | 
| 
       291 
332 
     | 
    
         
             
                      expect(subject).to eq({
         
     | 
| 
       292 
333 
     | 
    
         
             
                        status: :completed,
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: knapsack_pro
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3.4. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.4.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - ArturT
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-11-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rake
         
     |