knapsack_pro 2.18.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a298724c7651190199978edc99b96116abcbb827d12237e128f2c5d87297847
4
- data.tar.gz: 2750130109b114747278d86fd4bc2477d143b2f1f3564f7b36d224f5044e29cf
3
+ metadata.gz: e5187abddda32d96fdec255f8aa2e740f0c85e856d882fa31790e4e8c93a87e8
4
+ data.tar.gz: 22320f9e0795684f81a53fb4fffb29295b28b0068fef5c54739c14e423eed003
5
5
  SHA512:
6
- metadata.gz: 7742dbaf98eb6bc1aeda1c15c2dd3b8f627fe27c91fa58a4f46e71d2ff4839d5899005b36deddcb619745689dd6426f9319df1b70ad26f317be2cea2e6922799
7
- data.tar.gz: a102bc5ab00cabc5ec4f7007e52081fd97ca194ea8e84072b2df8fb66664c6e320ea7b76d0970aa702ed9549e36bd5c702a7156de914b5fbdf9fe00c43de8351
6
+ metadata.gz: 07ea71f123f6995a6174b45561818c9ff5bf2565a141d1c49261ebf448027953fd1e822806ed1a04db962dad7fcee0fe27d025b4823c58b34d0519d2f04275a0
7
+ data.tar.gz: a84f3ae6a0b69d33e16e3efd5338e13e3b09c8db9bea6f26d77523436ff370722341586732ce28df4011f5379102fdae18ce9f7a5673286f2f0323c5b5102709
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ### 3.0.0
4
+
5
+ * __(breaking change)__ Remove support for RSpec 2.x. This change was already done by accident in [the pull request](https://github.com/KnapsackPro/knapsack_pro-ruby/pull/143) when we added the RSpec `context` hook, which is available only since RSpec 3.x.
6
+ * Use RSpec `example` block argument instead of the global `RSpec.current_example`. This allows to run tests with the `async-rspec` gem.
7
+
8
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/153
9
+
10
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v2.18.2...v3.0.0
11
+
3
12
  ### 2.18.2
4
13
 
5
14
  * Track all test files assigned to a CI node in Regular Mode including pending test files in order to retry proper set of tests on the retried CI node
data/knapsack_pro.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'rake', '>= 0'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '>= 1.6'
31
- spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.10.0'
31
+ spec.add_development_dependency 'rspec', '~> 3.0'
32
32
  spec.add_development_dependency 'rspec-its', '~> 1.3'
33
33
  spec.add_development_dependency 'cucumber', '>= 0'
34
34
  spec.add_development_dependency 'spinach', '>= 0.8'
@@ -24,8 +24,10 @@ module KnapsackPro
24
24
  cli_args.any? { |arg| arg.start_with?('-f') || arg.start_with?('--format') }
25
25
  end
26
26
 
27
- def self.test_path(example_group)
28
- if defined?(::Turnip) && ::Turnip::VERSION.to_i < 2
27
+ def self.test_path(example)
28
+ example_group = example.metadata[:example_group]
29
+
30
+ if defined?(::Turnip) && Gem::Version.new(::Turnip::VERSION) < Gem::Version.new('2.0.0')
29
31
  unless example_group[:turnip]
30
32
  until example_group[:parent_example_group].nil?
31
33
  example_group = example_group[:parent_example_group]
@@ -51,14 +53,7 @@ module KnapsackPro
51
53
  # this way we count time spend in runtime for the previous test example after around(:each) is already done
52
54
  KnapsackPro.tracker.stop_timer
53
55
 
54
- current_example_group =
55
- if ::RSpec.respond_to?(:current_example)
56
- ::RSpec.current_example.metadata[:example_group]
57
- else
58
- example.metadata
59
- end
60
-
61
- current_test_path = KnapsackPro::Adapters::RSpecAdapter.test_path(current_example_group)
56
+ current_test_path = KnapsackPro::Adapters::RSpecAdapter.test_path(example)
62
57
 
63
58
  KnapsackPro.tracker.current_test_path =
64
59
  if KnapsackPro::Config::Env.rspec_split_by_test_examples? && KnapsackPro::Adapters::RSpecAdapter.slow_test_file?(RSpecAdapter, current_test_path)
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '2.18.2'
2
+ VERSION = '3.0.0'
3
3
  end
@@ -111,7 +111,7 @@ describe KnapsackPro::Adapters::RSpecAdapter do
111
111
  end
112
112
 
113
113
  describe '.test_path' do
114
- let(:current_example_metadata) do
114
+ let(:example_group) do
115
115
  {
116
116
  file_path: '1_shared_example.rb',
117
117
  parent_example_group: {
@@ -122,14 +122,19 @@ describe KnapsackPro::Adapters::RSpecAdapter do
122
122
  }
123
123
  }
124
124
  end
125
+ let(:current_example) do
126
+ OpenStruct.new(metadata: {
127
+ example_group: example_group
128
+ })
129
+ end
125
130
 
126
- subject { described_class.test_path(current_example_metadata) }
131
+ subject { described_class.test_path(current_example) }
127
132
 
128
133
  it { should eql 'a_spec.rb' }
129
134
 
130
135
  context 'with turnip features' do
131
136
  describe 'when the turnip version is less than 2' do
132
- let(:current_example_metadata) do
137
+ let(:example_group) do
133
138
  {
134
139
  file_path: "./spec/features/logging_in.feature",
135
140
  turnip: true,
@@ -145,7 +150,7 @@ describe KnapsackPro::Adapters::RSpecAdapter do
145
150
  end
146
151
 
147
152
  describe 'when turnip is version 2 or greater' do
148
- let(:current_example_metadata) do
153
+ let(:example_group) do
149
154
  {
150
155
  file_path: "gems/turnip-2.0.0/lib/turnip/rspec.rb",
151
156
  turnip: true,
@@ -170,13 +175,7 @@ describe KnapsackPro::Adapters::RSpecAdapter do
170
175
  let(:logger) { instance_double(Logger) }
171
176
  let(:global_time) { 'Global time: 01m 05s' }
172
177
  let(:test_path) { 'spec/a_spec.rb' }
173
- let(:example) { double }
174
- let(:example_group) { double }
175
- let(:current_example) do
176
- OpenStruct.new(metadata: {
177
- example_group: example_group
178
- })
179
- end
178
+ let(:current_example) { double }
180
179
 
181
180
  context 'when rspec split by test examples is disabled' do
182
181
  before do
@@ -189,19 +188,18 @@ describe KnapsackPro::Adapters::RSpecAdapter do
189
188
  allow(KnapsackPro).to receive(:tracker).and_return(tracker)
190
189
  expect(tracker).to receive(:start_timer).ordered
191
190
 
192
- expect(config).to receive(:around).with(:each).and_yield(example)
191
+ expect(config).to receive(:around).with(:each).and_yield(current_example)
193
192
  expect(config).to receive(:append_after).with(:context).and_yield
194
193
  expect(config).to receive(:after).with(:suite).and_yield
195
194
  expect(::RSpec).to receive(:configure).and_yield(config)
196
195
 
197
196
  expect(tracker).to receive(:stop_timer).ordered
198
197
 
199
- expect(::RSpec).to receive(:current_example).twice.and_return(current_example)
200
- expect(described_class).to receive(:test_path).with(example_group).and_return(test_path)
198
+ expect(described_class).to receive(:test_path).with(current_example).and_return(test_path)
201
199
 
202
200
  expect(tracker).to receive(:current_test_path=).with(test_path).ordered
203
201
 
204
- expect(example).to receive(:run)
202
+ expect(current_example).to receive(:run)
205
203
 
206
204
  expect(tracker).to receive(:stop_timer).ordered
207
205
 
@@ -226,26 +224,25 @@ describe KnapsackPro::Adapters::RSpecAdapter do
226
224
  end
227
225
 
228
226
  it 'records time for example.id' do
229
- expect(example).to receive(:id).and_return(test_example_path)
227
+ expect(current_example).to receive(:id).and_return(test_example_path)
230
228
 
231
229
  expect(config).to receive(:prepend_before).with(:context).and_yield
232
230
 
233
231
  allow(KnapsackPro).to receive(:tracker).and_return(tracker)
234
232
  expect(tracker).to receive(:start_timer).ordered
235
233
 
236
- expect(config).to receive(:around).with(:each).and_yield(example)
234
+ expect(config).to receive(:around).with(:each).and_yield(current_example)
237
235
  expect(config).to receive(:append_after).with(:context).and_yield
238
236
  expect(config).to receive(:after).with(:suite).and_yield
239
237
  expect(::RSpec).to receive(:configure).and_yield(config)
240
238
 
241
239
  expect(tracker).to receive(:stop_timer).ordered
242
240
 
243
- expect(::RSpec).to receive(:current_example).twice.and_return(current_example)
244
- expect(described_class).to receive(:test_path).with(example_group).and_return(test_path)
241
+ expect(described_class).to receive(:test_path).with(current_example).and_return(test_path)
245
242
 
246
243
  expect(tracker).to receive(:current_test_path=).with(test_example_path).ordered
247
244
 
248
- expect(example).to receive(:run)
245
+ expect(current_example).to receive(:run)
249
246
 
250
247
  expect(tracker).to receive(:stop_timer).ordered
251
248
 
@@ -268,19 +265,18 @@ describe KnapsackPro::Adapters::RSpecAdapter do
268
265
  allow(KnapsackPro).to receive(:tracker).and_return(tracker)
269
266
  expect(tracker).to receive(:start_timer).ordered
270
267
 
271
- expect(config).to receive(:around).with(:each).and_yield(example)
268
+ expect(config).to receive(:around).with(:each).and_yield(current_example)
272
269
  expect(config).to receive(:append_after).with(:context).and_yield
273
270
  expect(config).to receive(:after).with(:suite).and_yield
274
271
  expect(::RSpec).to receive(:configure).and_yield(config)
275
272
 
276
- expect(::RSpec).to receive(:current_example).twice.and_return(current_example)
277
- expect(described_class).to receive(:test_path).with(example_group).and_return(test_path)
273
+ expect(described_class).to receive(:test_path).with(current_example).and_return(test_path)
278
274
 
279
275
  expect(tracker).to receive(:stop_timer).ordered
280
276
 
281
277
  expect(tracker).to receive(:current_test_path=).with(test_path).ordered
282
278
 
283
- expect(example).to receive(:run)
279
+ expect(current_example).to receive(:run)
284
280
 
285
281
  expect(tracker).to receive(:stop_timer).ordered
286
282
 
@@ -14,12 +14,17 @@ describe KnapsackPro::Runners::MinitestRunner do
14
14
  end
15
15
 
16
16
  context 'when test files were returned by Knapsack Pro API' do
17
+ let(:test_file_paths) { ['test_fake/a_test.rb', 'test_fake/b_test.rb'] }
18
+
17
19
  before do
18
20
  expect(KnapsackPro::Adapters::MinitestAdapter).to receive(:verify_bind_method_called)
21
+
22
+ tracker = instance_double(KnapsackPro::Tracker)
23
+ expect(KnapsackPro).to receive(:tracker).and_return(tracker)
24
+ expect(tracker).to receive(:set_prerun_tests).with(test_file_paths)
19
25
  end
20
26
 
21
27
  it 'runs tests' do
22
- test_file_paths = ['test_fake/a_test.rb', 'test_fake/b_test.rb']
23
28
  runner = instance_double(described_class,
24
29
  test_dir: 'test',
25
30
  test_file_paths: test_file_paths,
@@ -13,10 +13,15 @@ describe KnapsackPro::Runners::TestUnitRunner do
13
13
  end
14
14
 
15
15
  context 'when test files were returned by Knapsack Pro API' do
16
+ let(:test_file_paths) { ['test-unit_fake/a_test.rb', 'test-unit_fake/b_test.rb'] }
17
+
16
18
  it 'runs tests' do
17
19
  expect(KnapsackPro::Adapters::TestUnitAdapter).to receive(:verify_bind_method_called)
18
20
 
19
- test_file_paths = ['test-unit_fake/a_test.rb', 'test-unit_fake/b_test.rb']
21
+ tracker = instance_double(KnapsackPro::Tracker)
22
+ expect(KnapsackPro).to receive(:tracker).and_return(tracker)
23
+ expect(tracker).to receive(:set_prerun_tests).with(test_file_paths)
24
+
20
25
  runner = instance_double(described_class,
21
26
  test_dir: 'test-unit_fake',
22
27
  test_file_paths: test_file_paths,
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: 2.18.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-29 00:00:00.000000000 Z
11
+ date: 2021-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -45,9 +45,6 @@ dependencies:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.0'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 2.10.0
51
48
  type: :development
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
@@ -55,9 +52,6 @@ dependencies:
55
52
  - - "~>"
56
53
  - !ruby/object:Gem::Version
57
54
  version: '3.0'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 2.10.0
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: rspec-its
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -409,7 +403,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
409
403
  - !ruby/object:Gem::Version
410
404
  version: '0'
411
405
  requirements: []
412
- rubygems_version: 3.2.15
406
+ rubygems_version: 3.2.22
413
407
  signing_key:
414
408
  specification_version: 4
415
409
  summary: Knapsack Pro splits tests across parallel CI nodes and ensures each parallel