knapsack_pro 1.19.0 → 1.20.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: 824a069d97efb456cec01426d85ebee23d4eba646620483a09def750fba06007
4
- data.tar.gz: 4c0bd1456766af5889562764590862d64626399e12d9af184343c1c6eabd4cb7
3
+ metadata.gz: f06c380d215524276faa79157268a701ca58e3e0ab22fdcfb78119786596bf65
4
+ data.tar.gz: e5c3d4a9258fd43dd869367bd7d1fdaacd786904f67cfe4041f2fc7aa49daf25
5
5
  SHA512:
6
- metadata.gz: 3b557f2efc472c09108e33c7c9ef612a141986a79d7e1969a5bbea198d57341b3ac2c8a9e76a1ab8767993922405a813eac545fcaf23d1e28986ff3c9e5d586e
7
- data.tar.gz: ae5853cec21a9453fa290c26ac90eebce49231848edd5b638a5cdea58a9f897f9f2bcac82c26ac953b57f53ef327e66bceebe2c67e79e36cc0a6f6d8b96d0ff4
6
+ metadata.gz: ad9e73fca6cb2b53d8c9d156a012ea43c159cb37380c8c6cbe95f2ee0d94abca8707ea94eff3c59d428e48afdd9f3500f28aff8f5d85d12f7fe22e7f726cf9ca
7
+ data.tar.gz: 2d1b257cade9a1c82e93c530a9d30cb292c05a3df007ed5e18e809472520d035590ec06b6457790ce4f37190c28beb60801c21a6a646e2ac3674abaf3c299ea1
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ### 1.20.0
4
+
5
+ * Add support for tests split by test examples to RSpec older than 3.6.0
6
+
7
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/104
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v1.19.0...v1.20.0
10
+
3
11
  ### 1.19.0
4
12
 
5
13
  * RSpec split test files by test examples (by individual `it`s)
data/README.md CHANGED
@@ -608,7 +608,9 @@ This is helpful when you have one or a few very slow test files that are a bottl
608
608
 
609
609
  ### RSpec split test files by test examples (by individual `it`s)
610
610
 
611
- In order to split RSpec test files by test examples across parallel CI nodes you need to set flag:
611
+ __Requirement:__ It works with >= RSpec 3.6.0.
612
+
613
+ In order to split RSpec test files by test examples across parallel CI nodes you need to set environment variable:
612
614
 
613
615
  ```
614
616
  KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES=true
@@ -1002,7 +1004,7 @@ env:
1002
1004
  - KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH=spinach-token
1003
1005
 
1004
1006
  - KNAPSACK_PRO_CI_NODE_TOTAL=2
1005
- matrix:
1007
+ jobs:
1006
1008
  - KNAPSACK_PRO_CI_NODE_INDEX=0
1007
1009
  - KNAPSACK_PRO_CI_NODE_INDEX=1
1008
1010
  ```
@@ -0,0 +1,20 @@
1
+ RSpec::Support.require_rspec_core('formatters/json_formatter')
2
+
3
+ # based on https://github.com/rspec/rspec-core/blob/master/lib/rspec/core/formatters/json_formatter.rb
4
+ module KnapsackPro
5
+ module Formatters
6
+ class RSpecJsonFormatter < RSpec::Core::Formatters::JsonFormatter
7
+ RSpec::Core::Formatters.register self, :message, :dump_summary, :dump_profile, :stop, :seed, :close
8
+
9
+ private
10
+
11
+ # add example.id to json report to support < RSpec 3.6.0
12
+ # based on https://github.com/rspec/rspec-core/pull/2369/files
13
+ def format_example(example)
14
+ super.merge({
15
+ :id => example.id,
16
+ })
17
+ end
18
+ end
19
+ end
20
+ end
@@ -7,14 +7,21 @@ module KnapsackPro
7
7
  def generate_json_report
8
8
  require 'rspec/core'
9
9
 
10
+ cli_format =
11
+ if Gem::Version.new(RSpec::Core::Version::STRING) < Gem::Version.new('3.6.0')
12
+ require_relative '../formatters/rspec_json_formatter'
13
+ ['--format', KnapsackPro::Formatters::RSpecJsonFormatter.to_s]
14
+ else
15
+ ['--format', 'json']
16
+ end
17
+
10
18
  ensure_report_dir_exists
11
19
  remove_old_json_report
12
20
 
13
21
  test_file_paths = KnapsackPro::TestFileFinder.call(test_file_pattern)
14
22
 
15
- cli_args = [
23
+ cli_args = cli_format + [
16
24
  '--dry-run',
17
- '--format', 'json',
18
25
  '--out', REPORT_PATH,
19
26
  '--default-path', test_dir,
20
27
  ] + test_file_paths.map { |t| t.fetch('path') }
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '1.19.0'
2
+ VERSION = '1.20.0'
3
3
  end
@@ -27,8 +27,8 @@ describe KnapsackPro::TestCaseDetectors::RSpecTestExampleDetector do
27
27
 
28
28
  options = double
29
29
  expect(RSpec::Core::ConfigurationOptions).to receive(:new).with([
30
+ '--format', expected_format,
30
31
  '--dry-run',
31
- '--format', 'json',
32
32
  '--out', report_path,
33
33
  '--default-path', test_dir,
34
34
  'spec/a_spec.rb', 'spec/b_spec.rb',
@@ -39,20 +39,38 @@ describe KnapsackPro::TestCaseDetectors::RSpecTestExampleDetector do
39
39
  expect(rspec_core_runner).to receive(:run).with($stderr, $stdout).and_return(exit_code)
40
40
  end
41
41
 
42
- context 'when exit code from RSpec::Core::Runner is 0' do
43
- let(:exit_code) { 0 }
42
+ shared_examples 'generate_json_report runs RSpec::Core::Runner' do
43
+ context 'when exit code from RSpec::Core::Runner is 0' do
44
+ let(:exit_code) { 0 }
44
45
 
45
- it do
46
- expect(subject).to be_nil
46
+ it do
47
+ expect(subject).to be_nil
48
+ end
49
+ end
50
+
51
+ context 'when exit code from RSpec::Core::Runner is 1' do
52
+ let(:exit_code) { 1 }
53
+
54
+ it do
55
+ expect { subject }.to raise_error(RuntimeError, 'There was problem to generate test examples for test suite')
56
+ end
47
57
  end
48
58
  end
49
59
 
50
- context 'when exit code from RSpec::Core::Runner is 1' do
51
- let(:exit_code) { 1 }
60
+ context 'when RSpec >= 3.6.0' do
61
+ let(:expected_format) { 'json' }
52
62
 
53
- it do
54
- expect { subject }.to raise_error(RuntimeError, 'There was problem to generate test examples for test suite')
63
+ it_behaves_like 'generate_json_report runs RSpec::Core::Runner'
64
+ end
65
+
66
+ context 'when RSpec < 3.6.0' do
67
+ let(:expected_format) { 'KnapsackPro::Formatters::RSpecJsonFormatter' }
68
+
69
+ before do
70
+ stub_const('RSpec::Core::Version::STRING', '3.5.0')
55
71
  end
72
+
73
+ it_behaves_like 'generate_json_report runs RSpec::Core::Runner'
56
74
  end
57
75
  end
58
76
 
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: 1.19.0
4
+ version: 1.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-05 00:00:00.000000000 Z
11
+ date: 2020-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -257,6 +257,7 @@ files:
257
257
  - lib/knapsack_pro/crypto/digestor.rb
258
258
  - lib/knapsack_pro/crypto/encryptor.rb
259
259
  - lib/knapsack_pro/extensions/time.rb
260
+ - lib/knapsack_pro/formatters/rspec_json_formatter.rb
260
261
  - lib/knapsack_pro/formatters/rspec_queue_profile_formatter_extension.rb
261
262
  - lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb
262
263
  - lib/knapsack_pro/hooks/queue.rb