rspeed 0.3.0 → 0.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -0
- data/README.md +10 -7
- data/lib/generators/rspeed/install_generator.rb +1 -1
- data/lib/rspeed.rb +9 -7
- data/lib/rspeed/database.rb +11 -0
- data/lib/rspeed/differ.rb +55 -0
- data/lib/rspeed/env.rb +39 -0
- data/lib/rspeed/extension.rb +3 -2
- data/lib/rspeed/logger.rb +13 -0
- data/lib/rspeed/observer.rb +21 -6
- data/lib/rspeed/redis.rb +72 -0
- data/lib/rspeed/runner.rb +4 -15
- data/lib/rspeed/splitter.rb +24 -97
- data/lib/rspeed/variable.rb +30 -0
- data/lib/rspeed/version.rb +1 -1
- data/spec/common_helper.rb +10 -0
- data/spec/fixtures/1_spec.rb +9 -0
- data/spec/fixtures/2_spec.rb +5 -0
- data/spec/fixtures/empty.rb +4 -0
- data/spec/models/rspeed/database/result_spec.rb +17 -0
- data/spec/models/rspeed/differ/actual_data_spec.rb +20 -0
- data/spec/models/rspeed/differ/actual_files_spec.rb +20 -0
- data/spec/models/rspeed/differ/added_data_spec.rb +19 -0
- data/spec/models/rspeed/differ/diff_spec.rb +51 -0
- data/spec/models/rspeed/differ/removed_data_spec.rb +20 -0
- data/spec/models/rspeed/differ/removed_time_spec.rb +14 -0
- data/spec/models/rspeed/env/app_spec.rb +17 -0
- data/spec/models/rspeed/env/db_spec.rb +17 -0
- data/spec/models/rspeed/env/host_spec.rb +17 -0
- data/spec/models/rspeed/env/pipe_spec.rb +19 -0
- data/spec/models/rspeed/env/pipes_spec.rb +19 -0
- data/spec/models/rspeed/env/port_spec.rb +17 -0
- data/spec/models/rspeed/env/rspeed_spec.rb +43 -0
- data/spec/models/rspeed/env/spec_path_spec.rb +19 -0
- data/spec/models/rspeed/observer/after_spec.rb +5 -5
- data/spec/models/rspeed/observer/after_suite_spec.rb +35 -0
- data/spec/models/rspeed/observer/before_spec.rb +0 -2
- data/spec/models/rspeed/observer/before_suite_spec.rb +18 -6
- data/spec/models/rspeed/redis/clean_spec.rb +20 -0
- data/spec/models/rspeed/redis/client_spec.rb +7 -0
- data/spec/models/rspeed/redis/destroy_spec.rb +21 -0
- data/spec/models/rspeed/redis/get_spec.rb +11 -0
- data/spec/models/rspeed/redis/keys_spec.rb +13 -0
- data/spec/models/rspeed/redis/list_spec.rb +19 -0
- data/spec/models/rspeed/redis/profiles_content_spec.rb +19 -0
- data/spec/models/rspeed/redis/result_spec.rb +13 -0
- data/spec/models/rspeed/redis/set_spec.rb +11 -0
- data/spec/models/rspeed/redis/specs_finished_spec.rb +19 -0
- data/spec/models/rspeed/redis/specs_initiated_spec.rb +13 -0
- data/spec/models/rspeed/runner/run_spec.rb +73 -0
- data/spec/models/rspeed/splitter/append_spec.rb +8 -28
- data/spec/models/rspeed/splitter/consolidate_spec.rb +23 -0
- data/spec/models/rspeed/splitter/first_pipe_spec.rb +4 -8
- data/spec/models/rspeed/splitter/need_warm_question_spec.rb +35 -0
- data/spec/models/rspeed/splitter/pipe_files_spec.rb +21 -0
- data/spec/models/rspeed/splitter/split_spec.rb +32 -34
- data/spec/models/rspeed/variable/append_app_name_spec.rb +33 -0
- data/spec/models/rspeed/variable/key_spec.rb +15 -0
- data/spec/models/rspeed/variable/pipe_spec.rb +23 -0
- data/spec/models/rspeed/variable/pipes_pattern_spec.rb +5 -0
- data/spec/models/rspeed/variable/profile_pattern_spec.rb +5 -0
- data/spec/models/rspeed/variable/profile_spec.rb +23 -0
- data/spec/models/rspeed/variable/result_spec.rb +19 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/common.rb +13 -0
- data/spec/support/coverage.rb +14 -0
- data/spec/support/env_mock.rb +3 -0
- data/spec/support/fakeredis.rb +3 -0
- metadata +160 -26
- data/spec/models/rspeed/splitter/destroy_spec.rb +0 -33
- data/spec/models/rspeed/splitter/diff_spec.rb +0 -29
- data/spec/models/rspeed/splitter/get_spec.rb +0 -76
- data/spec/models/rspeed/splitter/keys_spec.rb +0 -33
- data/spec/models/rspeed/splitter/last_pipe_spec.rb +0 -21
- data/spec/models/rspeed/splitter/pipe_spec.rb +0 -21
- data/spec/models/rspeed/splitter/pipes_spec.rb +0 -27
- data/spec/models/rspeed/splitter/rename_spec.rb +0 -18
- data/spec/models/rspeed/splitter/result_spec.rb +0 -19
- data/spec/models/rspeed/splitter/save_spec.rb +0 -57
- data/spec/rails_helper.rb +0 -43
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpeed
|
4
|
+
module Variable
|
5
|
+
module_function
|
6
|
+
|
7
|
+
PIPES_PATTERN = 'rspeed:pipe_*'
|
8
|
+
PROFILE_PATTERN = 'rspeed:profile_*'
|
9
|
+
|
10
|
+
def append_app_name(value, plus: nil)
|
11
|
+
[value, RSpeed::Env.app, plus].compact.join('_')
|
12
|
+
end
|
13
|
+
|
14
|
+
def key(number)
|
15
|
+
append_app_name('rspeed', plus: number).to_sym
|
16
|
+
end
|
17
|
+
|
18
|
+
def result
|
19
|
+
append_app_name('rspeed')
|
20
|
+
end
|
21
|
+
|
22
|
+
def pipe
|
23
|
+
append_app_name('rspeed:pipe', plus: format('%02d', RSpeed::Env.pipe))
|
24
|
+
end
|
25
|
+
|
26
|
+
def profile
|
27
|
+
append_app_name('rspeed:profile', plus: format('%02d', RSpeed::Env.pipe))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/rspeed/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Database, '#result' do
|
4
|
+
let!(:redis) { redis_object }
|
5
|
+
|
6
|
+
before do
|
7
|
+
redis.rpush('rspeed', { file: '1_spec.rb', time: 1.0 }.to_json)
|
8
|
+
redis.rpush('rspeed', { file: '2_spec.rb', time: 2.0 }.to_json)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns the results data as json' do
|
12
|
+
expect(described_class.result).to eq [
|
13
|
+
{ file: '1_spec.rb', time: 1.0 },
|
14
|
+
{ file: '2_spec.rb', time: 2.0 },
|
15
|
+
]
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Differ, '#actual_data' do
|
4
|
+
let!(:files) { ['./spec/fixtures/1_spec.rb:4', './spec/fixtures/1_spec.rb:6', './spec/fixtures/new_spec.rb:1'] }
|
5
|
+
|
6
|
+
let!(:result) do
|
7
|
+
[
|
8
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
9
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
10
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: 2.4 },
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns only consolidated data still existent as spec' do
|
15
|
+
expect(described_class.actual_data(files: files, result: result)).to eq [
|
16
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
17
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
18
|
+
]
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Differ, '#actual_files' do
|
4
|
+
it 'returns all examples' do
|
5
|
+
expect(described_class.actual_files(spec_path: './spec/fixtures/**/*_spec.rb')).to eq [
|
6
|
+
'./spec/fixtures/1_spec.rb:4',
|
7
|
+
'./spec/fixtures/1_spec.rb:6',
|
8
|
+
'./spec/fixtures/1_spec.rb:8',
|
9
|
+
'./spec/fixtures/2_spec.rb:4',
|
10
|
+
]
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'does not raise when no file match' do
|
14
|
+
expect(described_class.actual_files(spec_path: './spec/fixtures/**/*_missing.rb')).to eq []
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'does not raise when file is empty' do
|
18
|
+
expect(described_class.actual_files(spec_path: './spec/fixtures/**/empty.rb')).to eq []
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Differ, '#added_data' do
|
4
|
+
let!(:files) { ['./spec/fixtures/1_spec.rb:4', './spec/fixtures/1_spec.rb:6', './spec/fixtures/new_spec.rb:4'] }
|
5
|
+
|
6
|
+
let!(:result) do
|
7
|
+
[
|
8
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
9
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
10
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: 2.4 },
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns the added data files with time as zero since we do not know yet' do
|
15
|
+
expect(described_class.added_data(files: files, result: result)).to eq [
|
16
|
+
{ file: './spec/fixtures/new_spec.rb:4', time: 0 },
|
17
|
+
]
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Differ, '#diff' do
|
6
|
+
let!(:redis) { redis_object }
|
7
|
+
|
8
|
+
before do
|
9
|
+
redis.rpush('rspeed', { file: './spec/fixtures/1_spec.rb:4', time: '1.4' }.to_json)
|
10
|
+
redis.rpush('rspeed', { file: './spec/fixtures/1_spec.rb:6', time: '1.6' }.to_json)
|
11
|
+
redis.rpush('rspeed', { file: './spec/fixtures/1_spec.rb:8', time: '1.8' }.to_json)
|
12
|
+
redis.rpush('rspeed', { file: './spec/fixtures/2_spec.rb:4', time: '2.4' }.to_json)
|
13
|
+
redis.rpush('rspeed', { file: './spec/fixtures/x_spec.rb:1', time: 3 }.to_json)
|
14
|
+
redis.rpush('rspeed', { file: './spec/fixtures/2_spec.rb:666', time: '6' }.to_json)
|
15
|
+
|
16
|
+
File.open('spec/fixtures/new_spec.rb', 'a') { |file| file.write('it') }
|
17
|
+
end
|
18
|
+
|
19
|
+
after { delete_file('spec/fixtures/new_spec.rb') }
|
20
|
+
|
21
|
+
it 'removes removed specs and adds new spec and keeps keeped specs based on rspeed key values' do
|
22
|
+
EnvMock.mock(rspeed_spec_path: './spec/fixtures/*_spec.rb') do
|
23
|
+
expect(described_class.diff).to eq [
|
24
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: '1.4' },
|
25
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: '1.6' },
|
26
|
+
{ file: './spec/fixtures/1_spec.rb:8', time: '1.8' },
|
27
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: '2.4' },
|
28
|
+
{ file: './spec/fixtures/new_spec.rb:1', time: 0 },
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when has duplicated example' do
|
34
|
+
before do
|
35
|
+
redis.rpush('rspeed', { file: './spec/fixtures/1_spec.rb:4', time: '1.4' }.to_json)
|
36
|
+
redis.rpush('rspeed', { file: './spec/fixtures/1_spec.rb:4', time: '1.4' }.to_json)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'is removed' do
|
40
|
+
EnvMock.mock(rspeed_spec_path: './spec/fixtures/*_spec.rb') do
|
41
|
+
expect(described_class.diff).to eq [
|
42
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: '1.4' },
|
43
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: '1.6' },
|
44
|
+
{ file: './spec/fixtures/1_spec.rb:8', time: '1.8' },
|
45
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: '2.4' },
|
46
|
+
{ file: './spec/fixtures/new_spec.rb:1', time: 0 },
|
47
|
+
]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Differ, '#removed_data' do
|
4
|
+
let!(:files) { ['./spec/fixtures/2_spec.rb:4'] }
|
5
|
+
|
6
|
+
let!(:result) do
|
7
|
+
[
|
8
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
9
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
10
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: 2.4 },
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns only removed data' do
|
15
|
+
expect(described_class.removed_data(files: files, result: result)).to eq [
|
16
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
17
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
18
|
+
]
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe RSpeed::Differ, '#removed_time' do
|
4
|
+
let!(:data) do
|
5
|
+
[
|
6
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: 1.4 },
|
7
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: 1.6 },
|
8
|
+
]
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns the sum of removed examples' do
|
12
|
+
expect(described_class.removed_time(data: data)).to be(3.0)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.app' do
|
6
|
+
context 'when env is given' do
|
7
|
+
it 'returns the env value' do
|
8
|
+
EnvMock.mock(rspeed_app: 'app') do
|
9
|
+
expect(described_class.app).to eq('app')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when env is not given' do
|
15
|
+
it { expect(described_class.app).to be(nil) }
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.db' do
|
6
|
+
context 'when key is not setted on env' do
|
7
|
+
it { expect(described_class.db).to be(nil) }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when key is setted on env' do
|
11
|
+
it 'returns env value as integer' do
|
12
|
+
EnvMock.mock(rspeed_db: '10') do
|
13
|
+
expect(described_class.db).to be(10)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.host' do
|
6
|
+
context 'when key is not setted on env' do
|
7
|
+
it { expect(described_class.host).to be(nil) }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when key is setted on env' do
|
11
|
+
it 'returns env value' do
|
12
|
+
EnvMock.mock(rspeed_host: 'localhost') do
|
13
|
+
expect(described_class.host).to eq('localhost')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.pipe' do
|
6
|
+
context 'when pipe env is given' do
|
7
|
+
it 'returns the number of the current pipe as integer' do
|
8
|
+
EnvMock.mock(rspeed_pipe: '2') do
|
9
|
+
expect(described_class.pipe).to be(2)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when pipe env is not given' do
|
15
|
+
it 'returns 1' do
|
16
|
+
expect(described_class.pipe).to be(1)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.pipes' do
|
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)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when env is not setted' do
|
15
|
+
it 'returns number 1' do
|
16
|
+
expect(described_class.pipes).to be(1)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.port' do
|
6
|
+
context 'when key is not setted on env' do
|
7
|
+
it { expect(described_class.port).to be(nil) }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when key is setted on env' do
|
11
|
+
it 'returns env value as integer' do
|
12
|
+
EnvMock.mock(rspeed_port: '6379') do
|
13
|
+
expect(described_class.port).to be(6379)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.rspeed' do
|
6
|
+
context 'when env is given' do
|
7
|
+
context 'when true as string' do
|
8
|
+
it 'true' do
|
9
|
+
EnvMock.mock(rspeed: 'true') do
|
10
|
+
expect(described_class.rspeed).to be(true)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when true' do
|
16
|
+
it 'true' do
|
17
|
+
EnvMock.mock(rspeed: true) do
|
18
|
+
expect(described_class.rspeed).to be(true)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when false as string' do
|
24
|
+
it 'false' do
|
25
|
+
EnvMock.mock(rspeed: 'false') do
|
26
|
+
expect(described_class.rspeed).to be(false)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when false' do
|
32
|
+
it 'false' do
|
33
|
+
EnvMock.mock(rspeed: false) do
|
34
|
+
expect(described_class.rspeed).to be(false)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when env is not given' do
|
41
|
+
it { expect(described_class.rspeed).to be(false) }
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'support/env_mock'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Env, '.spec_path' do
|
6
|
+
context 'when env is given' do
|
7
|
+
it 'is returned' do
|
8
|
+
EnvMock.mock(rspeed_spec_path: './test/**/*test.rb') do
|
9
|
+
expect(described_class.spec_path).to eq('./test/**/*test.rb')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when env is not given' do
|
15
|
+
it 'returns the default' do
|
16
|
+
expect(described_class.spec_path).to eq('./spec/**/*spec.rb')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'rails_helper'
|
4
|
-
|
5
3
|
RSpec.describe RSpeed::Observer, '.after' do
|
6
4
|
let!(:now) { Time.local(2020, 1, 1, 0, 0, 1) }
|
7
5
|
let!(:clock) { class_double(RSpec::Core::Time, now: now) }
|
8
6
|
let!(:metadata) { { file_path: 'file_path', line_number: 7, start_at: now - 1 } }
|
9
7
|
let!(:example) { instance_double(RSpec::Core::Example, clock: clock, metadata: metadata) }
|
10
8
|
|
11
|
-
before {
|
9
|
+
before { truncate_profiles }
|
12
10
|
|
13
|
-
it 'appends the
|
11
|
+
it 'appends the file and time on pipe profile key' do
|
14
12
|
described_class.after(example)
|
15
13
|
|
16
|
-
expect(
|
14
|
+
expect(RSpeed::Redis.client.lrange(RSpeed::Variable.profile, 0, -1)).to eq [
|
15
|
+
{ file: 'file_path:7', time: 1.0 }.to_json,
|
16
|
+
]
|
17
17
|
end
|
18
18
|
end
|