delta_test 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +22 -34
  4. data/Rakefile +5 -2
  5. data/bin/delta_test +1 -1
  6. data/circle.yml +5 -1
  7. data/delta_test.gemspec +1 -1
  8. data/lib/delta_test/cli/command_base.rb +114 -0
  9. data/lib/delta_test/cli/exec_command.rb +95 -0
  10. data/lib/delta_test/cli/help_command.rb +38 -0
  11. data/lib/delta_test/cli/specs_command.rb +43 -0
  12. data/lib/delta_test/cli/stats_clean_command.rb +20 -0
  13. data/lib/delta_test/cli/stats_save_command.rb +67 -0
  14. data/lib/delta_test/cli/stats_show_command.rb +46 -0
  15. data/lib/delta_test/cli/version_command.rb +13 -0
  16. data/lib/delta_test/cli.rb +22 -296
  17. data/lib/delta_test/configuration.rb +57 -42
  18. data/lib/delta_test/errors.rb +24 -0
  19. data/lib/delta_test/generator.rb +4 -24
  20. data/lib/delta_test/git.rb +161 -80
  21. data/lib/delta_test/profiler.rb +8 -0
  22. data/lib/delta_test/related_spec_list.rb +14 -9
  23. data/lib/delta_test/stats.rb +41 -0
  24. data/lib/delta_test/version.rb +2 -2
  25. data/lib/delta_test.rb +14 -9
  26. data/spec/lib/delta_test/cli/command_base_spec.rb +164 -0
  27. data/spec/lib/delta_test/cli/exec_command_spec.rb +128 -0
  28. data/spec/lib/delta_test/cli/help_command_spec.rb +17 -0
  29. data/spec/lib/delta_test/cli/specs_command_spec.rb +54 -0
  30. data/spec/lib/delta_test/cli/stats_clean_command_spec.rb +39 -0
  31. data/spec/lib/delta_test/cli/stats_save_command_spec.rb +207 -0
  32. data/spec/lib/delta_test/cli/stats_show_command_spec.rb +52 -0
  33. data/spec/lib/delta_test/cli/version_command_spec.rb +17 -0
  34. data/spec/lib/delta_test/cli_spec.rb +47 -386
  35. data/spec/lib/delta_test/configuration_spec.rb +99 -47
  36. data/spec/lib/delta_test/dependencies_table_spec.rb +1 -1
  37. data/spec/lib/delta_test/generator_spec.rb +3 -3
  38. data/spec/lib/delta_test/git_spec.rb +291 -50
  39. data/spec/lib/delta_test/profiler_spec.rb +3 -3
  40. data/spec/lib/delta_test/related_spec_list_spec.rb +12 -14
  41. data/spec/lib/delta_test/stats_spec.rb +89 -0
  42. data/spec/lib/delta_test/utils_spec.rb +4 -4
  43. data/spec/lib/delta_test_spec.rb +13 -4
  44. data/spec/rails/Gemfile.lock +5 -2
  45. data/spec/rails/app/models/category.rb +4 -0
  46. data/spec/rails/delta_test.yml +4 -3
  47. data/spec/rails/spec/models/category_spec.rb +4 -0
  48. data/spec/spec_helper.rb +9 -2
  49. data/spec/supports/create_table_file.rb +11 -1
  50. data/visual.jpg +0 -0
  51. metadata +32 -4
@@ -2,13 +2,14 @@ describe DeltaTest::Configuration do
2
2
 
3
3
  let(:configuration) { DeltaTest::Configuration.new }
4
4
 
5
- describe '::new' do
5
+ describe '.new' do
6
6
 
7
7
  let(:options) do
8
8
  %i[
9
9
  base_path
10
- table_file
10
+ stats_path
11
11
  files
12
+ stats_life
12
13
  ]
13
14
  end
14
15
 
@@ -40,21 +41,21 @@ describe DeltaTest::Configuration do
40
41
 
41
42
  end
42
43
 
43
- describe '#table_file, #table_file=' do
44
+ describe '#stats_path, #stats_path=' do
44
45
 
45
46
  it 'should return an instance of Pathname' do
46
- expect(configuration.table_file).to be_a(Pathname)
47
+ expect(configuration.stats_path).to be_a(Pathname)
47
48
  end
48
49
 
49
50
  it 'should store an instance of Pathname from a string in the setter' do
50
51
  path = 'foo/bar'
51
52
 
52
53
  expect {
53
- configuration.table_file = path
54
+ configuration.stats_path = path
54
55
  }.not_to raise_error
55
56
 
56
- expect(configuration.table_file).to be_a(Pathname)
57
- expect(configuration.table_file.to_s).to eq(path)
57
+ expect(configuration.stats_path).to be_a(Pathname)
58
+ expect(configuration.stats_path.to_s).to eq(path)
58
59
  end
59
60
 
60
61
  end
@@ -64,7 +65,7 @@ describe DeltaTest::Configuration do
64
65
  describe '#base_path' do
65
66
 
66
67
  it 'should raise an error if `base_path` is a relative path' do
67
- configuration.base_path = "relative/path"
68
+ configuration.base_path = 'relative/path'
68
69
 
69
70
  expect {
70
71
  configuration.validate!
@@ -72,13 +73,71 @@ describe DeltaTest::Configuration do
72
73
  end
73
74
 
74
75
  it 'should not raise if `base_path` is a absolute path' do
75
- configuration.base_path = "/absolute/path"
76
+ configuration.base_path = '/absolute/path'
76
77
 
77
78
  expect {
78
79
  configuration.validate!
79
80
  }.not_to raise_error
80
81
  end
81
82
 
83
+ it 'should raise if `base_path` is not managed by git' do
84
+ configuration.base_path = '/absolute/path'
85
+ allow_any_instance_of(DeltaTest::Git).to receive(:git_repo?).and_return(false)
86
+
87
+ expect {
88
+ configuration.validate!
89
+ }.to raise_error
90
+ end
91
+
92
+ end
93
+
94
+ describe '#stats_path' do
95
+
96
+ it 'should raise an error if `stats_path` is a relative path' do
97
+ configuration.stats_path = 'relative/path'
98
+
99
+ expect {
100
+ configuration.validate!
101
+ }.to raise_error(/stats_path/)
102
+ end
103
+
104
+ it 'should not raise if `stats_path` is a absolute path' do
105
+ configuration.stats_path= '/absolute/path'
106
+
107
+ expect {
108
+ configuration.validate!
109
+ }.not_to raise_error
110
+ end
111
+
112
+ it 'should raise if `stats_path` is not managed by git' do
113
+ configuration.stats_path = '/absolute/path'
114
+ allow_any_instance_of(DeltaTest::Git).to receive(:git_repo?).and_return(false)
115
+
116
+ expect {
117
+ configuration.validate!
118
+ }.to raise_error
119
+ end
120
+
121
+ end
122
+
123
+ describe '#stats_life' do
124
+
125
+ it 'should raise an error if `stats_life` is not an integer' do
126
+ configuration.stats_life = '100'
127
+
128
+ expect {
129
+ configuration.validate!
130
+ }.to raise_error(/stats_life/)
131
+ end
132
+
133
+ it 'should raise an error if `stats_life` is not a real number' do
134
+ configuration.stats_life = -100
135
+
136
+ expect {
137
+ configuration.validate!
138
+ }.to raise_error(/stats_life/)
139
+ end
140
+
82
141
  end
83
142
 
84
143
  describe '#files' do
@@ -200,40 +259,41 @@ describe DeltaTest::Configuration do
200
259
 
201
260
  end
202
261
 
203
- describe '#table_file_path' do
262
+ describe '#stats_path' do
204
263
 
205
- it 'should return an absolute path to the table file if `table_file` is a relative' do
264
+ it 'should return an absolute path to the table file if `stats_path` is a relative' do
206
265
  configuration.base_path = '/base_path'
207
- configuration.table_file = 'somewhere/table_file'
266
+ configuration.stats_path = 'somewhere/stats_path'
208
267
 
209
268
  configuration.precalculate!
210
- expect(configuration.table_file_path).to eq(Pathname.new('/base_path/somewhere/table_file'))
269
+ expect(configuration.stats_path).to eq(Pathname.new('/base_path/somewhere/stats_path'))
211
270
  end
212
271
 
213
- it 'should return the same value to the table file if `table_file` is a absolute' do
272
+ it 'should return the same value to the table file if `stats_path` is a absolute' do
214
273
  configuration.base_path = '/base_path'
215
- configuration.table_file = '/somewhere/table_file'
274
+ configuration.stats_path = '/somewhere/stats_path'
216
275
 
217
276
  configuration.precalculate!
218
- expect(configuration.table_file_path).to eq(Pathname.new('/somewhere/table_file'))
277
+ expect(configuration.stats_path).to eq(Pathname.new('/somewhere/stats_path'))
219
278
  end
220
279
 
221
- context 'With part' do
280
+ end
281
+
282
+ end
222
283
 
223
- it 'should return a path with a part extension' do
224
- configuration.base_path = '/base_path'
225
- configuration.table_file = 'somewhere/table_file'
284
+ describe '#tmp_table_file' do
226
285
 
227
- configuration.precalculate!
228
- expect(configuration.table_file_path(1)).to eq(Pathname.new('/base_path/somewhere/table_file.part-1'))
229
- end
286
+ it 'should return a path with a part extension' do
287
+ configuration.base_path = '/base_path'
288
+ configuration.stats_path = 'somewhere/stats_path'
289
+ tmp_table_file = Pathname.new('%s/%s/tmp/%s' % [configuration.base_path, configuration.stats_path, DeltaTest.tester_id])
230
290
 
291
+ configuration.precalculate!
292
+ expect(configuration.tmp_table_file).to eq(tmp_table_file)
231
293
  end
232
294
 
233
295
  end
234
296
 
235
- end
236
-
237
297
  describe '#update' do
238
298
 
239
299
  it 'should call `validate!` and `precalculate!` after the block' do
@@ -241,10 +301,10 @@ describe DeltaTest::Configuration do
241
301
  allow(dummy).to receive(:not_yet_called)
242
302
  allow(dummy).to receive(:already_called)
243
303
 
244
- expect(dummy).to receive(:not_yet_called).with(no_args).once.ordered
245
- expect(configuration).to receive(:validate!).with(no_args).once.ordered
246
- expect(configuration).to receive(:precalculate!).with(no_args).once.ordered
247
- expect(dummy).to receive(:already_called).with(no_args).once.ordered
304
+ expect(dummy).to receive(:not_yet_called).once.ordered
305
+ expect(configuration).to receive(:validate!).once.ordered
306
+ expect(configuration).to receive(:precalculate!).once.ordered
307
+ expect(dummy).to receive(:already_called).once.ordered
248
308
 
249
309
  configuration.update do |config|
250
310
  dummy.not_yet_called
@@ -263,9 +323,9 @@ describe DeltaTest::Configuration do
263
323
  allow(configuration).to receive(:load_from_file!).and_return(true)
264
324
  allow(configuration).to receive(:retrive_files_from_git_index!).and_return(true)
265
325
 
266
- expect(configuration).to receive(:load_from_file!).with(no_args).once.ordered
267
- expect(configuration).to receive(:retrive_files_from_git_index!).with(no_args).once.ordered
268
- expect(configuration).to receive(:update).with(no_args).once.ordered
326
+ expect(configuration).to receive(:load_from_file!).once.ordered
327
+ expect(configuration).to receive(:retrive_files_from_git_index!).once.ordered
328
+ expect(configuration).to receive(:update).once.ordered
269
329
 
270
330
  configuration.auto_configure!
271
331
  end
@@ -274,15 +334,15 @@ describe DeltaTest::Configuration do
274
334
 
275
335
  describe '#load_from_file!' do
276
336
 
277
- let(:pwd) { '/path/to/pwd' }
278
- let(:yaml_file_path) { '/path/to/delta_test.yml' }
279
- let(:table_file_path) { '/path/to/table_file' }
337
+ let(:pwd) { '/path/to/pwd' }
338
+ let(:yaml_file_path) { '/path/to/delta_test.yml' }
339
+ let(:stats_path) { '/path/to/stats_path' }
280
340
 
281
341
  let(:yaml_file) do
282
342
  file = FakeFS::FakeFile.new
283
343
 
284
344
  file.content = <<-YAML
285
- table_file: #{table_file_path}
345
+ stats_path: #{stats_path}
286
346
  YAML
287
347
 
288
348
  file
@@ -316,7 +376,7 @@ describe DeltaTest::Configuration do
316
376
  configuration.load_from_file!
317
377
  }.not_to raise_error
318
378
 
319
- expect(configuration.table_file).to eq(Pathname.new(table_file_path))
379
+ expect(configuration.stats_path).to eq(Pathname.new(stats_path))
320
380
  end
321
381
 
322
382
  it 'should raise an error if there is invalid option in yaml' do
@@ -334,22 +394,14 @@ describe DeltaTest::Configuration do
334
394
 
335
395
  describe 'retrive_files_from_git_index!' do
336
396
 
337
- it 'should raise an error if not in git repo' do
338
- allow(DeltaTest::Git).to receive(:git_repo?).with(no_args).and_return(false)
339
-
340
- expect {
341
- configuration.retrive_files_from_git_index!
342
- }.to raise_error(DeltaTest::NotInGitRepositoryError)
343
- end
344
-
345
397
  it 'should set `files` from the file indices of git' do
346
398
  files = [
347
399
  'a/file_1',
348
400
  'a/file_2',
349
401
  ]
350
402
 
351
- allow(DeltaTest::Git).to receive(:git_repo?).with(no_args).and_return(true)
352
- allow(DeltaTest::Git).to receive(:ls_files).with(no_args).and_return(files)
403
+ allow_any_instance_of(DeltaTest::Git).to receive(:git_repo?).and_return(true)
404
+ allow_any_instance_of(DeltaTest::Git).to receive(:ls_files).and_return(files)
353
405
 
354
406
  expect {
355
407
  configuration.retrive_files_from_git_index!
@@ -145,7 +145,7 @@ describe DeltaTest::DependenciesTable do
145
145
 
146
146
  end
147
147
 
148
- describe '::load' do
148
+ describe '.load' do
149
149
 
150
150
  include_examples :_create_table
151
151
 
@@ -22,8 +22,8 @@ describe DeltaTest::Generator do
22
22
  before do
23
23
  DeltaTest.configure do |config|
24
24
  config.base_path = base_path
25
- config.table_file = table_file_path
26
25
  config.files = files
26
+ config.stats_path = stats_path
27
27
  end
28
28
 
29
29
  DeltaTest.active = true
@@ -187,11 +187,11 @@ describe DeltaTest::Generator do
187
187
  generator.stop!
188
188
 
189
189
  expect(generator.table).not_to be_empty
190
- expect(table_file.content).to be_empty
190
+ expect(tmp_stats_file.content).to be_empty
191
191
 
192
192
  generator.teardown!
193
193
 
194
- expect(table_file.content).not_to be_empty
194
+ expect(tmp_stats_file.content).not_to be_empty
195
195
  end
196
196
 
197
197
  end