knapsack_pro 0.55.1 → 0.55.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4afbe1e45d6ffd55d9607efb2581b3d2b86579fcd45e906d6c21c72c84da44b
4
- data.tar.gz: 02455cfa2cf0876f44a71970a2fc4d4da4c4b49966098cffb7666ed3616ce970
3
+ metadata.gz: 659ee8cc41fe02f9756a80b1df0611052ef20132cb64afc909d050c3c438e5f0
4
+ data.tar.gz: 9c5f97c7a0606a936512542aea04d84aa21e23806215cdbba0445651eef354e2
5
5
  SHA512:
6
- metadata.gz: 550f293d96680b1834ad29cf6ac6d44436d30333df2e90d4dcbc452a97a9bf0a1e07cdae624a6197d5eb13339727c9e6ba99301e562d6b1df8f8e94ab8ea01e4
7
- data.tar.gz: 25966fbfc769750abcdbb75ff9884c6b0976c67729295c87ad2ce42b5187acafe053a795c6b3d98e5610a1071478d8e85e46240f9ec2336476684de9265b7272
6
+ metadata.gz: e48213d6111290298b56a7ada4621144279dc6b6e5e435e244c6a65a3f159b5e34297183803341b009a86c09acbe4827e8c9879a87e25f9a494fb5fb5af6d43d
7
+ data.tar.gz: aef93bd34c521290ec5096754b4cd1b531a9e5da828d48237b78d635e1771c63604b4dad88b5808808059fac9da407cddb679e76f219c4359483a1558b6f53e0
@@ -2,6 +2,14 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 0.55.2
6
+
7
+ * Remove recursion in Queue Mode
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/64
10
+
11
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.55.1...v0.55.2
12
+
5
13
  ### 0.55.1
6
14
 
7
15
  * Switch to fallback mode when failed to open TCP connection to API
data/README.md CHANGED
@@ -215,7 +215,7 @@ end
215
215
 
216
216
  # add below when you hook into webmock
217
217
  require 'webmock/rspec'
218
- WebMock.disable_net_connect!(:allow => ['api.knapsackpro.com'])
218
+ WebMock.disable_net_connect!(allow: ['api.knapsackpro.com'])
219
219
 
220
220
  # add below when you use FakeWeb
221
221
  require 'fakeweb'
@@ -745,6 +745,7 @@ Here you can read how to configure [junit formatter](#how-to-use-junit-formatter
745
745
  # spec_helper.rb or rails_helper.rb
746
746
 
747
747
  # TODO This must be the same path as value for rspec --out argument
748
+ # Note the path should not contain sign ~, for instance path ~/project/tmp/rspec.xml may not work. Please use full path instead.
748
749
  TMP_RSPEC_XML_REPORT = 'tmp/rspec.xml'
749
750
  # move results to FINAL_RSPEC_XML_REPORT so the results won't accumulate with duplicated xml tags in TMP_RSPEC_XML_REPORT
750
751
  FINAL_RSPEC_XML_REPORT = 'tmp/rspec_final_results.xml'
@@ -1444,6 +1445,7 @@ The xml report will contain all tests executed across intermediate test subset r
1444
1445
  # spec_helper.rb or rails_helper.rb
1445
1446
 
1446
1447
  # TODO This must be the same path as value for rspec --out argument
1448
+ # Note the path should not contain sign ~, for instance path ~/project/tmp/rspec.xml may not work. Please use full path instead.
1447
1449
  TMP_RSPEC_XML_REPORT = 'tmp/rspec.xml'
1448
1450
  # move results to FINAL_RSPEC_XML_REPORT so the results won't accumulate with duplicated xml tags in TMP_RSPEC_XML_REPORT
1449
1451
  FINAL_RSPEC_XML_REPORT = 'tmp/rspec_final_results.xml'
@@ -1472,6 +1474,7 @@ In below code we use CI node index number in `TMP_RSPEC_XML_REPORT` and `FINAL_R
1472
1474
  # spec_helper.rb or rails_helper.rb
1473
1475
 
1474
1476
  # TODO This must be the same path as value for rspec --out argument
1477
+ # Note the path should not contain sign ~, for instance path ~/project/tmp/rspec.xml may not work. Please use full path instead.
1475
1478
  TMP_RSPEC_XML_REPORT = "tmp/rspec_#{ENV['KNAPSACK_PRO_CI_NODE_INDEX']}.xml"
1476
1479
  # move results to FINAL_RSPEC_XML_REPORT so the results won't accumulate with duplicated xml tags in TMP_RSPEC_XML_REPORT
1477
1480
  FINAL_RSPEC_XML_REPORT = "tmp/rspec_final_results_#{ENV['KNAPSACK_PRO_CI_NODE_INDEX']}.xml"
@@ -17,10 +17,29 @@ module KnapsackPro
17
17
  $LOAD_PATH.unshift(runner.test_dir)
18
18
 
19
19
  cli_args = (args || '').split
20
- run_tests(runner, true, cli_args, 0, [])
20
+
21
+ accumulator = {
22
+ status: :next,
23
+ runner: runner,
24
+ can_initialize_queue: true,
25
+ args: cli_args,
26
+ exitstatus: 0,
27
+ all_test_file_paths: [],
28
+ }
29
+ while accumulator[:status] == :next
30
+ accumulator = run_tests(accumulator)
31
+ end
32
+
33
+ Kernel.exit(accumulator[:exitstatus])
21
34
  end
22
35
 
23
- def self.run_tests(runner, can_initialize_queue, args, exitstatus, all_test_file_paths)
36
+ def self.run_tests(accumulator)
37
+ runner = accumulator.fetch(:runner)
38
+ can_initialize_queue = accumulator.fetch(:can_initialize_queue)
39
+ args = accumulator.fetch(:args)
40
+ exitstatus = accumulator.fetch(:exitstatus)
41
+ all_test_file_paths = accumulator.fetch(:all_test_file_paths)
42
+
24
43
  test_file_paths = runner.test_file_paths(
25
44
  can_initialize_queue: can_initialize_queue,
26
45
  executed_test_files: all_test_file_paths
@@ -30,7 +49,11 @@ module KnapsackPro
30
49
  KnapsackPro::Hooks::Queue.call_after_queue
31
50
 
32
51
  KnapsackPro::Report.save_node_queue_to_api
33
- exit(exitstatus)
52
+
53
+ return {
54
+ status: :completed,
55
+ exitstatus: exitstatus,
56
+ }
34
57
  else
35
58
  subset_queue_id = KnapsackPro::Config::EnvGenerator.set_subset_queue_id
36
59
  ENV['KNAPSACK_PRO_SUBSET_QUEUE_ID'] = subset_queue_id
@@ -46,7 +69,14 @@ module KnapsackPro
46
69
 
47
70
  KnapsackPro::Report.save_subset_queue_to_file
48
71
 
49
- run_tests(runner, false, args, exitstatus, all_test_file_paths)
72
+ return {
73
+ status: :next,
74
+ runner: runner,
75
+ can_initialize_queue: false,
76
+ args: args,
77
+ exitstatus: exitstatus,
78
+ all_test_file_paths: all_test_file_paths,
79
+ }
50
80
  end
51
81
  end
52
82
 
@@ -21,10 +21,29 @@ module KnapsackPro
21
21
  '--format', KnapsackPro::Formatters::RSpecQueueSummaryFormatter.to_s,
22
22
  '--default-path', runner.test_dir,
23
23
  ]
24
- run_tests(runner, true, cli_args, 0, [])
24
+
25
+ accumulator = {
26
+ status: :next,
27
+ runner: runner,
28
+ can_initialize_queue: true,
29
+ args: cli_args,
30
+ exitstatus: 0,
31
+ all_test_file_paths: [],
32
+ }
33
+ while accumulator[:status] == :next
34
+ accumulator = run_tests(accumulator)
35
+ end
36
+
37
+ Kernel.exit(accumulator[:exitstatus])
25
38
  end
26
39
 
27
- def self.run_tests(runner, can_initialize_queue, args, exitstatus, all_test_file_paths)
40
+ def self.run_tests(accumulator)
41
+ runner = accumulator.fetch(:runner)
42
+ can_initialize_queue = accumulator.fetch(:can_initialize_queue)
43
+ args = accumulator.fetch(:args)
44
+ exitstatus = accumulator.fetch(:exitstatus)
45
+ all_test_file_paths = accumulator.fetch(:all_test_file_paths)
46
+
28
47
  test_file_paths = runner.test_file_paths(
29
48
  can_initialize_queue: can_initialize_queue,
30
49
  executed_test_files: all_test_file_paths
@@ -41,7 +60,11 @@ module KnapsackPro
41
60
  KnapsackPro::Hooks::Queue.call_after_queue
42
61
 
43
62
  KnapsackPro::Report.save_node_queue_to_api
44
- exit(exitstatus)
63
+
64
+ return {
65
+ status: :completed,
66
+ exitstatus: exitstatus,
67
+ }
45
68
  else
46
69
  subset_queue_id = KnapsackPro::Config::EnvGenerator.set_subset_queue_id
47
70
  ENV['KNAPSACK_PRO_SUBSET_QUEUE_ID'] = subset_queue_id
@@ -59,7 +82,14 @@ module KnapsackPro
59
82
 
60
83
  KnapsackPro::Hooks::Queue.call_after_subset_queue
61
84
 
62
- run_tests(runner, false, args, exitstatus, all_test_file_paths)
85
+ return {
86
+ status: :next,
87
+ runner: runner,
88
+ can_initialize_queue: false,
89
+ args: args,
90
+ exitstatus: exitstatus,
91
+ all_test_file_paths: all_test_file_paths,
92
+ }
63
93
  end
64
94
  end
65
95
 
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '0.55.1'
2
+ VERSION = '0.55.2'
3
3
  end
@@ -28,10 +28,24 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
28
28
  let(:args) { '--verbose --pride' }
29
29
 
30
30
  it do
31
- result = double
32
- expect(described_class).to receive(:run_tests).with(runner, true, ['--verbose', '--pride'], 0, []).and_return(result)
31
+ expected_exitstatus = 0
32
+ expected_accumulator = {
33
+ status: :completed,
34
+ exitstatus: expected_exitstatus
35
+ }
36
+ accumulator = {
37
+ status: :next,
38
+ runner: runner,
39
+ can_initialize_queue: true,
40
+ args: ['--verbose', '--pride'],
41
+ exitstatus: 0,
42
+ all_test_file_paths: [],
43
+ }
44
+ expect(described_class).to receive(:run_tests).with(accumulator).and_return(expected_accumulator)
45
+
46
+ expect(Kernel).to receive(:exit).with(expected_exitstatus)
33
47
 
34
- expect(subject).to eq result
48
+ subject
35
49
  end
36
50
  end
37
51
 
@@ -39,10 +53,24 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
39
53
  let(:args) { nil }
40
54
 
41
55
  it do
42
- result = double
43
- expect(described_class).to receive(:run_tests).with(runner, true, [], 0, []).and_return(result)
56
+ expected_exitstatus = 0
57
+ expected_accumulator = {
58
+ status: :completed,
59
+ exitstatus: expected_exitstatus
60
+ }
61
+ accumulator = {
62
+ status: :next,
63
+ runner: runner,
64
+ can_initialize_queue: true,
65
+ args: [],
66
+ exitstatus: 0,
67
+ all_test_file_paths: [],
68
+ }
69
+ expect(described_class).to receive(:run_tests).with(accumulator).and_return(expected_accumulator)
70
+
71
+ expect(Kernel).to receive(:exit).with(expected_exitstatus)
44
72
 
45
- expect(subject).to eq result
73
+ subject
46
74
  end
47
75
  end
48
76
  end
@@ -52,11 +80,21 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
52
80
  let(:can_initialize_queue) { double(:can_initialize_queue) }
53
81
  let(:args) { ['--verbose', '--pride'] }
54
82
  let(:exitstatus) { 0 }
83
+ let(:all_test_file_paths) { [] }
84
+ let(:accumulator) do
85
+ {
86
+ runner: runner,
87
+ can_initialize_queue: can_initialize_queue,
88
+ args: args,
89
+ exitstatus: exitstatus,
90
+ all_test_file_paths: all_test_file_paths,
91
+ }
92
+ end
55
93
 
56
- subject { described_class.run_tests(runner, can_initialize_queue, args, exitstatus, []) }
94
+ subject { described_class.run_tests(accumulator) }
57
95
 
58
96
  before do
59
- expect(runner).to receive(:test_file_paths).with(can_initialize_queue: can_initialize_queue, executed_test_files: []).and_return(test_file_paths)
97
+ expect(runner).to receive(:test_file_paths).with(can_initialize_queue: can_initialize_queue, executed_test_files: all_test_file_paths).and_return(test_file_paths)
60
98
  end
61
99
 
62
100
  context 'when test files exist' do
@@ -82,20 +120,20 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
82
120
  expect(KnapsackPro::Hooks::Queue).to receive(:call_after_subset_queue)
83
121
 
84
122
  expect(KnapsackPro::Report).to receive(:save_subset_queue_to_file)
85
-
86
- # second call of run_tests because of recursion
87
- expect(runner).to receive(:test_file_paths).with(can_initialize_queue: false, executed_test_files: ['a_test.rb', 'b_test.rb']).and_return([])
88
123
  end
89
124
 
90
125
  context 'when tests are passing' do
91
126
  let(:is_tests_green) { true }
92
127
 
93
128
  it 'returns exit code 0' do
94
- expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
95
- expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
96
- expect(described_class).to receive(:exit).with(0)
97
-
98
- subject
129
+ expect(subject).to eq({
130
+ status: :next,
131
+ runner: runner,
132
+ can_initialize_queue: false,
133
+ args: args,
134
+ exitstatus: exitstatus,
135
+ all_test_file_paths: test_file_paths,
136
+ })
99
137
  end
100
138
  end
101
139
 
@@ -103,11 +141,14 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
103
141
  let(:is_tests_green) { false }
104
142
 
105
143
  it 'returns exit code 1' do
106
- expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
107
- expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
108
- expect(described_class).to receive(:exit).with(1)
109
-
110
- subject
144
+ expect(subject).to eq({
145
+ status: :next,
146
+ runner: runner,
147
+ can_initialize_queue: false,
148
+ args: args,
149
+ exitstatus: 1, # tests failed
150
+ all_test_file_paths: test_file_paths,
151
+ })
111
152
  end
112
153
  end
113
154
  end
@@ -118,9 +159,11 @@ describe KnapsackPro::Runners::Queue::MinitestRunner do
118
159
  it 'returns exit code 0' do
119
160
  expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
120
161
  expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
121
- expect(described_class).to receive(:exit).with(0)
122
162
 
123
- subject
163
+ expect(subject).to eq({
164
+ status: :completed,
165
+ exitstatus: exitstatus,
166
+ })
124
167
  end
125
168
  end
126
169
  end
@@ -34,10 +34,24 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
34
34
  let(:args) { '--example-arg example-value' }
35
35
 
36
36
  it 'uses default formatter progress' do
37
- result = double
38
- expect(described_class).to receive(:run_tests).with(runner, true, ['--example-arg', 'example-value', '--format', 'progress', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'], 0, []).and_return(result)
37
+ expected_exitstatus = 0
38
+ expected_accumulator = {
39
+ status: :completed,
40
+ exitstatus: expected_exitstatus
41
+ }
42
+ accumulator = {
43
+ status: :next,
44
+ runner: runner,
45
+ can_initialize_queue: true,
46
+ args: ['--example-arg', 'example-value', '--format', 'progress', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'],
47
+ exitstatus: 0,
48
+ all_test_file_paths: [],
49
+ }
50
+ expect(described_class).to receive(:run_tests).with(accumulator).and_return(expected_accumulator)
51
+
52
+ expect(Kernel).to receive(:exit).with(expected_exitstatus)
39
53
 
40
- expect(subject).to eq result
54
+ subject
41
55
  end
42
56
  end
43
57
 
@@ -45,10 +59,24 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
45
59
  let(:args) { '--format documentation' }
46
60
 
47
61
  it 'uses provided format param instead of default formatter progress' do
48
- result = double
49
- expect(described_class).to receive(:run_tests).with(runner, true, ['--format', 'documentation', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'], 0, []).and_return(result)
62
+ expected_exitstatus = 0
63
+ expected_accumulator = {
64
+ status: :completed,
65
+ exitstatus: expected_exitstatus
66
+ }
67
+ accumulator = {
68
+ status: :next,
69
+ runner: runner,
70
+ can_initialize_queue: true,
71
+ args: ['--format', 'documentation', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'],
72
+ exitstatus: 0,
73
+ all_test_file_paths: [],
74
+ }
75
+ expect(described_class).to receive(:run_tests).with(accumulator).and_return(expected_accumulator)
76
+
77
+ expect(Kernel).to receive(:exit).with(expected_exitstatus)
50
78
 
51
- expect(subject).to eq result
79
+ subject
52
80
  end
53
81
  end
54
82
  end
@@ -57,10 +85,24 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
57
85
  let(:args) { nil }
58
86
 
59
87
  it do
60
- result = double
61
- expect(described_class).to receive(:run_tests).with(runner, true, ['--format', 'progress', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'], 0, []).and_return(result)
88
+ expected_exitstatus = 0
89
+ expected_accumulator = {
90
+ status: :completed,
91
+ exitstatus: expected_exitstatus
92
+ }
93
+ accumulator = {
94
+ status: :next,
95
+ runner: runner,
96
+ can_initialize_queue: true,
97
+ args: ['--format', 'progress', '--format', 'KnapsackPro::Formatters::RSpecQueueSummaryFormatter', '--default-path', 'fake-test-dir'],
98
+ exitstatus: 0,
99
+ all_test_file_paths: [],
100
+ }
101
+ expect(described_class).to receive(:run_tests).with(accumulator).and_return(expected_accumulator)
102
+
103
+ expect(Kernel).to receive(:exit).with(expected_exitstatus)
62
104
 
63
- expect(subject).to eq result
105
+ subject
64
106
  end
65
107
  end
66
108
  end
@@ -70,11 +112,21 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
70
112
  let(:can_initialize_queue) { double(:can_initialize_queue) }
71
113
  let(:args) { ['--example-arg', 'example-value', '--default-path', 'fake-test-dir'] }
72
114
  let(:exitstatus) { double }
115
+ let(:all_test_file_paths) { [] }
116
+ let(:accumulator) do
117
+ {
118
+ runner: runner,
119
+ can_initialize_queue: can_initialize_queue,
120
+ args: args,
121
+ exitstatus: exitstatus,
122
+ all_test_file_paths: all_test_file_paths,
123
+ }
124
+ end
73
125
 
74
- subject { described_class.run_tests(runner, can_initialize_queue, args, exitstatus, []) }
126
+ subject { described_class.run_tests(accumulator) }
75
127
 
76
128
  before do
77
- expect(runner).to receive(:test_file_paths).with(can_initialize_queue: can_initialize_queue, executed_test_files: []).and_return(test_file_paths)
129
+ expect(runner).to receive(:test_file_paths).with(can_initialize_queue: can_initialize_queue, executed_test_files: all_test_file_paths).and_return(test_file_paths)
78
130
  end
79
131
 
80
132
  context 'when test files exist' do
@@ -100,49 +152,71 @@ describe KnapsackPro::Runners::Queue::RSpecRunner do
100
152
  expect(described_class).to receive(:rspec_clear_examples)
101
153
 
102
154
  expect(KnapsackPro::Hooks::Queue).to receive(:call_after_subset_queue)
103
-
104
- # second call of run_tests because of recursion
105
- expect(runner).to receive(:test_file_paths).with(can_initialize_queue: false, executed_test_files: ['a_spec.rb', 'b_spec.rb']).and_return([])
106
155
  end
107
156
 
108
157
  context 'when exit code is zero' do
109
158
  let(:exit_code) { 0 }
110
159
 
111
160
  it do
112
- expect(KnapsackPro::Formatters::RSpecQueueSummaryFormatter).to receive(:print_summary)
113
- expect(KnapsackPro::Formatters::RSpecQueueProfileFormatterExtension).to receive(:print_summary)
114
- expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
115
- expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
116
- expect(described_class).to receive(:exit).with(exitstatus)
117
-
118
- subject
161
+ expect(subject).to eq({
162
+ status: :next,
163
+ runner: runner,
164
+ can_initialize_queue: false,
165
+ args: args,
166
+ exitstatus: exitstatus,
167
+ all_test_file_paths: test_file_paths,
168
+ })
119
169
  end
120
170
  end
121
171
 
122
172
  context 'when exit code is not zero' do
123
173
  let(:exit_code) { double }
124
174
 
175
+ it do
176
+ expect(subject).to eq({
177
+ status: :next,
178
+ runner: runner,
179
+ can_initialize_queue: false,
180
+ args: args,
181
+ exitstatus: exit_code,
182
+ all_test_file_paths: test_file_paths,
183
+ })
184
+ end
185
+ end
186
+ end
187
+
188
+ context "when test files don't exist" do
189
+ let(:test_file_paths) { [] }
190
+
191
+ context 'when all_test_file_paths exist' do
192
+ let(:all_test_file_paths) { ['a_spec.rb'] }
193
+
125
194
  it do
126
195
  expect(KnapsackPro::Formatters::RSpecQueueSummaryFormatter).to receive(:print_summary)
127
196
  expect(KnapsackPro::Formatters::RSpecQueueProfileFormatterExtension).to receive(:print_summary)
197
+
128
198
  expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
129
199
  expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
130
- expect(described_class).to receive(:exit).with(exit_code)
131
200
 
132
- subject
201
+ expect(subject).to eq({
202
+ status: :completed,
203
+ exitstatus: exitstatus,
204
+ })
133
205
  end
134
206
  end
135
- end
136
207
 
137
- context "when test files don't exist" do
138
- let(:test_file_paths) { [] }
208
+ context "when all_test_file_paths don't exist" do
209
+ let(:all_test_file_paths) { [] }
139
210
 
140
- it do
141
- expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
142
- expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
143
- expect(described_class).to receive(:exit).with(exitstatus)
211
+ it do
212
+ expect(KnapsackPro::Hooks::Queue).to receive(:call_after_queue)
213
+ expect(KnapsackPro::Report).to receive(:save_node_queue_to_api)
144
214
 
145
- subject
215
+ expect(subject).to eq({
216
+ status: :completed,
217
+ exitstatus: exitstatus,
218
+ })
219
+ end
146
220
  end
147
221
  end
148
222
  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: 0.55.1
4
+ version: 0.55.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-20 00:00:00.000000000 Z
11
+ date: 2018-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake