rspeed 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/rspeed.rb +1 -0
- data/lib/rspeed/env.rb +1 -1
- data/lib/rspeed/logger.rb +11 -0
- data/lib/rspeed/observer.rb +2 -2
- data/lib/rspeed/redis.rb +1 -1
- data/lib/rspeed/runner.rb +4 -2
- data/lib/rspeed/splitter.rb +9 -10
- data/lib/rspeed/version.rb +1 -1
- data/spec/models/rspeed/env/pipes_spec.rb +7 -29
- data/spec/models/rspeed/observer/after_suite_spec.rb +33 -9
- data/spec/models/rspeed/redis/{clean_pipes_flag_spec.rb → clean_spec.rb} +3 -5
- data/spec/models/rspeed/runner/run_spec.rb +25 -8
- data/spec/models/rspeed/splitter/append_question_spec.rb +37 -0
- data/spec/models/rspeed/splitter/need_warm_question_spec.rb +37 -0
- metadata +9 -6
- data/spec/models/rspeed/splitter/redundant_run_spec.rb +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de6e5d6c3ca630b15b835939ec2b01adbeec526480efde16052c294f297457af
|
4
|
+
data.tar.gz: 4c4d1efdf65c9f4c01106f1fe109d8ffb2160e40b6f90813b4bdc813061613dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ab45f421853bee217c88cfad0efd5d2bd16b9968b17b7676593b4ae0a2e708ac6b646f40845b8f186adfc000c505cef4e95f77c7c8273e6964203b0de22420a
|
7
|
+
data.tar.gz: 7e32c34c76fcdaff18e2aa2726c232d42c32fb4e3fc55b452f0d9b62f2dff0e5f458acd4c3dbacae75b5ca0c330e4b2792618179675c11adcf8aa566d13106c9
|
data/CHANGELOG.md
CHANGED
data/lib/rspeed.rb
CHANGED
data/lib/rspeed/env.rb
CHANGED
data/lib/rspeed/observer.rb
CHANGED
@@ -17,13 +17,13 @@ module RSpeed
|
|
17
17
|
def after_suite(splitter = ::RSpeed::Splitter.new)
|
18
18
|
RSpeed::Redis.set(RSpeed::Variable.pipe_name, true)
|
19
19
|
|
20
|
-
splitter.append
|
20
|
+
splitter.append if splitter.append?
|
21
21
|
|
22
22
|
return unless RSpeed::Redis.specs_finished?
|
23
23
|
|
24
24
|
splitter.rename
|
25
25
|
|
26
|
-
RSpeed::Redis.
|
26
|
+
RSpeed::Redis.clean
|
27
27
|
end
|
28
28
|
|
29
29
|
def before(example)
|
data/lib/rspeed/redis.rb
CHANGED
data/lib/rspeed/runner.rb
CHANGED
@@ -5,9 +5,11 @@ module RSpeed
|
|
5
5
|
module_function
|
6
6
|
|
7
7
|
def run(shell, splitter: ::RSpeed::Splitter.new)
|
8
|
-
return if splitter.
|
8
|
+
return shell.call(['bundle exec rspec', splitter.pipe_files].compact.join(' ')) if splitter.need_warm?
|
9
9
|
|
10
|
-
|
10
|
+
RSpeed::Logger.log("Pipe #{RSpeed::Env.pipe} skipped. Only Pipe 1 can warm.")
|
11
|
+
|
12
|
+
RSpeed::Observer.after_suite
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/rspeed/splitter.rb
CHANGED
@@ -25,6 +25,10 @@ module RSpeed
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
def append?
|
29
|
+
RSpeed::Redis.result? || first_pipe?
|
30
|
+
end
|
31
|
+
|
28
32
|
def append(files = CSV.read(RSpeed::Variable::CSV))
|
29
33
|
files.each do |time, file|
|
30
34
|
redis.lpush(RSpeed::Env.tmp_key, { file: file, time: time.to_f }.to_json)
|
@@ -52,16 +56,16 @@ module RSpeed
|
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
59
|
+
def need_warm?
|
60
|
+
first_pipe? && !RSpeed::Redis.result?
|
61
|
+
end
|
62
|
+
|
55
63
|
def pipe_files
|
56
64
|
return unless RSpeed::Redis.result?
|
57
65
|
|
58
66
|
split[RSpeed::Variable.key(RSpeed::Env.pipe)][:files].map { |item| item[:file] }.join(' ')
|
59
67
|
end
|
60
68
|
|
61
|
-
def redundant_run?
|
62
|
-
!first_pipe? && !exists?(RSpeed::Env.result_key)
|
63
|
-
end
|
64
|
-
|
65
69
|
def rename
|
66
70
|
redis.rename(RSpeed::Env.tmp_key, RSpeed::Env.result_key)
|
67
71
|
end
|
@@ -96,11 +100,6 @@ module RSpeed
|
|
96
100
|
end
|
97
101
|
end
|
98
102
|
|
99
|
-
# TODO: exists? does not work: undefined method `>' for false:FalseClass
|
100
|
-
def exists?(key)
|
101
|
-
redis.keys.include?(key)
|
102
|
-
end
|
103
|
-
|
104
103
|
def redis
|
105
104
|
@redis ||= ::RSpeed::Redis.client
|
106
105
|
end
|
@@ -124,7 +123,7 @@ module RSpeed
|
|
124
123
|
end
|
125
124
|
|
126
125
|
def stream(type, data)
|
127
|
-
|
126
|
+
RSpeed::Logger.log("PIPE: #{RSpeed::Env.pipe} with #{type}: #{data}")
|
128
127
|
end
|
129
128
|
end
|
130
129
|
end
|
data/lib/rspeed/version.rb
CHANGED
@@ -3,39 +3,17 @@
|
|
3
3
|
require 'support/env_mock'
|
4
4
|
|
5
5
|
RSpec.describe RSpeed::Env, '.pipes' do
|
6
|
-
context 'when
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
it 'returns number 1' do
|
11
|
-
EnvMock.mock(rspeed_pipes: '2') do
|
12
|
-
expect(described_class.pipes).to be(1)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'when env is not setted' do
|
18
|
-
it 'returns number 1' do
|
19
|
-
expect(described_class.pipes).to be(1)
|
6
|
+
context 'when env is setted' do
|
7
|
+
it 'returns the env value' do
|
8
|
+
EnvMock.mock(rspeed_pipes: '2') do
|
9
|
+
expect(described_class.pipes).to be(2)
|
20
10
|
end
|
21
11
|
end
|
22
12
|
end
|
23
13
|
|
24
|
-
context 'when
|
25
|
-
|
26
|
-
|
27
|
-
context 'when env is setted' do
|
28
|
-
it 'returns the env value as integer' do
|
29
|
-
EnvMock.mock(rspeed_pipes: '2') do
|
30
|
-
expect(described_class.pipes).to be(2)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'when env is not setted' do
|
36
|
-
it 'returns number 1' do
|
37
|
-
expect(described_class.pipes).to be(1)
|
38
|
-
end
|
14
|
+
context 'when env is not setted' do
|
15
|
+
it 'returns number 1' do
|
16
|
+
expect(described_class.pipes).to be(1)
|
39
17
|
end
|
40
18
|
end
|
41
19
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.describe RSpeed::Observer, '.
|
3
|
+
RSpec.describe RSpeed::Observer, '.after_suite' do
|
4
4
|
let!(:splitter) { instance_double('RSpeed::Splitter') }
|
5
5
|
|
6
6
|
before do
|
@@ -8,27 +8,51 @@ RSpec.describe RSpeed::Observer, '.after' do
|
|
8
8
|
allow(splitter).to receive(:append)
|
9
9
|
end
|
10
10
|
|
11
|
-
context 'when
|
12
|
-
before
|
11
|
+
context 'when append? returns true' do
|
12
|
+
before do
|
13
|
+
allow(splitter).to receive(:append?).and_return(true)
|
14
|
+
allow(splitter).to receive(:rename)
|
15
|
+
end
|
13
16
|
|
14
|
-
it '
|
17
|
+
it 'appends the time result on tmp key' do
|
15
18
|
described_class.after_suite
|
16
19
|
|
17
|
-
expect(
|
20
|
+
expect(splitter).to have_received(:append)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when append? returns false' do
|
25
|
+
before do
|
26
|
+
allow(splitter).to receive(:append?).and_return(false)
|
27
|
+
allow(splitter).to receive(:rename)
|
18
28
|
end
|
19
29
|
|
20
|
-
it '
|
30
|
+
it 'does not append the time result on tmp key' do
|
21
31
|
described_class.after_suite
|
22
32
|
|
23
|
-
expect(splitter).
|
33
|
+
expect(splitter).not_to have_received(:append)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when all specs is not finished' do
|
38
|
+
before do
|
39
|
+
allow(splitter).to receive(:append?)
|
40
|
+
allow(RSpeed::Redis).to receive(:specs_finished?).and_return(false)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'sets true on pipe key to indicates that its finished' do
|
44
|
+
described_class.after_suite
|
45
|
+
|
46
|
+
expect(RSpeed::Redis.get('rspeed_pipe_1')).to eq('true')
|
24
47
|
end
|
25
48
|
end
|
26
49
|
|
27
50
|
context 'when all specs finished' do
|
28
51
|
before do
|
52
|
+
allow(splitter).to receive(:append?)
|
29
53
|
allow(RSpeed::Redis).to receive(:specs_finished?).and_return(true)
|
30
54
|
allow(splitter).to receive(:rename)
|
31
|
-
allow(RSpeed::Redis).to receive(:
|
55
|
+
allow(RSpeed::Redis).to receive(:clean)
|
32
56
|
end
|
33
57
|
|
34
58
|
it 'renames the tmp data to the permanent key result' do
|
@@ -40,7 +64,7 @@ RSpec.describe RSpeed::Observer, '.after' do
|
|
40
64
|
it 'destroyes pipe finished flag keys' do
|
41
65
|
described_class.after_suite
|
42
66
|
|
43
|
-
expect(RSpeed::Redis).to have_received(:
|
67
|
+
expect(RSpeed::Redis).to have_received(:clean)
|
44
68
|
end
|
45
69
|
end
|
46
70
|
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.describe RSpeed::Redis, '.
|
4
|
-
|
3
|
+
RSpec.describe RSpeed::Redis, '.clean' do
|
4
|
+
it 'destroys all keys that keeps the pipe finished info' do
|
5
5
|
described_class.set('rspeed_pipe_1', true)
|
6
6
|
described_class.set('rspeed_pipe_2', true)
|
7
|
-
end
|
8
7
|
|
9
|
-
|
10
|
-
described_class.clean_pipes_flag
|
8
|
+
described_class.clean
|
11
9
|
|
12
10
|
expect(described_class.keys('*')).to eq([])
|
13
11
|
end
|
@@ -4,20 +4,31 @@ RSpec.describe RSpeed::Runner, '#run' do
|
|
4
4
|
let!(:shell) { double('shell') }
|
5
5
|
let!(:splitter) { instance_double('RSpeed::Splitter') }
|
6
6
|
|
7
|
-
before
|
7
|
+
before do
|
8
|
+
allow(shell).to receive(:call)
|
9
|
+
allow(RSpeed::Splitter).to receive(:new).and_return(splitter)
|
10
|
+
allow(RSpeed::Observer).to receive(:after_suite)
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when does not need warm' do
|
14
|
+
before { allow(splitter).to receive(:need_warm?).and_return(false) }
|
8
15
|
|
9
|
-
|
10
|
-
|
16
|
+
it 'does not run the specs' do
|
17
|
+
described_class.run(shell)
|
11
18
|
|
12
|
-
|
13
|
-
|
19
|
+
expect(shell).not_to have_received(:call)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'executes the after suite to complete the current pipe' do
|
23
|
+
described_class.run(shell)
|
24
|
+
|
25
|
+
expect(RSpeed::Observer).to have_received(:after_suite)
|
14
26
|
end
|
15
27
|
end
|
16
28
|
|
17
|
-
context 'when
|
29
|
+
context 'when need warm' do
|
18
30
|
before do
|
19
|
-
allow(splitter).to receive(:
|
20
|
-
allow(shell).to receive(:call)
|
31
|
+
allow(splitter).to receive(:need_warm?).and_return(true)
|
21
32
|
allow(splitter).to receive(:pipe_files).and_return('spec_1.rb spec_2.rb')
|
22
33
|
end
|
23
34
|
|
@@ -26,5 +37,11 @@ RSpec.describe RSpeed::Runner, '#run' do
|
|
26
37
|
|
27
38
|
expect(shell).to have_received(:call).with('bundle exec rspec spec_1.rb spec_2.rb')
|
28
39
|
end
|
40
|
+
|
41
|
+
it 'does not execute the after suite to complete the current pipe' do
|
42
|
+
described_class.run(shell)
|
43
|
+
|
44
|
+
expect(RSpeed::Observer).not_to have_received(:after_suite)
|
45
|
+
end
|
29
46
|
end
|
30
47
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Splitter, '#append?' do
|
4
|
+
subject(:splitter) { described_class.new }
|
5
|
+
|
6
|
+
context 'when has no result' do
|
7
|
+
before { allow(RSpeed::Redis).to receive(:result?).and_return(false) }
|
8
|
+
|
9
|
+
context 'when is not the first pipe' do
|
10
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(false) }
|
11
|
+
|
12
|
+
it { expect(splitter.append?).to be(false) }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when is the first pipe' do
|
16
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(true) }
|
17
|
+
|
18
|
+
it { expect(splitter.append?).to be(true) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when has result' do
|
23
|
+
before { allow(RSpeed::Redis).to receive(:result?).and_return(true) }
|
24
|
+
|
25
|
+
context 'when is not the first pipe' do
|
26
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(false) }
|
27
|
+
|
28
|
+
it { expect(splitter.append?).to be(true) }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when is the first pipe' do
|
32
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(true) }
|
33
|
+
|
34
|
+
it { expect(splitter.append?).to be(true) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Splitter, '#need_warm?' do
|
4
|
+
subject(:splitter) { described_class.new }
|
5
|
+
|
6
|
+
context 'when has no result' do
|
7
|
+
before { allow(RSpeed::Redis).to receive(:result?).and_return(false) }
|
8
|
+
|
9
|
+
context 'when is not the first pipe' do
|
10
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(false) }
|
11
|
+
|
12
|
+
it { expect(splitter.need_warm?).to be(false) }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when is the first pipe' do
|
16
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(true) }
|
17
|
+
|
18
|
+
it { expect(splitter.need_warm?).to be(true) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when has result' do
|
23
|
+
before { allow(RSpeed::Redis).to receive(:result?).and_return(true) }
|
24
|
+
|
25
|
+
context 'when is not the first pipe' do
|
26
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(false) }
|
27
|
+
|
28
|
+
it { expect(splitter.need_warm?).to be(false) }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when is the first pipe' do
|
32
|
+
before { allow(splitter).to receive(:first_pipe?).and_return(true) }
|
33
|
+
|
34
|
+
it { expect(splitter.need_warm?).to be(false) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- lib/rspeed.rb
|
168
168
|
- lib/rspeed/env.rb
|
169
169
|
- lib/rspeed/extension.rb
|
170
|
+
- lib/rspeed/logger.rb
|
170
171
|
- lib/rspeed/observer.rb
|
171
172
|
- lib/rspeed/redis.rb
|
172
173
|
- lib/rspeed/runner.rb
|
@@ -191,7 +192,7 @@ files:
|
|
191
192
|
- spec/models/rspeed/observer/after_suite_spec.rb
|
192
193
|
- spec/models/rspeed/observer/before_spec.rb
|
193
194
|
- spec/models/rspeed/observer/before_suite_spec.rb
|
194
|
-
- spec/models/rspeed/redis/
|
195
|
+
- spec/models/rspeed/redis/clean_spec.rb
|
195
196
|
- spec/models/rspeed/redis/client_spec.rb
|
196
197
|
- spec/models/rspeed/redis/destroy_spec.rb
|
197
198
|
- spec/models/rspeed/redis/get_spec.rb
|
@@ -202,12 +203,13 @@ files:
|
|
202
203
|
- spec/models/rspeed/redis/specs_initiated_spec.rb
|
203
204
|
- spec/models/rspeed/runner/run_spec.rb
|
204
205
|
- spec/models/rspeed/splitter/actual_examples_spec.rb
|
206
|
+
- spec/models/rspeed/splitter/append_question_spec.rb
|
205
207
|
- spec/models/rspeed/splitter/append_spec.rb
|
206
208
|
- spec/models/rspeed/splitter/diff_spec.rb
|
207
209
|
- spec/models/rspeed/splitter/first_pipe_spec.rb
|
208
210
|
- spec/models/rspeed/splitter/get_spec.rb
|
211
|
+
- spec/models/rspeed/splitter/need_warm_question_spec.rb
|
209
212
|
- spec/models/rspeed/splitter/pipe_files_spec.rb
|
210
|
-
- spec/models/rspeed/splitter/redundant_run_spec.rb
|
211
213
|
- spec/models/rspeed/splitter/rename_spec.rb
|
212
214
|
- spec/models/rspeed/splitter/split_spec.rb
|
213
215
|
- spec/models/rspeed/variable/append_name_spec.rb
|
@@ -258,10 +260,10 @@ test_files:
|
|
258
260
|
- spec/models/rspeed/variable/pipe_name_spec.rb
|
259
261
|
- spec/models/rspeed/redis/destroy_spec.rb
|
260
262
|
- spec/models/rspeed/redis/get_spec.rb
|
263
|
+
- spec/models/rspeed/redis/clean_spec.rb
|
261
264
|
- spec/models/rspeed/redis/client_spec.rb
|
262
265
|
- spec/models/rspeed/redis/specs_finished_spec.rb
|
263
266
|
- spec/models/rspeed/redis/set_spec.rb
|
264
|
-
- spec/models/rspeed/redis/clean_pipes_flag_spec.rb
|
265
267
|
- spec/models/rspeed/redis/specs_initiated_spec.rb
|
266
268
|
- spec/models/rspeed/redis/result_spec.rb
|
267
269
|
- spec/models/rspeed/redis/keys_spec.rb
|
@@ -270,11 +272,12 @@ test_files:
|
|
270
272
|
- spec/models/rspeed/splitter/actual_examples_spec.rb
|
271
273
|
- spec/models/rspeed/splitter/get_spec.rb
|
272
274
|
- spec/models/rspeed/splitter/rename_spec.rb
|
273
|
-
- spec/models/rspeed/splitter/
|
275
|
+
- spec/models/rspeed/splitter/need_warm_question_spec.rb
|
274
276
|
- spec/models/rspeed/splitter/pipe_files_spec.rb
|
275
277
|
- spec/models/rspeed/splitter/first_pipe_spec.rb
|
276
278
|
- spec/models/rspeed/splitter/diff_spec.rb
|
277
279
|
- spec/models/rspeed/splitter/split_spec.rb
|
280
|
+
- spec/models/rspeed/splitter/append_question_spec.rb
|
278
281
|
- spec/models/rspeed/observer/before_suite_spec.rb
|
279
282
|
- spec/models/rspeed/observer/before_spec.rb
|
280
283
|
- spec/models/rspeed/observer/after_suite_spec.rb
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe RSpeed::Splitter, '.redundant_run?' do
|
4
|
-
subject(:splitter) { described_class.new }
|
5
|
-
|
6
|
-
context 'when is not pipe 1' do
|
7
|
-
before { allow(RSpeed::Env).to receive(:pipe).and_return(2) }
|
8
|
-
|
9
|
-
context 'when result key exists' do
|
10
|
-
let!(:redis) { redis_object }
|
11
|
-
|
12
|
-
before do
|
13
|
-
redis.set('rspeed', '{}')
|
14
|
-
|
15
|
-
allow(RSpeed::Env).to receive(:pipe).and_return(2)
|
16
|
-
end
|
17
|
-
|
18
|
-
it { expect(splitter.redundant_run?).to be(false) }
|
19
|
-
end
|
20
|
-
|
21
|
-
context 'when result key does not exist' do
|
22
|
-
it { expect(splitter.redundant_run?).to be(true) }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when is the first pipe' do
|
27
|
-
before { allow(RSpeed::Env).to receive(:pipe).and_return(1) }
|
28
|
-
|
29
|
-
context 'when result key exists' do
|
30
|
-
let!(:redis) { redis_object }
|
31
|
-
|
32
|
-
before do
|
33
|
-
redis.set('rspeed', '{}')
|
34
|
-
|
35
|
-
allow(RSpeed::Env).to receive(:pipe).and_return(2)
|
36
|
-
end
|
37
|
-
|
38
|
-
it { expect(splitter.redundant_run?).to be(false) }
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'when result key does not exist' do
|
42
|
-
it { expect(splitter.redundant_run?).to be(false) }
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|