knapsack_pro 2.18.0 → 3.1.0

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.
Files changed (43) 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 +3 -3
  6. data/knapsack_pro.gemspec +1 -1
  7. data/lib/knapsack_pro.rb +1 -0
  8. data/lib/knapsack_pro/adapters/base_adapter.rb +4 -4
  9. data/lib/knapsack_pro/adapters/rspec_adapter.rb +5 -10
  10. data/lib/knapsack_pro/base_allocator_builder.rb +1 -0
  11. data/lib/knapsack_pro/config/env.rb +8 -1
  12. data/lib/knapsack_pro/config/temp_files.rb +38 -0
  13. data/lib/knapsack_pro/report.rb +7 -8
  14. data/lib/knapsack_pro/runners/cucumber_runner.rb +3 -0
  15. data/lib/knapsack_pro/runners/minitest_runner.rb +3 -0
  16. data/lib/knapsack_pro/runners/queue/cucumber_runner.rb +3 -1
  17. data/lib/knapsack_pro/runners/queue/minitest_runner.rb +3 -1
  18. data/lib/knapsack_pro/runners/queue/rspec_runner.rb +1 -0
  19. data/lib/knapsack_pro/runners/rspec_runner.rb +3 -0
  20. data/lib/knapsack_pro/runners/spinach_runner.rb +3 -0
  21. data/lib/knapsack_pro/runners/test_unit_runner.rb +3 -0
  22. data/lib/knapsack_pro/slow_test_file_determiner.rb +8 -4
  23. data/lib/knapsack_pro/test_case_detectors/rspec_test_example_detector.rb +9 -6
  24. data/lib/knapsack_pro/tracker.rb +56 -1
  25. data/lib/knapsack_pro/version.rb +1 -1
  26. data/spec/knapsack_pro/adapters/base_adapter_spec.rb +9 -7
  27. data/spec/knapsack_pro/adapters/rspec_adapter_spec.rb +20 -24
  28. data/spec/knapsack_pro/config/env_spec.rb +25 -0
  29. data/spec/knapsack_pro/config/temp_files_spec.rb +25 -0
  30. data/spec/knapsack_pro/report_spec.rb +11 -10
  31. data/spec/knapsack_pro/runners/cucumber_runner_spec.rb +9 -1
  32. data/spec/knapsack_pro/runners/minitest_runner_spec.rb +6 -1
  33. data/spec/knapsack_pro/runners/queue/cucumber_runner_spec.rb +2 -0
  34. data/spec/knapsack_pro/runners/queue/minitest_runner_spec.rb +2 -0
  35. data/spec/knapsack_pro/runners/queue/rspec_runner_spec.rb +2 -0
  36. data/spec/knapsack_pro/runners/rspec_runner_spec.rb +9 -1
  37. data/spec/knapsack_pro/runners/spinach_runner_spec.rb +9 -1
  38. data/spec/knapsack_pro/runners/test_unit_runner_spec.rb +6 -1
  39. data/spec/knapsack_pro/slow_test_file_determiner_spec.rb +2 -2
  40. data/spec/knapsack_pro/test_case_detectors/rspec_test_example_detector_spec.rb +8 -6
  41. data/spec/knapsack_pro/tracker_spec.rb +67 -2
  42. data/spec/spec_helper.rb +5 -2
  43. 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.0
4
+ version: 3.1.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-08 00:00:00.000000000 Z
11
+ date: 2021-08-17 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