rspeed 0.0.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/LICENSE +1 -1
  4. data/README.md +88 -5
  5. data/lib/generators/rspeed/install_generator.rb +13 -0
  6. data/lib/generators/rspeed/templates/lib/tasks/rspeed.rb +9 -0
  7. data/lib/rspeed.rb +9 -0
  8. data/lib/rspeed/env.rb +43 -0
  9. data/lib/rspeed/extension.rb +12 -0
  10. data/lib/rspeed/observer.rb +43 -0
  11. data/lib/rspeed/redis.rb +55 -0
  12. data/lib/rspeed/runner.rb +13 -0
  13. data/lib/rspeed/splitter.rb +130 -0
  14. data/lib/rspeed/variable.rb +31 -0
  15. data/lib/rspeed/version.rb +1 -1
  16. data/spec/common_helper.rb +10 -0
  17. data/spec/fixtures/1_spec.rb +9 -0
  18. data/spec/fixtures/2_spec.rb +5 -0
  19. data/spec/fixtures/empty.rb +4 -0
  20. data/spec/fixtures/new_spec.rb.csv +1 -0
  21. data/spec/models/rspeed/env/db_spec.rb +17 -0
  22. data/spec/models/rspeed/env/host_spec.rb +17 -0
  23. data/spec/models/rspeed/env/name_spec.rb +17 -0
  24. data/spec/models/rspeed/env/pipe_spec.rb +19 -0
  25. data/spec/models/rspeed/env/pipes_spec.rb +41 -0
  26. data/spec/models/rspeed/env/port_spec.rb +17 -0
  27. data/spec/models/rspeed/env/result_key_spec.rb +19 -0
  28. data/spec/models/rspeed/env/rspeed_spec.rb +43 -0
  29. data/spec/models/rspeed/env/tmp_spec.rb +19 -0
  30. data/spec/models/rspeed/observer/after_spec.rb +16 -0
  31. data/spec/models/rspeed/observer/after_suite_spec.rb +46 -0
  32. data/spec/models/rspeed/observer/before_spec.rb +15 -0
  33. data/spec/models/rspeed/observer/before_suite_spec.rb +37 -0
  34. data/spec/models/rspeed/redis/clean_pipes_flag_spec.rb +14 -0
  35. data/spec/models/rspeed/redis/client_spec.rb +7 -0
  36. data/spec/models/rspeed/redis/destroy_spec.rb +29 -0
  37. data/spec/models/rspeed/redis/get_spec.rb +9 -0
  38. data/spec/models/rspeed/redis/keys_spec.rb +29 -0
  39. data/spec/models/rspeed/redis/result_spec.rb +13 -0
  40. data/spec/models/rspeed/redis/set_spec.rb +9 -0
  41. data/spec/models/rspeed/redis/specs_finished_spec.rb +19 -0
  42. data/spec/models/rspeed/redis/specs_initiated_spec.rb +13 -0
  43. data/spec/models/rspeed/runner/run_spec.rb +30 -0
  44. data/spec/models/rspeed/splitter/actual_examples_spec.rb +26 -0
  45. data/spec/models/rspeed/splitter/append_spec.rb +35 -0
  46. data/spec/models/rspeed/splitter/diff_spec.rb +30 -0
  47. data/spec/models/rspeed/splitter/first_pipe_spec.rb +17 -0
  48. data/spec/models/rspeed/splitter/get_spec.rb +74 -0
  49. data/spec/models/rspeed/splitter/pipe_files_spec.rb +26 -0
  50. data/spec/models/rspeed/splitter/redundant_run_spec.rb +45 -0
  51. data/spec/models/rspeed/splitter/rename_spec.rb +16 -0
  52. data/spec/models/rspeed/splitter/split_spec.rb +89 -0
  53. data/spec/models/rspeed/variable/append_name_spec.rb +19 -0
  54. data/spec/models/rspeed/variable/csv_spec.rb +5 -0
  55. data/spec/models/rspeed/variable/default_partner_spec.rb +5 -0
  56. data/spec/models/rspeed/variable/key_spec.rb +15 -0
  57. data/spec/models/rspeed/variable/pipe_name_spec.rb +15 -0
  58. data/spec/models/rspeed/variable/pipes_pattern_spec.rb +5 -0
  59. data/spec/models/rspeed/variable/result_spec.rb +19 -0
  60. data/spec/models/rspeed/variable/tmp_spec.rb +15 -0
  61. data/spec/spec_helper.rb +27 -0
  62. data/spec/support/common.rb +5 -3
  63. data/spec/support/coverage.rb +14 -0
  64. data/spec/support/env_mock.rb +3 -0
  65. data/spec/support/fakeredis.rb +3 -0
  66. metadata +180 -23
  67. data/spec/rails_helper.rb +0 -9
@@ -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
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ def delete_file(file_path = 'rspeed.csv')
4
+ File.delete(file_path) if File.exist?(file_path)
5
+ end
6
+
7
+ def truncate_file(file_path = 'rspeed.csv')
8
+ File.open(file_path, 'w') { |file| file.truncate(0) }
9
+ end
10
+
11
+ def populate_csv_file
12
+ data = [
13
+ '2.0,./spec/2_0_spec.rb',
14
+ '1.5,./spec/1_5_spec.rb',
15
+ '1.1,./spec/1_1_spec.rb',
16
+ '0.7,./spec/0_7_spec.rb',
17
+ '0.4,./spec/0_4_spec.rb',
18
+ '0.3,./spec/0_3_spec.rb',
19
+ '0.2,./spec/0_2_spec.rb',
20
+ ].join("\n")
21
+
22
+ File.open('rspeed.csv', 'a') { |file| file.write(data) }
23
+ end
24
+
25
+ def redis_object
26
+ @redis_object ||= Redis.new(db: RSpeed::Env.db, host: RSpeed::Env.host)
27
+ end
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rspec/rails'
3
+ require 'rspec'
4
4
 
5
5
  RSpec.configure do |config|
6
- config.filter_run_when_matching :focus
7
-
8
6
  config.disable_monkey_patching!
9
7
 
8
+ config.mock_with(:rspec) do |mocks|
9
+ mocks.verify_partial_doubles = true
10
+ end
11
+
10
12
  config.order = :random
11
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,35 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Washington Botelho
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-31 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
- name: rails
14
+ name: redis
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
20
- - - "<"
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
21
25
  - !ruby/object:Gem::Version
22
- version: '6'
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'
23
34
  type: :runtime
24
35
  prerelease: false
25
36
  version_requirements: !ruby/object:Gem::Requirement
26
37
  requirements:
27
38
  - - ">="
28
39
  - !ruby/object:Gem::Version
29
- version: '4.1'
30
- - - "<"
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
+ - - ">="
31
53
  - !ruby/object:Gem::Version
32
- version: '6'
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'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fakeredis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
33
83
  - !ruby/object:Gem::Dependency
34
84
  name: pry-byebug
35
85
  requirement: !ruby/object:Gem::Requirement
@@ -45,7 +95,7 @@ dependencies:
45
95
  - !ruby/object:Gem::Version
46
96
  version: '0'
47
97
  - !ruby/object:Gem::Dependency
48
- name: rspec-rails
98
+ name: rake
49
99
  requirement: !ruby/object:Gem::Requirement
50
100
  requirements:
51
101
  - - ">="
@@ -59,7 +109,7 @@ dependencies:
59
109
  - !ruby/object:Gem::Version
60
110
  version: '0'
61
111
  - !ruby/object:Gem::Dependency
62
- name: rubocop
112
+ name: rubocop-performance
63
113
  requirement: !ruby/object:Gem::Requirement
64
114
  requirements:
65
115
  - - ">="
@@ -73,7 +123,7 @@ dependencies:
73
123
  - !ruby/object:Gem::Version
74
124
  version: '0'
75
125
  - !ruby/object:Gem::Dependency
76
- name: rubocop-rspec
126
+ name: rubocop-rails
77
127
  requirement: !ruby/object:Gem::Requirement
78
128
  requirements:
79
129
  - - ">="
@@ -87,7 +137,7 @@ dependencies:
87
137
  - !ruby/object:Gem::Version
88
138
  version: '0'
89
139
  - !ruby/object:Gem::Dependency
90
- name: sqlite3
140
+ name: rubocop-rspec
91
141
  requirement: !ruby/object:Gem::Requirement
92
142
  requirements:
93
143
  - - ">="
@@ -100,24 +150,84 @@ dependencies:
100
150
  - - ">="
101
151
  - !ruby/object:Gem::Version
102
152
  version: '0'
103
- description: ''
153
+ description: Split and speed up your RSpec tests.
104
154
  email: wbotelhos@gmail.com
105
155
  executables: []
106
156
  extensions: []
107
- extra_rdoc_files: []
157
+ extra_rdoc_files:
158
+ - CHANGELOG.md
159
+ - LICENSE
160
+ - README.md
108
161
  files:
109
162
  - CHANGELOG.md
110
163
  - LICENSE
111
164
  - README.md
165
+ - lib/generators/rspeed/install_generator.rb
166
+ - lib/generators/rspeed/templates/lib/tasks/rspeed.rb
112
167
  - lib/rspeed.rb
168
+ - lib/rspeed/env.rb
169
+ - lib/rspeed/extension.rb
170
+ - lib/rspeed/observer.rb
171
+ - lib/rspeed/redis.rb
172
+ - lib/rspeed/runner.rb
173
+ - lib/rspeed/splitter.rb
174
+ - lib/rspeed/variable.rb
113
175
  - lib/rspeed/version.rb
114
- - spec/rails_helper.rb
176
+ - spec/common_helper.rb
177
+ - spec/fixtures/1_spec.rb
178
+ - spec/fixtures/2_spec.rb
179
+ - spec/fixtures/empty.rb
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
190
+ - spec/models/rspeed/observer/after_spec.rb
191
+ - spec/models/rspeed/observer/after_suite_spec.rb
192
+ - spec/models/rspeed/observer/before_spec.rb
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
204
+ - spec/models/rspeed/splitter/actual_examples_spec.rb
205
+ - spec/models/rspeed/splitter/append_spec.rb
206
+ - spec/models/rspeed/splitter/diff_spec.rb
207
+ - spec/models/rspeed/splitter/first_pipe_spec.rb
208
+ - spec/models/rspeed/splitter/get_spec.rb
209
+ - spec/models/rspeed/splitter/pipe_files_spec.rb
210
+ - spec/models/rspeed/splitter/redundant_run_spec.rb
211
+ - spec/models/rspeed/splitter/rename_spec.rb
212
+ - spec/models/rspeed/splitter/split_spec.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
115
222
  - spec/support/common.rb
223
+ - spec/support/coverage.rb
224
+ - spec/support/env_mock.rb
225
+ - spec/support/fakeredis.rb
116
226
  homepage: https://github.com/wbotelhos/rspeed
117
227
  licenses:
118
228
  - MIT
119
229
  metadata: {}
120
- post_install_message:
230
+ post_install_message:
121
231
  rdoc_options: []
122
232
  require_paths:
123
233
  - lib
@@ -132,11 +242,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
242
  - !ruby/object:Gem::Version
133
243
  version: '0'
134
244
  requirements: []
135
- rubyforge_project:
136
- rubygems_version: 2.7.4
137
- signing_key:
245
+ rubygems_version: 3.1.2
246
+ signing_key:
138
247
  specification_version: 4
139
- summary: ''
248
+ summary: Split and speed up your RSpec tests.
140
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
269
+ - spec/models/rspeed/splitter/append_spec.rb
270
+ - spec/models/rspeed/splitter/actual_examples_spec.rb
271
+ - spec/models/rspeed/splitter/get_spec.rb
272
+ - spec/models/rspeed/splitter/rename_spec.rb
273
+ - spec/models/rspeed/splitter/redundant_run_spec.rb
274
+ - spec/models/rspeed/splitter/pipe_files_spec.rb
275
+ - spec/models/rspeed/splitter/first_pipe_spec.rb
276
+ - spec/models/rspeed/splitter/diff_spec.rb
277
+ - spec/models/rspeed/splitter/split_spec.rb
278
+ - spec/models/rspeed/observer/before_suite_spec.rb
279
+ - spec/models/rspeed/observer/before_spec.rb
280
+ - spec/models/rspeed/observer/after_suite_spec.rb
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
141
294
  - spec/support/common.rb
142
- - spec/rails_helper.rb
295
+ - spec/support/coverage.rb
296
+ - spec/fixtures/new_spec.rb.csv
297
+ - spec/fixtures/1_spec.rb
298
+ - spec/fixtures/empty.rb
299
+ - spec/fixtures/2_spec.rb