rspeed 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +11 -7
  4. data/lib/generators/rspeed/install_generator.rb +1 -1
  5. data/lib/rspeed.rb +8 -6
  6. data/lib/rspeed/env.rb +43 -0
  7. data/lib/rspeed/extension.rb +3 -2
  8. data/lib/rspeed/observer.rb +17 -3
  9. data/lib/rspeed/redis.rb +55 -0
  10. data/lib/rspeed/runner.rb +3 -18
  11. data/lib/rspeed/splitter.rb +29 -52
  12. data/lib/rspeed/variable.rb +31 -0
  13. data/lib/rspeed/version.rb +1 -1
  14. data/spec/common_helper.rb +10 -0
  15. data/spec/fixtures/empty.rb +4 -0
  16. data/spec/models/rspeed/env/db_spec.rb +17 -0
  17. data/spec/models/rspeed/env/host_spec.rb +17 -0
  18. data/spec/models/rspeed/env/name_spec.rb +17 -0
  19. data/spec/models/rspeed/env/pipe_spec.rb +19 -0
  20. data/spec/models/rspeed/env/pipes_spec.rb +41 -0
  21. data/spec/models/rspeed/env/port_spec.rb +17 -0
  22. data/spec/models/rspeed/env/result_key_spec.rb +19 -0
  23. data/spec/models/rspeed/env/rspeed_spec.rb +43 -0
  24. data/spec/models/rspeed/env/tmp_spec.rb +19 -0
  25. data/spec/models/rspeed/observer/after_spec.rb +0 -2
  26. data/spec/models/rspeed/observer/after_suite_spec.rb +46 -0
  27. data/spec/models/rspeed/observer/before_spec.rb +0 -2
  28. data/spec/models/rspeed/observer/before_suite_spec.rb +24 -2
  29. data/spec/models/rspeed/redis/clean_pipes_flag_spec.rb +14 -0
  30. data/spec/models/rspeed/redis/client_spec.rb +7 -0
  31. data/spec/models/rspeed/redis/destroy_spec.rb +29 -0
  32. data/spec/models/rspeed/redis/get_spec.rb +9 -0
  33. data/spec/models/rspeed/redis/keys_spec.rb +29 -0
  34. data/spec/models/rspeed/redis/result_spec.rb +13 -0
  35. data/spec/models/rspeed/redis/set_spec.rb +9 -0
  36. data/spec/models/rspeed/redis/specs_finished_spec.rb +19 -0
  37. data/spec/models/rspeed/redis/specs_initiated_spec.rb +13 -0
  38. data/spec/models/rspeed/runner/run_spec.rb +30 -0
  39. data/spec/models/rspeed/splitter/actual_examples_spec.rb +6 -2
  40. data/spec/models/rspeed/splitter/append_spec.rb +1 -3
  41. data/spec/models/rspeed/splitter/diff_spec.rb +1 -3
  42. data/spec/models/rspeed/splitter/first_pipe_spec.rb +2 -4
  43. data/spec/models/rspeed/splitter/get_spec.rb +7 -9
  44. data/spec/models/rspeed/splitter/pipe_files_spec.rb +26 -0
  45. data/spec/models/rspeed/splitter/redundant_run_spec.rb +45 -0
  46. data/spec/models/rspeed/splitter/rename_spec.rb +3 -5
  47. data/spec/models/rspeed/splitter/split_spec.rb +70 -34
  48. data/spec/models/rspeed/variable/append_name_spec.rb +19 -0
  49. data/spec/models/rspeed/variable/csv_spec.rb +5 -0
  50. data/spec/models/rspeed/variable/default_partner_spec.rb +5 -0
  51. data/spec/models/rspeed/variable/key_spec.rb +15 -0
  52. data/spec/models/rspeed/variable/pipe_name_spec.rb +15 -0
  53. data/spec/models/rspeed/variable/pipes_pattern_spec.rb +5 -0
  54. data/spec/models/rspeed/variable/result_spec.rb +19 -0
  55. data/spec/models/rspeed/variable/tmp_spec.rb +15 -0
  56. data/spec/{rails_helper.rb → spec_helper.rb} +2 -22
  57. data/spec/support/common.rb +13 -0
  58. data/spec/support/coverage.rb +14 -0
  59. data/spec/support/env_mock.rb +3 -0
  60. data/spec/support/fakeredis.rb +3 -0
  61. metadata +137 -20
  62. data/spec/models/rspeed/splitter/destroy_spec.rb +0 -33
  63. data/spec/models/rspeed/splitter/keys_spec.rb +0 -33
  64. data/spec/models/rspeed/splitter/last_pipe_spec.rb +0 -21
  65. data/spec/models/rspeed/splitter/pipe_spec.rb +0 -21
  66. data/spec/models/rspeed/splitter/pipes_spec.rb +0 -27
  67. data/spec/models/rspeed/splitter/result_spec.rb +0 -19
  68. data/spec/models/rspeed/splitter/save_spec.rb +0 -57
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'support/env_mock'
4
+
5
+ RSpec.describe RSpeed::Variable, '.append_name' do
6
+ context 'when env name is given' do
7
+ it 'appends the rspeed name on the given value' do
8
+ EnvMock.mock(rspeed_name: 'name') do
9
+ expect(described_class.append_name('value')).to eq('value_name')
10
+ end
11
+ end
12
+ end
13
+
14
+ context 'when env name is not given' do
15
+ it 'ignores the suffix' do
16
+ expect(described_class.append_name('value')).to eq('value')
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RSpeed::Variable, 'CSV' do
4
+ it { expect(described_class::CSV).to eq('rspeed.csv') }
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RSpeed::Variable, 'DEFAULT_PATTERN' do
4
+ it { expect(described_class::DEFAULT_PATTERN).to eq('rspeed_*') }
5
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'support/env_mock'
4
+
5
+ RSpec.describe RSpeed::Variable, '.key' do
6
+ it { expect(described_class.key(1)).to be(:rspeed_1) }
7
+
8
+ context 'when env name is given' do
9
+ it 'includes the name' do
10
+ EnvMock.mock(rspeed_name: 'name') do
11
+ expect(described_class.key(1)).to be(:rspeed_name_1)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'support/env_mock'
4
+
5
+ RSpec.describe RSpeed::Variable, '.pipe_name' do
6
+ it { expect(described_class.pipe_name).to eq('rspeed_pipe_1') }
7
+
8
+ context 'when env name is given' do
9
+ it 'includes the name' do
10
+ EnvMock.mock(rspeed_name: 'name') do
11
+ expect(described_class.pipe_name).to eq('rspeed_pipe_name_1')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RSpeed::Variable, 'PIPES_PATTERN' do
4
+ it { expect(described_class::PIPES_PATTERN).to eq('rspeed_pipe_*') }
5
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'support/env_mock'
4
+
5
+ RSpec.describe RSpeed::Variable, '.result' do
6
+ it { expect(described_class.result).to eq('rspeed') }
7
+
8
+ context 'when env name is given' do
9
+ it 'includes the name' do
10
+ EnvMock.mock(rspeed_name: 'name') do
11
+ expect(described_class.result).to eq('rspeed_name')
12
+ end
13
+ end
14
+ end
15
+
16
+ context 'when env name is not given' do
17
+ it { expect(described_class.result).to eq('rspeed') }
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'support/env_mock'
4
+
5
+ RSpec.describe RSpeed::Variable, '.tmp' do
6
+ it { expect(described_class.tmp).to eq('rspeed_tmp') }
7
+
8
+ context 'when env name is given' do
9
+ it 'includes the name' do
10
+ EnvMock.mock(rspeed_name: 'name') do
11
+ expect(described_class.tmp).to eq('rspeed_tmp_name')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,25 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ENV['RAILS_ENV'] ||= 'test'
4
-
5
- require 'fakeredis/rspec'
6
- require 'json'
7
- require 'pry-byebug'
8
- require 'rspec'
9
- require 'rspeed'
10
-
11
- RSpec.configure do |config|
12
- config.after do
13
- ENV.delete('RSPEED_PIPE')
14
- ENV.delete('RSPEED_PIPES')
15
- end
16
-
17
- config.disable_monkey_patching!
18
-
19
- config.order = :random
20
- config.profile_examples = 10
21
- end
22
-
23
3
  def delete_file(file_path = 'rspeed.csv')
24
4
  File.delete(file_path) if File.exist?(file_path)
25
5
  end
@@ -36,12 +16,12 @@ def populate_csv_file
36
16
  '0.7,./spec/0_7_spec.rb',
37
17
  '0.4,./spec/0_4_spec.rb',
38
18
  '0.3,./spec/0_3_spec.rb',
39
- '0.2,./spec/0_2_spec.rb'
19
+ '0.2,./spec/0_2_spec.rb',
40
20
  ].join("\n")
41
21
 
42
22
  File.open('rspeed.csv', 'a') { |file| file.write(data) }
43
23
  end
44
24
 
45
25
  def redis_object
46
- @redis_object ||= Redis.new(db: ENV['RSPEED_DB'], host: ENV['RSPEED_HOST'])
26
+ @redis_object ||= Redis.new(db: RSpeed::Env.db, host: RSpeed::Env.host)
47
27
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec'
4
+
5
+ RSpec.configure do |config|
6
+ config.disable_monkey_patching!
7
+
8
+ config.mock_with(:rspec) do |mocks|
9
+ mocks.verify_partial_doubles = true
10
+ end
11
+
12
+ config.order = :random
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ if ENV['COVERAGE'] == 'true'
4
+ require 'simplecov'
5
+ require 'codecov'
6
+
7
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
8
+
9
+ SimpleCov.minimum_coverage(ENV.fetch('MINIMUM_COVERAGE', 80).to_i)
10
+
11
+ SimpleCov.start('rails') do
12
+ add_filter('vendor')
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'env_mock'
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fakeredis/rspec'
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.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Washington Botelho
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-21 00:00:00.000000000 Z
11
+ date: 2020-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -24,6 +24,48 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: codecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: env_mock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: fakeredis
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +109,21 @@ dependencies:
67
109
  - !ruby/object:Gem::Version
68
110
  version: '0'
69
111
  - !ruby/object:Gem::Dependency
70
- name: rspec
112
+ name: rubocop-performance
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rails
71
127
  requirement: !ruby/object:Gem::Requirement
72
128
  requirements:
73
129
  - - ">="
@@ -109,32 +165,64 @@ files:
109
165
  - lib/generators/rspeed/install_generator.rb
110
166
  - lib/generators/rspeed/templates/lib/tasks/rspeed.rb
111
167
  - lib/rspeed.rb
168
+ - lib/rspeed/env.rb
112
169
  - lib/rspeed/extension.rb
113
170
  - lib/rspeed/observer.rb
171
+ - lib/rspeed/redis.rb
114
172
  - lib/rspeed/runner.rb
115
173
  - lib/rspeed/splitter.rb
174
+ - lib/rspeed/variable.rb
116
175
  - lib/rspeed/version.rb
176
+ - spec/common_helper.rb
117
177
  - spec/fixtures/1_spec.rb
118
178
  - spec/fixtures/2_spec.rb
179
+ - spec/fixtures/empty.rb
119
180
  - spec/fixtures/new_spec.rb.csv
181
+ - spec/models/rspeed/env/db_spec.rb
182
+ - spec/models/rspeed/env/host_spec.rb
183
+ - spec/models/rspeed/env/name_spec.rb
184
+ - spec/models/rspeed/env/pipe_spec.rb
185
+ - spec/models/rspeed/env/pipes_spec.rb
186
+ - spec/models/rspeed/env/port_spec.rb
187
+ - spec/models/rspeed/env/result_key_spec.rb
188
+ - spec/models/rspeed/env/rspeed_spec.rb
189
+ - spec/models/rspeed/env/tmp_spec.rb
120
190
  - spec/models/rspeed/observer/after_spec.rb
191
+ - spec/models/rspeed/observer/after_suite_spec.rb
121
192
  - spec/models/rspeed/observer/before_spec.rb
122
193
  - spec/models/rspeed/observer/before_suite_spec.rb
194
+ - spec/models/rspeed/redis/clean_pipes_flag_spec.rb
195
+ - spec/models/rspeed/redis/client_spec.rb
196
+ - spec/models/rspeed/redis/destroy_spec.rb
197
+ - spec/models/rspeed/redis/get_spec.rb
198
+ - spec/models/rspeed/redis/keys_spec.rb
199
+ - spec/models/rspeed/redis/result_spec.rb
200
+ - spec/models/rspeed/redis/set_spec.rb
201
+ - spec/models/rspeed/redis/specs_finished_spec.rb
202
+ - spec/models/rspeed/redis/specs_initiated_spec.rb
203
+ - spec/models/rspeed/runner/run_spec.rb
123
204
  - spec/models/rspeed/splitter/actual_examples_spec.rb
124
205
  - spec/models/rspeed/splitter/append_spec.rb
125
- - spec/models/rspeed/splitter/destroy_spec.rb
126
206
  - spec/models/rspeed/splitter/diff_spec.rb
127
207
  - spec/models/rspeed/splitter/first_pipe_spec.rb
128
208
  - spec/models/rspeed/splitter/get_spec.rb
129
- - spec/models/rspeed/splitter/keys_spec.rb
130
- - spec/models/rspeed/splitter/last_pipe_spec.rb
131
- - spec/models/rspeed/splitter/pipe_spec.rb
132
- - spec/models/rspeed/splitter/pipes_spec.rb
209
+ - spec/models/rspeed/splitter/pipe_files_spec.rb
210
+ - spec/models/rspeed/splitter/redundant_run_spec.rb
133
211
  - spec/models/rspeed/splitter/rename_spec.rb
134
- - spec/models/rspeed/splitter/result_spec.rb
135
- - spec/models/rspeed/splitter/save_spec.rb
136
212
  - spec/models/rspeed/splitter/split_spec.rb
137
- - spec/rails_helper.rb
213
+ - spec/models/rspeed/variable/append_name_spec.rb
214
+ - spec/models/rspeed/variable/csv_spec.rb
215
+ - spec/models/rspeed/variable/default_partner_spec.rb
216
+ - spec/models/rspeed/variable/key_spec.rb
217
+ - spec/models/rspeed/variable/pipe_name_spec.rb
218
+ - spec/models/rspeed/variable/pipes_pattern_spec.rb
219
+ - spec/models/rspeed/variable/result_spec.rb
220
+ - spec/models/rspeed/variable/tmp_spec.rb
221
+ - spec/spec_helper.rb
222
+ - spec/support/common.rb
223
+ - spec/support/coverage.rb
224
+ - spec/support/env_mock.rb
225
+ - spec/support/fakeredis.rb
138
226
  homepage: https://github.com/wbotelhos/rspeed
139
227
  licenses:
140
228
  - MIT
@@ -154,29 +242,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
242
  - !ruby/object:Gem::Version
155
243
  version: '0'
156
244
  requirements: []
157
- rubygems_version: 3.0.8
245
+ rubygems_version: 3.1.2
158
246
  signing_key:
159
247
  specification_version: 4
160
248
  summary: Split and speed up your RSpec tests.
161
249
  test_files:
250
+ - spec/spec_helper.rb
251
+ - spec/models/rspeed/variable/pipes_pattern_spec.rb
252
+ - spec/models/rspeed/variable/tmp_spec.rb
253
+ - spec/models/rspeed/variable/default_partner_spec.rb
254
+ - spec/models/rspeed/variable/csv_spec.rb
255
+ - spec/models/rspeed/variable/append_name_spec.rb
256
+ - spec/models/rspeed/variable/result_spec.rb
257
+ - spec/models/rspeed/variable/key_spec.rb
258
+ - spec/models/rspeed/variable/pipe_name_spec.rb
259
+ - spec/models/rspeed/redis/destroy_spec.rb
260
+ - spec/models/rspeed/redis/get_spec.rb
261
+ - spec/models/rspeed/redis/client_spec.rb
262
+ - spec/models/rspeed/redis/specs_finished_spec.rb
263
+ - spec/models/rspeed/redis/set_spec.rb
264
+ - spec/models/rspeed/redis/clean_pipes_flag_spec.rb
265
+ - spec/models/rspeed/redis/specs_initiated_spec.rb
266
+ - spec/models/rspeed/redis/result_spec.rb
267
+ - spec/models/rspeed/redis/keys_spec.rb
268
+ - spec/models/rspeed/runner/run_spec.rb
162
269
  - spec/models/rspeed/splitter/append_spec.rb
163
- - spec/models/rspeed/splitter/destroy_spec.rb
164
- - spec/models/rspeed/splitter/pipe_spec.rb
165
270
  - spec/models/rspeed/splitter/actual_examples_spec.rb
166
271
  - spec/models/rspeed/splitter/get_spec.rb
167
272
  - spec/models/rspeed/splitter/rename_spec.rb
168
- - spec/models/rspeed/splitter/last_pipe_spec.rb
273
+ - spec/models/rspeed/splitter/redundant_run_spec.rb
274
+ - spec/models/rspeed/splitter/pipe_files_spec.rb
169
275
  - spec/models/rspeed/splitter/first_pipe_spec.rb
170
- - spec/models/rspeed/splitter/result_spec.rb
171
- - spec/models/rspeed/splitter/save_spec.rb
172
- - spec/models/rspeed/splitter/keys_spec.rb
173
276
  - spec/models/rspeed/splitter/diff_spec.rb
174
277
  - spec/models/rspeed/splitter/split_spec.rb
175
- - spec/models/rspeed/splitter/pipes_spec.rb
176
278
  - spec/models/rspeed/observer/before_suite_spec.rb
177
279
  - spec/models/rspeed/observer/before_spec.rb
280
+ - spec/models/rspeed/observer/after_suite_spec.rb
178
281
  - spec/models/rspeed/observer/after_spec.rb
282
+ - spec/models/rspeed/env/pipe_spec.rb
283
+ - spec/models/rspeed/env/rspeed_spec.rb
284
+ - spec/models/rspeed/env/tmp_spec.rb
285
+ - spec/models/rspeed/env/port_spec.rb
286
+ - spec/models/rspeed/env/name_spec.rb
287
+ - spec/models/rspeed/env/host_spec.rb
288
+ - spec/models/rspeed/env/db_spec.rb
289
+ - spec/models/rspeed/env/result_key_spec.rb
290
+ - spec/models/rspeed/env/pipes_spec.rb
291
+ - spec/common_helper.rb
292
+ - spec/support/fakeredis.rb
293
+ - spec/support/env_mock.rb
294
+ - spec/support/common.rb
295
+ - spec/support/coverage.rb
179
296
  - spec/fixtures/new_spec.rb.csv
180
297
  - spec/fixtures/1_spec.rb
298
+ - spec/fixtures/empty.rb
181
299
  - spec/fixtures/2_spec.rb
182
- - spec/rails_helper.rb
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe RSpeed::Splitter, '#destroy' do
6
- subject(:splitter) { described_class.new }
7
-
8
- let!(:redis) { redis_object }
9
-
10
- before do
11
- redis.set 'rspeed', '{}'
12
- redis.set 'rspeed_1', '{}'
13
- redis.set 'rspeed_2', '{}'
14
- end
15
-
16
- it 'destroys via wildcard' do
17
- splitter.destroy 'rspeed_*'
18
-
19
- expect(splitter.keys('*')).to eq %w[rspeed]
20
- end
21
-
22
- it 'destroys via single name' do
23
- splitter.destroy 'rspeed'
24
-
25
- expect(splitter.keys('*')).to eq %w[rspeed_1 rspeed_2]
26
- end
27
-
28
- it 'destroys default partner when no pattern is given' do
29
- splitter.destroy
30
-
31
- expect(splitter.keys('*')).to eq %w[rspeed]
32
- end
33
- end