rspeed 0.0.1 → 0.5.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.
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