knapsack_pro 2.18.1 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +33 -0
  5. data/README.md +8 -3
  6. data/knapsack_pro.gemspec +1 -1
  7. data/lib/knapsack_pro/adapters/base_adapter.rb +4 -4
  8. data/lib/knapsack_pro/adapters/rspec_adapter.rb +5 -10
  9. data/lib/knapsack_pro/config/env.rb +8 -1
  10. data/lib/knapsack_pro/config/temp_files.rb +38 -0
  11. data/lib/knapsack_pro/report.rb +7 -8
  12. data/lib/knapsack_pro/runners/cucumber_runner.rb +3 -0
  13. data/lib/knapsack_pro/runners/minitest_runner.rb +3 -0
  14. data/lib/knapsack_pro/runners/queue/cucumber_runner.rb +3 -1
  15. data/lib/knapsack_pro/runners/queue/minitest_runner.rb +3 -1
  16. data/lib/knapsack_pro/runners/queue/rspec_runner.rb +3 -2
  17. data/lib/knapsack_pro/runners/rspec_runner.rb +3 -0
  18. data/lib/knapsack_pro/runners/spinach_runner.rb +3 -0
  19. data/lib/knapsack_pro/runners/test_unit_runner.rb +3 -0
  20. data/lib/knapsack_pro/slow_test_file_determiner.rb +8 -4
  21. data/lib/knapsack_pro/test_case_detectors/rspec_test_example_detector.rb +9 -6
  22. data/lib/knapsack_pro/tracker.rb +56 -1
  23. data/lib/knapsack_pro/version.rb +1 -1
  24. data/lib/knapsack_pro.rb +1 -0
  25. data/spec/knapsack_pro/adapters/base_adapter_spec.rb +9 -7
  26. data/spec/knapsack_pro/adapters/rspec_adapter_spec.rb +20 -24
  27. data/spec/knapsack_pro/config/env_spec.rb +25 -0
  28. data/spec/knapsack_pro/config/temp_files_spec.rb +25 -0
  29. data/spec/knapsack_pro/report_spec.rb +11 -10
  30. data/spec/knapsack_pro/runners/cucumber_runner_spec.rb +9 -1
  31. data/spec/knapsack_pro/runners/minitest_runner_spec.rb +6 -1
  32. data/spec/knapsack_pro/runners/queue/cucumber_runner_spec.rb +2 -0
  33. data/spec/knapsack_pro/runners/queue/minitest_runner_spec.rb +2 -0
  34. data/spec/knapsack_pro/runners/queue/rspec_runner_spec.rb +2 -0
  35. data/spec/knapsack_pro/runners/rspec_runner_spec.rb +9 -1
  36. data/spec/knapsack_pro/runners/spinach_runner_spec.rb +9 -1
  37. data/spec/knapsack_pro/runners/test_unit_runner_spec.rb +6 -1
  38. data/spec/knapsack_pro/slow_test_file_determiner_spec.rb +2 -2
  39. data/spec/knapsack_pro/test_case_detectors/rspec_test_example_detector_spec.rb +8 -6
  40. data/spec/knapsack_pro/tracker_spec.rb +67 -2
  41. data/spec/spec_helper.rb +5 -2
  42. metadata +6 -9
@@ -18,16 +18,20 @@ describe KnapsackPro::Runners::CucumberRunner do
18
18
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_TEST_SUITE_TOKEN', test_suite_token_cucumber)
19
19
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_RECORDING_ENABLED', 'true')
20
20
 
21
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::CucumberAdapter)
22
+
21
23
  expect(described_class).to receive(:new)
22
24
  .with(KnapsackPro::Adapters::CucumberAdapter).and_return(runner)
23
25
  end
24
26
 
25
27
  context 'when test files were returned by Knapsack Pro API' do
26
28
  let(:test_dir) { 'fake-test-dir' }
27
- let(:stringify_test_file_paths) { 'features/fake1.scenario features/fake2.scenario' }
29
+ let(:test_file_paths) { ['features/fake1.scenario', 'features/fake2.scenario'] }
30
+ let(:stringify_test_file_paths) { test_file_paths.join(' ') }
28
31
  let(:runner) do
29
32
  instance_double(described_class,
30
33
  test_dir: test_dir,
34
+ test_file_paths: test_file_paths,
31
35
  stringify_test_file_paths: stringify_test_file_paths,
32
36
  test_files_to_execute_exist?: true)
33
37
  end
@@ -36,6 +40,10 @@ describe KnapsackPro::Runners::CucumberRunner do
36
40
  before do
37
41
  expect(KnapsackPro::Adapters::CucumberAdapter).to receive(:verify_bind_method_called)
38
42
 
43
+ tracker = instance_double(KnapsackPro::Tracker)
44
+ expect(KnapsackPro).to receive(:tracker).and_return(tracker)
45
+ expect(tracker).to receive(:set_prerun_tests).with(test_file_paths)
46
+
39
47
  expect(Rake::Task).to receive(:[]).with('knapsack_pro:cucumber_run').at_least(1).and_return(task)
40
48
 
41
49
  t = double
@@ -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,
@@ -19,6 +19,8 @@ describe KnapsackPro::Runners::Queue::CucumberRunner do
19
19
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_RECORDING_ENABLED', 'true')
20
20
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_ID', queue_id)
21
21
 
22
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::CucumberAdapter)
23
+
22
24
  expect(described_class).to receive(:new).with(KnapsackPro::Adapters::CucumberAdapter).and_return(runner)
23
25
  end
24
26
 
@@ -19,6 +19,8 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
19
19
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_RECORDING_ENABLED', 'true')
20
20
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_ID', queue_id)
21
21
 
22
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::MinitestAdapter)
23
+
22
24
  expect(described_class).to receive(:new).with(KnapsackPro::Adapters::MinitestAdapter).and_return(runner)
23
25
 
24
26
  expect($LOAD_PATH).to receive(:unshift).with(test_dir)
@@ -26,6 +26,8 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
26
26
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_RECORDING_ENABLED', 'true')
27
27
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_QUEUE_ID', queue_id)
28
28
 
29
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::RSpecAdapter)
30
+
29
31
  expect(described_class).to receive(:new).with(KnapsackPro::Adapters::RSpecAdapter).and_return(runner)
30
32
  end
31
33
 
@@ -18,16 +18,20 @@ describe KnapsackPro::Runners::RSpecRunner do
18
18
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_TEST_SUITE_TOKEN', test_suite_token_rspec)
19
19
  expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_RECORDING_ENABLED', 'true')
20
20
 
21
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::RSpecAdapter)
22
+
21
23
  expect(described_class).to receive(:new)
22
24
  .with(KnapsackPro::Adapters::RSpecAdapter).and_return(runner)
23
25
  end
24
26
 
25
27
  context 'when test files were returned by Knapsack Pro API' do
26
28
  let(:test_dir) { 'fake-test-dir' }
27
- let(:stringify_test_file_paths) { "spec/a_spec.rb spec/b_spec.rb[1:1]" }
29
+ let(:test_file_paths) { ['spec/a_spec.rb', 'spec/b_spec.rb[1:1]'] }
30
+ let(:stringify_test_file_paths) { test_file_paths.join(' ') }
28
31
  let(:runner) do
29
32
  instance_double(described_class,
30
33
  test_dir: test_dir,
34
+ test_file_paths: test_file_paths,
31
35
  stringify_test_file_paths: stringify_test_file_paths,
32
36
  test_files_to_execute_exist?: true)
33
37
  end
@@ -37,6 +41,10 @@ describe KnapsackPro::Runners::RSpecRunner do
37
41
  expect(KnapsackPro::Adapters::RSpecAdapter).to receive(:verify_bind_method_called).ordered
38
42
  expect(KnapsackPro::Adapters::RSpecAdapter).to receive(:ensure_no_tag_option_when_rspec_split_by_test_examples_enabled!).with(['--profile', '--color']).ordered
39
43
 
44
+ tracker = instance_double(KnapsackPro::Tracker)
45
+ expect(KnapsackPro).to receive(:tracker).and_return(tracker)
46
+ expect(tracker).to receive(:set_prerun_tests).with(test_file_paths)
47
+
40
48
  expect(Rake::Task).to receive(:[]).with('knapsack_pro:rspec_run').at_least(1).and_return(task)
41
49
 
42
50
  t = double
@@ -11,16 +11,20 @@ describe KnapsackPro::Runners::SpinachRunner do
11
11
  before do
12
12
  stub_const("ENV", { 'KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH' => 'spinach-token' })
13
13
 
14
+ expect(KnapsackPro::Config::Env).to receive(:set_test_runner_adapter).with(KnapsackPro::Adapters::SpinachAdapter)
15
+
14
16
  expect(described_class).to receive(:new)
15
17
  .with(KnapsackPro::Adapters::SpinachAdapter).and_return(runner)
16
18
  end
17
19
 
18
20
  context 'when test files were returned by Knapsack Pro API' do
19
- let(:stringify_test_file_paths) { 'features/a.feature features/b.feature' }
21
+ let(:test_file_paths) { ['features/a.feature', 'features/b.feature'] }
22
+ let(:stringify_test_file_paths) { test_file_paths.join(' ') }
20
23
  let(:test_dir) { 'fake-test-dir' }
21
24
  let(:runner) do
22
25
  instance_double(described_class,
23
26
  test_dir: test_dir,
27
+ test_file_paths: test_file_paths,
24
28
  stringify_test_file_paths: stringify_test_file_paths,
25
29
  test_files_to_execute_exist?: true)
26
30
  end
@@ -29,6 +33,10 @@ describe KnapsackPro::Runners::SpinachRunner do
29
33
  before do
30
34
  expect(KnapsackPro::Adapters::SpinachAdapter).to receive(:verify_bind_method_called)
31
35
 
36
+ tracker = instance_double(KnapsackPro::Tracker)
37
+ expect(KnapsackPro).to receive(:tracker).and_return(tracker)
38
+ expect(tracker).to receive(:set_prerun_tests).with(test_file_paths)
39
+
32
40
  expect(Kernel).to receive(:system).with('KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=spinach-token bundle exec spinach --custom-arg --features_path fake-test-dir -- features/a.feature features/b.feature')
33
41
 
34
42
  allow(described_class).to receive(:child_status).and_return(child_status)
@@ -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,
@@ -27,7 +27,7 @@ describe KnapsackPro::SlowTestFileDeterminer do
27
27
  end
28
28
 
29
29
  describe '.save_to_json_report', :clear_tmp do
30
- let(:json_report_path) { 'tmp/knapsack_pro/slow_test_file_determiner/slow_test_files_node_0.json' }
30
+ let(:json_report_path) { '.knapsack_pro/slow_test_file_determiner/slow_test_files_node_0.json' }
31
31
  let(:test_files) do
32
32
  [
33
33
  { 'path' => 'a_spec.rb', 'time_execution' => 1.0 },
@@ -67,7 +67,7 @@ describe KnapsackPro::SlowTestFileDeterminer do
67
67
 
68
68
  context 'when json report does not exist' do
69
69
  it do
70
- expect { subject }.to raise_error(RuntimeError, 'Report with slow test files was not generated yet. If you have enabled split by test cases https://github.com/KnapsackPro/knapsack_pro-ruby#split-test-files-by-test-cases and you see this error it means that your tests accidentally cleaned up tmp/knapsack_pro directory. Please do not remove this directory during tests runtime!')
70
+ expect { subject }.to raise_error(RuntimeError, 'The report with slow test files has not been generated yet. If you have enabled split by test cases https://github.com/KnapsackPro/knapsack_pro-ruby#split-test-files-by-test-cases and you see this error it means that your tests accidentally cleaned up the .knapsack_pro directory. Please do not remove this directory during tests runtime!')
71
71
  end
72
72
  end
73
73
  end
@@ -1,15 +1,17 @@
1
1
  describe KnapsackPro::TestCaseDetectors::RSpecTestExampleDetector do
2
- let(:report_dir) { 'tmp/knapsack_pro/test_case_detectors/rspec' }
3
- let(:report_path) { 'tmp/knapsack_pro/test_case_detectors/rspec/rspec_dry_run_json_report_node_0.json' }
2
+ let(:report_dir) { '.knapsack_pro/test_case_detectors/rspec' }
3
+ let(:report_path) { '.knapsack_pro/test_case_detectors/rspec/rspec_dry_run_json_report_node_0.json' }
4
4
  let(:rspec_test_example_detector) { described_class.new }
5
5
 
6
6
  describe '#generate_json_report' do
7
7
  subject { rspec_test_example_detector.generate_json_report }
8
8
 
9
9
  before do
10
+ expect(KnapsackPro::Config::TempFiles).to receive(:ensure_temp_directory_exists!)
11
+
10
12
  expect(FileUtils).to receive(:mkdir_p).with(report_dir)
11
13
 
12
- expect(File).to receive(:exists?).with(report_path).and_return(true)
14
+ expect(File).to receive(:exist?).with(report_path).and_return(true)
13
15
  expect(File).to receive(:delete).with(report_path)
14
16
 
15
17
  expect(rspec_test_example_detector).to receive(:slow_test_files).and_return(test_file_entities)
@@ -95,7 +97,7 @@ describe KnapsackPro::TestCaseDetectors::RSpecTestExampleDetector do
95
97
 
96
98
  context 'when JSON report exists' do
97
99
  it do
98
- expect(File).to receive(:exists?).with(report_path).and_return(true)
100
+ expect(File).to receive(:exist?).with(report_path).and_return(true)
99
101
 
100
102
  json_file = {
101
103
  'examples' => [
@@ -114,9 +116,9 @@ describe KnapsackPro::TestCaseDetectors::RSpecTestExampleDetector do
114
116
 
115
117
  context 'when JSON report does not exist' do
116
118
  it do
117
- expect(File).to receive(:exists?).with(report_path).and_return(false)
119
+ expect(File).to receive(:exist?).with(report_path).and_return(false)
118
120
 
119
- expect { subject }.to raise_error(RuntimeError, 'No report found at tmp/knapsack_pro/test_case_detectors/rspec/rspec_dry_run_json_report_node_0.json')
121
+ expect { subject }.to raise_error(RuntimeError, "No report found at .knapsack_pro/test_case_detectors/rspec/rspec_dry_run_json_report_node_0.json")
120
122
  end
121
123
  end
122
124
  end
@@ -1,11 +1,18 @@
1
1
  shared_examples 'default trakcer attributes' do
2
2
  it { expect(tracker.global_time).to eql 0 }
3
3
  it { expect(tracker.test_files_with_time).to eql({}) }
4
+ it { expect(tracker.prerun_tests_loaded).to be false }
4
5
  end
5
6
 
6
7
  describe KnapsackPro::Tracker do
8
+ let(:adapter) { 'RSpecAdapter' }
7
9
  let(:tracker) { described_class.send(:new) }
8
10
 
11
+ before do
12
+ allow(KnapsackPro::Config::Env).to receive(:test_runner_adapter).and_return(adapter)
13
+ allow(KnapsackPro::Config::Env).to receive(:ci_node_index).and_return(0)
14
+ end
15
+
9
16
  it_behaves_like 'default trakcer attributes'
10
17
 
11
18
  describe '#current_test_path' do
@@ -34,6 +41,10 @@ describe KnapsackPro::Tracker do
34
41
  let(:test_paths) { ['a_spec.rb', 'b_spec.rb'] }
35
42
  let(:delta) { 0.02 }
36
43
 
44
+ before do
45
+ tracker.set_prerun_tests(test_paths)
46
+ end
47
+
37
48
  shared_examples '#to_a' do
38
49
  subject { tracker.to_a }
39
50
 
@@ -55,13 +66,14 @@ describe KnapsackPro::Tracker do
55
66
  end
56
67
 
57
68
  it { expect(tracker.global_time).to be_within(delta).of(0.3) }
69
+ it { expect(tracker.prerun_tests_loaded).to be true }
58
70
  it { expect(tracker.test_files_with_time.keys.size).to eql 2 }
59
71
  it { expect(tracker.test_files_with_time['a_spec.rb'][:time_execution]).to be_within(delta).of(0.1) }
60
72
  it { expect(tracker.test_files_with_time['b_spec.rb'][:time_execution]).to be_within(delta).of(0.2) }
61
73
  it_behaves_like '#to_a'
62
74
  end
63
75
 
64
- context "with Timecop - Timecop shouldn't have impact on measured test time" do
76
+ context "with Timecop - Timecop shouldn't have impact on the measured test time" do
65
77
  let(:now) { Time.now }
66
78
 
67
79
  before do
@@ -80,6 +92,7 @@ describe KnapsackPro::Tracker do
80
92
 
81
93
  it { expect(tracker.global_time).to be > 0 }
82
94
  it { expect(tracker.global_time).to be_within(delta).of(0) }
95
+ it { expect(tracker.prerun_tests_loaded).to be true }
83
96
  it { expect(tracker.test_files_with_time.keys.size).to eql 2 }
84
97
  it { expect(tracker.test_files_with_time['a_spec.rb'][:time_execution]).to be_within(delta).of(0) }
85
98
  it { expect(tracker.test_files_with_time['b_spec.rb'][:time_execution]).to be_within(delta).of(0) }
@@ -96,6 +109,7 @@ describe KnapsackPro::Tracker do
96
109
  end
97
110
 
98
111
  it { expect(tracker.global_time).to be > 0 }
112
+ it { expect(tracker.prerun_tests_loaded).to be true }
99
113
  it { expect(tracker.test_files_with_time.keys.size).to eql 2 }
100
114
  it { expect(tracker.test_files_with_time['a_spec.rb'][:time_execution]).to eq 0 }
101
115
  it '2nd spec (b_spec.rb) should have recorded time execution - because start_time was set during first call of stop_timer for the first spec (a_spec.rb)' do
@@ -103,15 +117,62 @@ describe KnapsackPro::Tracker do
103
117
  end
104
118
  it_behaves_like '#to_a'
105
119
  end
120
+
121
+ context 'when a new tracker instance is created' do
122
+ let(:non_pending_test_paths) { ['a_spec.rb', 'b_spec.rb'] }
123
+ let(:test_paths) { non_pending_test_paths + ['pending_spec.rb'] }
124
+
125
+ before do
126
+ # measure tests only for non pending tests
127
+ non_pending_test_paths.each_with_index do |test_path, index|
128
+ tracker.current_test_path = test_path
129
+ tracker.start_timer
130
+ sleep index.to_f / 10 + 0.1
131
+ tracker.stop_timer
132
+ end
133
+ end
134
+
135
+ it '2nd tracker instance loads prerun tests from the disk' do
136
+ expect(tracker.prerun_tests_loaded).to be true
137
+ expect(tracker.to_a.size).to eq 3
138
+ expect(tracker.to_a[0][:path]).to eq 'a_spec.rb'
139
+ expect(tracker.to_a[0][:time_execution]).to be >= 0
140
+ expect(tracker.to_a[1][:path]).to eq 'b_spec.rb'
141
+ expect(tracker.to_a[1][:time_execution]).to be >= 0
142
+ expect(tracker.to_a[2][:path]).to eq 'pending_spec.rb'
143
+ expect(tracker.to_a[2][:time_execution]).to eq 0
144
+
145
+ tracker2 = described_class.send(:new)
146
+ expect(tracker2.prerun_tests_loaded).to be false
147
+ expect(tracker2.to_a.size).to eq 3
148
+ expect(tracker2.to_a[0][:path]).to eq 'a_spec.rb'
149
+ expect(tracker2.to_a[0][:time_execution]).to be >= 0
150
+ expect(tracker2.to_a[1][:path]).to eq 'b_spec.rb'
151
+ expect(tracker2.to_a[1][:time_execution]).to be >= 0
152
+ expect(tracker2.to_a[2][:path]).to eq 'pending_spec.rb'
153
+ expect(tracker2.to_a[2][:time_execution]).to eq 0
154
+ expect(tracker2.prerun_tests_loaded).to be true
155
+ end
156
+ end
106
157
  end
107
158
 
108
159
  describe '#reset!' do
160
+ let(:test_file_path) { 'a_spec.rb' }
161
+
109
162
  before do
110
- tracker.current_test_path = 'a_spec.rb'
163
+ tracker.set_prerun_tests([test_file_path])
164
+ end
165
+
166
+ before do
167
+ expect(tracker.prerun_tests_loaded).to be true
168
+
169
+ tracker.current_test_path = test_file_path
111
170
  tracker.start_timer
112
171
  sleep 0.1
113
172
  tracker.stop_timer
173
+
114
174
  expect(tracker.global_time).not_to eql 0
175
+
115
176
  tracker.reset!
116
177
  end
117
178
 
@@ -120,5 +181,9 @@ describe KnapsackPro::Tracker do
120
181
  it "global time since beginning won't be reset" do
121
182
  expect(tracker.global_time_since_beginning).to be >= 0.1
122
183
  end
184
+
185
+ it 'resets prerun_tests_loaded to false' do
186
+ expect(tracker.prerun_tests_loaded).to be false
187
+ end
123
188
  end
124
189
  end
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,8 @@ require 'knapsack_pro'
16
16
 
17
17
  Dir["#{KnapsackPro.root}/spec/{support,fixtures}/**/*.rb"].each { |f| require f }
18
18
 
19
+ KNAPSACK_PRO_TMP_DIR = File.join(KnapsackPro.root, '.knapsack_pro')
20
+
19
21
  RSpec.configure do |config|
20
22
  config.order = :random
21
23
  config.mock_with :rspec do |mocks|
@@ -29,13 +31,14 @@ RSpec.configure do |config|
29
31
 
30
32
  config.before(:each) do
31
33
  if RSpec.current_example.metadata[:clear_tmp]
32
- FileUtils.mkdir_p(File.join(KnapsackPro.root, 'tmp'))
34
+ FileUtils.rm_r(KNAPSACK_PRO_TMP_DIR) if File.exist?(KNAPSACK_PRO_TMP_DIR)
35
+ FileUtils.mkdir_p(KNAPSACK_PRO_TMP_DIR)
33
36
  end
34
37
  end
35
38
 
36
39
  config.after(:each) do
37
40
  if RSpec.current_example.metadata[:clear_tmp]
38
- FileUtils.rm_r(File.join(KnapsackPro.root, 'tmp'))
41
+ FileUtils.rm_r(KNAPSACK_PRO_TMP_DIR) if File.exist?(KNAPSACK_PRO_TMP_DIR)
39
42
  end
40
43
  end
41
44
  end
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.1
4
+ version: 3.1.1
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-22 00:00:00.000000000 Z
11
+ date: 2021-09-10 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
@@ -239,6 +233,7 @@ files:
239
233
  - lib/knapsack_pro/config/ci/travis.rb
240
234
  - lib/knapsack_pro/config/env.rb
241
235
  - lib/knapsack_pro/config/env_generator.rb
236
+ - lib/knapsack_pro/config/temp_files.rb
242
237
  - lib/knapsack_pro/crypto/branch_encryptor.rb
243
238
  - lib/knapsack_pro/crypto/decryptor.rb
244
239
  - lib/knapsack_pro/crypto/digestor.rb
@@ -334,6 +329,7 @@ files:
334
329
  - spec/knapsack_pro/config/ci/travis_spec.rb
335
330
  - spec/knapsack_pro/config/env_generator_spec.rb
336
331
  - spec/knapsack_pro/config/env_spec.rb
332
+ - spec/knapsack_pro/config/temp_files_spec.rb
337
333
  - spec/knapsack_pro/crypto/branch_encryptor_spec.rb
338
334
  - spec/knapsack_pro/crypto/decryptor_spec.rb
339
335
  - spec/knapsack_pro/crypto/digestor_spec.rb
@@ -409,7 +405,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
409
405
  - !ruby/object:Gem::Version
410
406
  version: '0'
411
407
  requirements: []
412
- rubygems_version: 3.2.15
408
+ rubygems_version: 3.2.22
413
409
  signing_key:
414
410
  specification_version: 4
415
411
  summary: Knapsack Pro splits tests across parallel CI nodes and ensures each parallel
@@ -455,6 +451,7 @@ test_files:
455
451
  - spec/knapsack_pro/config/ci/travis_spec.rb
456
452
  - spec/knapsack_pro/config/env_generator_spec.rb
457
453
  - spec/knapsack_pro/config/env_spec.rb
454
+ - spec/knapsack_pro/config/temp_files_spec.rb
458
455
  - spec/knapsack_pro/crypto/branch_encryptor_spec.rb
459
456
  - spec/knapsack_pro/crypto/decryptor_spec.rb
460
457
  - spec/knapsack_pro/crypto/digestor_spec.rb