rspeed 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/rspeed/splitter.rb +45 -26
- data/lib/rspeed/version.rb +1 -1
- data/spec/fixtures/1_spec.rb +9 -0
- data/spec/fixtures/2_spec.rb +5 -0
- data/spec/fixtures/new_spec.rb.csv +1 -0
- data/spec/models/rspeed/observer/after_spec.rb +1 -1
- data/spec/models/rspeed/observer/before_suite_spec.rb +1 -1
- data/spec/models/rspeed/splitter/actual_examples_spec.rb +22 -0
- data/spec/models/rspeed/splitter/append_spec.rb +1 -1
- data/spec/models/rspeed/splitter/diff_spec.rb +15 -12
- data/spec/rails_helper.rb +6 -2
- metadata +9 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f8fbbef694a5ee56e51580e9969e9e8372d4d93d0e5562f4efbad08fb8df854
|
4
|
+
data.tar.gz: b9cefcd95a86536bcd139ef8df7f47674ad0f4205ecfb0c7bc7dd2b5c33b4efd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66a0fba65b3130c9454abad42a8a0e4554fd49711194a74cf7d5d77d37274469500e29f0d6210c53d92f33aa529799d416281c5556f193b9a9c0a96d3b7babbd
|
7
|
+
data.tar.gz: 59399ef9100cc2353a7dc93b53a152289b79aaac9a5c2ace44925a50c517a94196193ebe25ae5a4148861ace0317dfdd2def59b332ab9c717b6d073dad5df0c0
|
data/CHANGELOG.md
CHANGED
data/lib/rspeed/splitter.rb
CHANGED
@@ -1,9 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
module RSpeed
|
3
4
|
class Splitter
|
4
5
|
DEFAULT_PATTERN = 'rspeed_*'
|
5
6
|
|
6
|
-
def
|
7
|
+
def initialize(specs_path: './spec/**/*_spec.rb')
|
8
|
+
@specs_path = specs_path
|
9
|
+
end
|
10
|
+
|
11
|
+
def actual_examples
|
12
|
+
@actual_examples ||= begin
|
13
|
+
[].tap do |examples|
|
14
|
+
Dir[@specs_path].each do |file|
|
15
|
+
data = File.open(file).read
|
16
|
+
lines = data.split("\n")
|
17
|
+
|
18
|
+
lines&.each.with_index do |item, index|
|
19
|
+
examples << "#{file}:#{index + 1}" if item.gsub(/\s+/, '') =~ /^it/
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
stream(:actual_examples, examples)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def append(files = CSV.read('rspeed.csv'))
|
7
29
|
files.each do |time, file|
|
8
30
|
redis.lpush('rspeed_tmp', { file: file, time: time.to_f }.to_json)
|
9
31
|
end
|
@@ -14,6 +36,11 @@ module RSpeed
|
|
14
36
|
end
|
15
37
|
|
16
38
|
def diff
|
39
|
+
actual_data = rspeed_data.select { |item| actual_examples.include?(item[:file]) }
|
40
|
+
added_data = added_examples.map { |item| { file: item, time: 0 } }
|
41
|
+
|
42
|
+
removed_examples # called just for stream for now
|
43
|
+
|
17
44
|
actual_data + added_data
|
18
45
|
end
|
19
46
|
|
@@ -91,44 +118,36 @@ module RSpeed
|
|
91
118
|
|
92
119
|
private
|
93
120
|
|
94
|
-
def
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
def actual_files
|
99
|
-
@actual_files ||= Dir['./spec/**/*_spec.rb']
|
100
|
-
end
|
101
|
-
|
102
|
-
def added_data
|
103
|
-
added_specs.map { |item| { file: item, time: 0 } }
|
104
|
-
end
|
105
|
-
|
106
|
-
def added_specs
|
107
|
-
actual_files - old_files
|
108
|
-
end
|
109
|
-
|
110
|
-
def file_data
|
111
|
-
CSV.read('rspeed.csv')
|
112
|
-
end
|
113
|
-
|
114
|
-
def old_files
|
115
|
-
rspeed_data.map { |item| item[:file] }
|
121
|
+
def added_examples
|
122
|
+
@added_examples ||= begin
|
123
|
+
(actual_examples - rspeed_examples).tap { |examples| stream(:added_examples, examples) }
|
124
|
+
end
|
116
125
|
end
|
117
126
|
|
118
127
|
def redis
|
119
128
|
@redis ||= ::Redis.new(db: ENV['RSPEED_DB'], host: ENV['RSPEED_HOST'], port: ENV.fetch('RSPEED_PORT') { 6379 })
|
120
129
|
end
|
121
130
|
|
122
|
-
def
|
123
|
-
|
131
|
+
def removed_examples
|
132
|
+
@removed_examples ||= begin
|
133
|
+
(rspeed_examples - actual_examples).tap { |examples| stream(:removed_examples, examples) }
|
134
|
+
end
|
124
135
|
end
|
125
136
|
|
126
137
|
def removed_time
|
127
|
-
|
138
|
+
removed_examples.map { |item| item[0].to_f }.sum
|
128
139
|
end
|
129
140
|
|
130
141
|
def rspeed_data
|
131
142
|
@rspeed_data ||= get('rspeed').map { |item| JSON.parse(item, symbolize_names: true) }
|
132
143
|
end
|
144
|
+
|
145
|
+
def rspeed_examples
|
146
|
+
rspeed_data.map { |item| item[:file] }
|
147
|
+
end
|
148
|
+
|
149
|
+
def stream(type, data)
|
150
|
+
puts "PIPE: #{pipe} with #{type}: #{data}"
|
151
|
+
end
|
133
152
|
end
|
134
153
|
end
|
data/lib/rspeed/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
10,./spec/fixtures/new_spec.rb.csv:1010,./spec/fixtures/new_spec.rb.csv:10
|
@@ -8,7 +8,7 @@ RSpec.describe RSpeed::Observer, '.after' do
|
|
8
8
|
let!(:metadata) { { file_path: 'file_path', line_number: 7, start_at: now - 1 } }
|
9
9
|
let!(:example) { instance_double(RSpec::Core::Example, clock: clock, metadata: metadata) }
|
10
10
|
|
11
|
-
before {
|
11
|
+
before { truncate_file }
|
12
12
|
|
13
13
|
it 'appends the time of example on csv file' do
|
14
14
|
described_class.after(example)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Splitter, '#actual_examples' do
|
6
|
+
it 'returns all examples' do
|
7
|
+
splitter = described_class.new(specs_path: 'spec/fixtures/**/*_spec.rb')
|
8
|
+
|
9
|
+
expect(splitter.actual_examples).to eq [
|
10
|
+
'spec/fixtures/1_spec.rb:4',
|
11
|
+
'spec/fixtures/1_spec.rb:6',
|
12
|
+
'spec/fixtures/1_spec.rb:8',
|
13
|
+
'spec/fixtures/2_spec.rb:4',
|
14
|
+
]
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'does not raise when no file match' do
|
18
|
+
splitter = described_class.new(specs_path: 'spec/fixtures/**/*_missing.rb')
|
19
|
+
|
20
|
+
expect(splitter.actual_examples).to eq []
|
21
|
+
end
|
22
|
+
end
|
@@ -3,27 +3,30 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe RSpeed::Splitter, '#diff' do
|
6
|
-
subject(:splitter) { described_class.new }
|
6
|
+
subject(:splitter) { described_class.new(specs_path: './spec/fixtures/*_spec.rb') }
|
7
7
|
|
8
8
|
let!(:redis) { redis_object }
|
9
9
|
|
10
10
|
before do
|
11
|
-
redis.lpush 'rspeed', { file: '1_spec.rb', time: 1 }.to_json
|
12
|
-
redis.lpush 'rspeed', { file: '
|
13
|
-
redis.lpush 'rspeed', { file: '
|
11
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/1_spec.rb:4', time: '1.4' }.to_json
|
12
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/1_spec.rb:6', time: '1.6' }.to_json
|
13
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/1_spec.rb:8', time: '1.8' }.to_json
|
14
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/2_spec.rb:4', time: '2.4' }.to_json
|
15
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/2_spec.rb:666', time: '6' }.to_json
|
16
|
+
redis.lpush 'rspeed', { file: './spec/fixtures/x_spec.rb:1', time: 3 }.to_json
|
14
17
|
|
15
|
-
|
16
|
-
2_spec.rb
|
17
|
-
3_spec.rb
|
18
|
-
4_spec.rb
|
19
|
-
]
|
18
|
+
File.open('spec/fixtures/new_spec.rb', 'a') { |file| file.write("it") }
|
20
19
|
end
|
21
20
|
|
21
|
+
after { delete_file('spec/fixtures/new_spec.rb') }
|
22
|
+
|
22
23
|
it 'removes removed specs and adds new spec and keeps keeped specs based on rspeed key values' do
|
23
24
|
expect(splitter.diff).to eq [
|
24
|
-
{ file: '
|
25
|
-
{ file: '
|
26
|
-
{ file: '
|
25
|
+
{ file: './spec/fixtures/2_spec.rb:4', time: '2.4' },
|
26
|
+
{ file: './spec/fixtures/1_spec.rb:8', time: '1.8' },
|
27
|
+
{ file: './spec/fixtures/1_spec.rb:6', time: '1.6' },
|
28
|
+
{ file: './spec/fixtures/1_spec.rb:4', time: '1.4' },
|
29
|
+
{ file: './spec/fixtures/new_spec.rb:1', time: 0 },
|
27
30
|
]
|
28
31
|
end
|
29
32
|
end
|
data/spec/rails_helper.rb
CHANGED
@@ -20,8 +20,12 @@ RSpec.configure do |config|
|
|
20
20
|
config.profile_examples = 10
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
File.
|
23
|
+
def delete_file(file_path = 'rspeed.csv')
|
24
|
+
File.delete(file_path) if File.exist?(file_path)
|
25
|
+
end
|
26
|
+
|
27
|
+
def truncate_file(file_path = 'rspeed.csv')
|
28
|
+
File.open(file_path, 'w') { |file| file.truncate(0) }
|
25
29
|
end
|
26
30
|
|
27
31
|
def populate_csv_file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
@@ -114,9 +114,13 @@ files:
|
|
114
114
|
- lib/rspeed/runner.rb
|
115
115
|
- lib/rspeed/splitter.rb
|
116
116
|
- lib/rspeed/version.rb
|
117
|
+
- spec/fixtures/1_spec.rb
|
118
|
+
- spec/fixtures/2_spec.rb
|
119
|
+
- spec/fixtures/new_spec.rb.csv
|
117
120
|
- spec/models/rspeed/observer/after_spec.rb
|
118
121
|
- spec/models/rspeed/observer/before_spec.rb
|
119
122
|
- spec/models/rspeed/observer/before_suite_spec.rb
|
123
|
+
- spec/models/rspeed/splitter/actual_examples_spec.rb
|
120
124
|
- spec/models/rspeed/splitter/append_spec.rb
|
121
125
|
- spec/models/rspeed/splitter/destroy_spec.rb
|
122
126
|
- spec/models/rspeed/splitter/diff_spec.rb
|
@@ -158,6 +162,7 @@ test_files:
|
|
158
162
|
- spec/models/rspeed/splitter/append_spec.rb
|
159
163
|
- spec/models/rspeed/splitter/destroy_spec.rb
|
160
164
|
- spec/models/rspeed/splitter/pipe_spec.rb
|
165
|
+
- spec/models/rspeed/splitter/actual_examples_spec.rb
|
161
166
|
- spec/models/rspeed/splitter/get_spec.rb
|
162
167
|
- spec/models/rspeed/splitter/rename_spec.rb
|
163
168
|
- spec/models/rspeed/splitter/last_pipe_spec.rb
|
@@ -171,4 +176,7 @@ test_files:
|
|
171
176
|
- spec/models/rspeed/observer/before_suite_spec.rb
|
172
177
|
- spec/models/rspeed/observer/before_spec.rb
|
173
178
|
- spec/models/rspeed/observer/after_spec.rb
|
179
|
+
- spec/fixtures/new_spec.rb.csv
|
180
|
+
- spec/fixtures/1_spec.rb
|
181
|
+
- spec/fixtures/2_spec.rb
|
174
182
|
- spec/rails_helper.rb
|