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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +22 -34
- data/Rakefile +5 -2
- data/bin/delta_test +1 -1
- data/circle.yml +5 -1
- data/delta_test.gemspec +1 -1
- data/lib/delta_test/cli/command_base.rb +114 -0
- data/lib/delta_test/cli/exec_command.rb +95 -0
- data/lib/delta_test/cli/help_command.rb +38 -0
- data/lib/delta_test/cli/specs_command.rb +43 -0
- data/lib/delta_test/cli/stats_clean_command.rb +20 -0
- data/lib/delta_test/cli/stats_save_command.rb +67 -0
- data/lib/delta_test/cli/stats_show_command.rb +46 -0
- data/lib/delta_test/cli/version_command.rb +13 -0
- data/lib/delta_test/cli.rb +22 -296
- data/lib/delta_test/configuration.rb +57 -42
- data/lib/delta_test/errors.rb +24 -0
- data/lib/delta_test/generator.rb +4 -24
- data/lib/delta_test/git.rb +161 -80
- data/lib/delta_test/profiler.rb +8 -0
- data/lib/delta_test/related_spec_list.rb +14 -9
- data/lib/delta_test/stats.rb +41 -0
- data/lib/delta_test/version.rb +2 -2
- data/lib/delta_test.rb +14 -9
- data/spec/lib/delta_test/cli/command_base_spec.rb +164 -0
- data/spec/lib/delta_test/cli/exec_command_spec.rb +128 -0
- data/spec/lib/delta_test/cli/help_command_spec.rb +17 -0
- data/spec/lib/delta_test/cli/specs_command_spec.rb +54 -0
- data/spec/lib/delta_test/cli/stats_clean_command_spec.rb +39 -0
- data/spec/lib/delta_test/cli/stats_save_command_spec.rb +207 -0
- data/spec/lib/delta_test/cli/stats_show_command_spec.rb +52 -0
- data/spec/lib/delta_test/cli/version_command_spec.rb +17 -0
- data/spec/lib/delta_test/cli_spec.rb +47 -386
- data/spec/lib/delta_test/configuration_spec.rb +99 -47
- data/spec/lib/delta_test/dependencies_table_spec.rb +1 -1
- data/spec/lib/delta_test/generator_spec.rb +3 -3
- data/spec/lib/delta_test/git_spec.rb +291 -50
- data/spec/lib/delta_test/profiler_spec.rb +3 -3
- data/spec/lib/delta_test/related_spec_list_spec.rb +12 -14
- data/spec/lib/delta_test/stats_spec.rb +89 -0
- data/spec/lib/delta_test/utils_spec.rb +4 -4
- data/spec/lib/delta_test_spec.rb +13 -4
- data/spec/rails/Gemfile.lock +5 -2
- data/spec/rails/app/models/category.rb +4 -0
- data/spec/rails/delta_test.yml +4 -3
- data/spec/rails/spec/models/category_spec.rb +4 -0
- data/spec/spec_helper.rb +9 -2
- data/spec/supports/create_table_file.rb +11 -1
- data/visual.jpg +0 -0
- metadata +32 -4
@@ -6,92 +6,118 @@ describe DeltaTest::Git do
|
|
6
6
|
let(:success_status) { [out, '', double(success?: true)] }
|
7
7
|
let(:error_status) { ['', '', double(success?: false)] }
|
8
8
|
|
9
|
-
|
9
|
+
let(:git) { DeltaTest::Git.new('.') }
|
10
10
|
|
11
|
-
|
11
|
+
describe '.new' do
|
12
|
+
|
13
|
+
it 'sholud execute commands in the specified directory' do
|
14
|
+
dir = '/dir'
|
15
|
+
git = DeltaTest::Git.new(dir)
|
16
|
+
expect(git.dir).to be_a_kind_of(Pathname)
|
17
|
+
expect(git.dir.to_s).to eq(dir)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#git_repo?' do
|
23
|
+
|
24
|
+
let(:subcommand) { ['rev-parse --is-inside-work-tree'] }
|
25
|
+
|
26
|
+
before do
|
27
|
+
allow(git).to receive(:git_repo?).and_call_original
|
28
|
+
end
|
12
29
|
|
13
30
|
it 'should return false if `git` command is not exist' do
|
14
|
-
|
31
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
32
|
+
allow(Open3).to receive(:capture3).and_raise
|
15
33
|
|
16
34
|
result = nil
|
17
35
|
|
18
36
|
expect {
|
19
|
-
result =
|
37
|
+
result = git.git_repo?
|
20
38
|
}.not_to raise_error
|
21
39
|
|
22
40
|
expect(result).to be(false)
|
23
41
|
end
|
24
42
|
|
25
43
|
it 'should return true exit code is 0' do
|
26
|
-
|
44
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
45
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
27
46
|
|
28
|
-
expect(
|
47
|
+
expect(git.git_repo?).to be(true)
|
29
48
|
end
|
30
49
|
|
31
50
|
it 'should return false exit code not is 0' do
|
32
|
-
|
51
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
52
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
33
53
|
|
34
|
-
expect(
|
54
|
+
expect(git.git_repo?).to be(false)
|
35
55
|
end
|
36
56
|
|
37
57
|
end
|
38
58
|
|
39
|
-
describe '
|
59
|
+
describe '#root_dir' do
|
40
60
|
|
41
|
-
let(:
|
42
|
-
let(:out)
|
61
|
+
let(:subcommand) { ['rev-parse --show-toplevel'] }
|
62
|
+
let(:out) { '/root/dir' }
|
43
63
|
|
44
64
|
it 'should raise an error if the command is not exist' do
|
45
|
-
|
65
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
66
|
+
allow(Open3).to receive(:capture3).and_raise
|
46
67
|
|
47
68
|
expect {
|
48
|
-
|
69
|
+
git.root_dir
|
49
70
|
}.to raise_error
|
50
71
|
end
|
51
72
|
|
52
73
|
it 'should return a root directory path if success' do
|
53
|
-
|
74
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
75
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
54
76
|
|
55
|
-
expect(
|
77
|
+
expect(git.root_dir).to eq(out)
|
56
78
|
end
|
57
79
|
|
58
80
|
it 'should return nil if error' do
|
59
|
-
|
81
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
82
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
60
83
|
|
61
|
-
expect(
|
84
|
+
expect(git.root_dir).to be_nil
|
62
85
|
end
|
63
86
|
|
64
87
|
end
|
65
88
|
|
66
|
-
describe '
|
89
|
+
describe '#rev_parse' do
|
67
90
|
|
68
|
-
let(:rev)
|
69
|
-
let(:
|
70
|
-
let(:out)
|
91
|
+
let(:rev) { 'HEAD' }
|
92
|
+
let(:subcommand) { ['rev-parse %s', rev] }
|
93
|
+
let(:out) { '818b60efa12b4bd99815e9b550185d1fb6244663' }
|
71
94
|
|
72
95
|
it 'should raise an error if the command is not exist' do
|
73
|
-
|
96
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
97
|
+
allow(Open3).to receive(:capture3).and_raise
|
74
98
|
|
75
99
|
expect {
|
76
|
-
|
100
|
+
git.rev_parse(rev)
|
77
101
|
}.to raise_error
|
78
102
|
end
|
79
103
|
|
80
104
|
it 'should return a commit id if success' do
|
81
|
-
|
105
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
106
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
82
107
|
|
83
|
-
expect(
|
108
|
+
expect(git.rev_parse(rev)).to eq(out)
|
84
109
|
end
|
85
110
|
|
86
111
|
it 'should return nil if error' do
|
87
|
-
|
112
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
113
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
88
114
|
|
89
|
-
expect(
|
115
|
+
expect(git.rev_parse(rev)).to be_nil
|
90
116
|
end
|
91
117
|
|
92
118
|
end
|
93
119
|
|
94
|
-
describe '
|
120
|
+
describe '#same_commit?' do
|
95
121
|
|
96
122
|
let(:map) do
|
97
123
|
{
|
@@ -103,74 +129,289 @@ describe DeltaTest::Git do
|
|
103
129
|
|
104
130
|
before do
|
105
131
|
map.each do |name, commit_id|
|
106
|
-
allow(
|
132
|
+
allow(git).to receive(:rev_parse).with(name).and_return(commit_id)
|
107
133
|
end
|
108
134
|
end
|
109
135
|
|
110
136
|
it 'should compare two names by thier commit ids' do
|
111
137
|
names = map.values
|
112
138
|
names.product(names).each do |r1, r2|
|
113
|
-
expect(
|
114
|
-
expect(
|
139
|
+
expect(git).to receive(:rev_parse).with(r1).ordered
|
140
|
+
expect(git).to receive(:rev_parse).with(r2).ordered
|
115
141
|
|
116
142
|
is_same = (map[r1] == map[r2])
|
117
143
|
|
118
|
-
expect(
|
144
|
+
expect(git.same_commit?(r1, r2)).to be(is_same)
|
119
145
|
end
|
120
146
|
end
|
121
147
|
|
122
148
|
end
|
123
149
|
|
124
|
-
describe '
|
150
|
+
describe '#ls_files' do
|
125
151
|
|
126
|
-
let(:
|
127
|
-
let(:out)
|
152
|
+
let(:subcommand) { ['ls-files -z %s', '.'] }
|
153
|
+
let(:out) { "/a/file/1\x0/a/file/2\x0/a/file/3" }
|
128
154
|
|
129
155
|
it 'should raise an error if the command is not exist' do
|
130
|
-
|
156
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
157
|
+
allow(Open3).to receive(:capture3).and_raise
|
131
158
|
|
132
159
|
expect {
|
133
|
-
|
160
|
+
git.ls_files
|
134
161
|
}.to raise_error
|
135
162
|
end
|
136
163
|
|
137
164
|
it 'should return an array if success' do
|
138
|
-
|
165
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
166
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
139
167
|
|
140
|
-
expect(
|
168
|
+
expect(git.ls_files).to eq(out.split("\x0"))
|
141
169
|
end
|
142
170
|
|
143
171
|
it 'should return an empty array if error' do
|
144
|
-
|
172
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
173
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
145
174
|
|
146
|
-
expect(
|
175
|
+
expect(git.ls_files).to eq([])
|
147
176
|
end
|
148
177
|
|
149
178
|
end
|
150
179
|
|
151
|
-
describe '
|
180
|
+
describe '#changed_files' do
|
152
181
|
|
153
|
-
let(:
|
154
|
-
let(:out)
|
182
|
+
let(:subcommand) { ['diff --name-only -z %s %s %s', 'master', 'HEAD', '.'] }
|
183
|
+
let(:out) { "/a/file/1\x0/a/file/2\x0/a/file/3" }
|
155
184
|
|
156
185
|
it 'should raise an error if the command is not exist' do
|
157
|
-
|
186
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
187
|
+
allow(Open3).to receive(:capture3).and_raise
|
158
188
|
|
159
189
|
expect {
|
160
|
-
|
190
|
+
git.changed_files
|
161
191
|
}.to raise_error
|
162
192
|
end
|
163
193
|
|
164
194
|
it 'should return an array if success' do
|
165
|
-
|
195
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
196
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
166
197
|
|
167
|
-
expect(
|
198
|
+
expect(git.changed_files).to eq(out.split("\x0"))
|
168
199
|
end
|
169
200
|
|
170
201
|
it 'should return an empty array if error' do
|
171
|
-
|
202
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
203
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
204
|
+
|
205
|
+
expect(git.changed_files).to eq([])
|
206
|
+
end
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
describe '#ls_hashes' do
|
211
|
+
|
212
|
+
let(:subcommand) { [%q{log -z -n %d --format='%%H'}, 10] }
|
213
|
+
let(:out) { "0000\x01111\x02222" }
|
214
|
+
|
215
|
+
it 'should raise an error if the command is not exist' do
|
216
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
217
|
+
allow(Open3).to receive(:capture3).and_raise
|
218
|
+
|
219
|
+
expect {
|
220
|
+
git.ls_hashes(10)
|
221
|
+
}.to raise_error
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'should return an array if success' do
|
225
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
226
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
227
|
+
|
228
|
+
expect(git.ls_hashes(10)).to eq(out.split("\x0"))
|
229
|
+
end
|
230
|
+
|
231
|
+
it 'should return an empty array if error' do
|
232
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
233
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
234
|
+
|
235
|
+
expect(git.ls_hashes(10)).to eq([])
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
239
|
+
|
240
|
+
describe '#remote_url' do
|
241
|
+
|
242
|
+
let(:subcommand) { ['config --get remote.origin.url'] }
|
243
|
+
let(:out) { 'git@example.com:test/test.git' }
|
244
|
+
|
245
|
+
it 'should raise an error if the command is not exist' do
|
246
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
247
|
+
allow(Open3).to receive(:capture3).and_raise
|
248
|
+
|
249
|
+
expect {
|
250
|
+
git.remote_url
|
251
|
+
}.to raise_error
|
252
|
+
end
|
253
|
+
|
254
|
+
it 'should return an url if success' do
|
255
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
256
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
257
|
+
|
258
|
+
expect(git.remote_url).to eq(out)
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'should return nil if error' do
|
262
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
263
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
264
|
+
|
265
|
+
expect(git.remote_url).to be_nil
|
266
|
+
end
|
267
|
+
|
268
|
+
end
|
269
|
+
|
270
|
+
describe '#has_remote?' do
|
271
|
+
|
272
|
+
let(:subcommand) { ['config --get remote.origin.url'] }
|
273
|
+
let(:out) { 'git@example.com:test/test.git' }
|
274
|
+
|
275
|
+
it 'should return false if the command is not exist' do
|
276
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
277
|
+
allow(Open3).to receive(:capture3).and_raise
|
278
|
+
|
279
|
+
res = nil
|
280
|
+
|
281
|
+
expect {
|
282
|
+
res = git.has_remote?
|
283
|
+
}.not_to raise_error
|
284
|
+
expect(res).to be(false)
|
285
|
+
end
|
286
|
+
|
287
|
+
it 'should return true if it has a remote origin' do
|
288
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
289
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
290
|
+
|
291
|
+
expect(git.has_remote?).to be(true)
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'should return false if not' do
|
295
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
296
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
297
|
+
|
298
|
+
expect(git.has_remote?).to be(false)
|
299
|
+
end
|
300
|
+
|
301
|
+
end
|
302
|
+
|
303
|
+
describe '#pull' do
|
304
|
+
|
305
|
+
let(:subcommand) { ['pull origin master'] }
|
306
|
+
|
307
|
+
it 'should raise an error if the command is not exist' do
|
308
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
309
|
+
allow(Open3).to receive(:capture3).and_raise
|
310
|
+
|
311
|
+
expect {
|
312
|
+
git.pull
|
313
|
+
}.to raise_error
|
314
|
+
end
|
315
|
+
|
316
|
+
it 'should return true if success' do
|
317
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
318
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
319
|
+
|
320
|
+
expect(git.pull).to be(true)
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'should return false if error' do
|
324
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
325
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
326
|
+
|
327
|
+
expect(git.pull).to be(false)
|
328
|
+
end
|
329
|
+
|
330
|
+
end
|
331
|
+
|
332
|
+
describe '#push' do
|
333
|
+
|
334
|
+
let(:subcommand) { ['push origin master'] }
|
335
|
+
|
336
|
+
it 'should raise an error if the command is not exist' do
|
337
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
338
|
+
allow(Open3).to receive(:capture3).and_raise
|
339
|
+
|
340
|
+
expect {
|
341
|
+
git.push
|
342
|
+
}.to raise_error
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'should return true if success' do
|
346
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
347
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
348
|
+
|
349
|
+
expect(git.push).to be(true)
|
350
|
+
end
|
351
|
+
|
352
|
+
it 'should return false if error' do
|
353
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
354
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
355
|
+
|
356
|
+
expect(git.push).to be(false)
|
357
|
+
end
|
358
|
+
|
359
|
+
end
|
360
|
+
|
361
|
+
describe '#add' do
|
362
|
+
|
363
|
+
let(:subcommand) { ['add %s', '/a/path'] }
|
364
|
+
|
365
|
+
it 'should raise an error if the command is not exist' do
|
366
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
367
|
+
allow(Open3).to receive(:capture3).and_raise
|
368
|
+
|
369
|
+
expect {
|
370
|
+
git.add('/a/path')
|
371
|
+
}.to raise_error
|
372
|
+
end
|
373
|
+
|
374
|
+
it 'should return true if success' do
|
375
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
376
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
377
|
+
|
378
|
+
expect(git.add('/a/path')).to be(true)
|
379
|
+
end
|
380
|
+
|
381
|
+
it 'should return false if error' do
|
382
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
383
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
384
|
+
|
385
|
+
expect(git.add('/a/path')).to be(false)
|
386
|
+
end
|
387
|
+
|
388
|
+
end
|
389
|
+
|
390
|
+
describe '#commit' do
|
391
|
+
|
392
|
+
let(:subcommand) { ['commit -m %s', 'message'] }
|
393
|
+
|
394
|
+
it 'should raise an error if the command is not exist' do
|
395
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
396
|
+
allow(Open3).to receive(:capture3).and_raise
|
397
|
+
|
398
|
+
expect {
|
399
|
+
git.commit('message')
|
400
|
+
}.to raise_error
|
401
|
+
end
|
402
|
+
|
403
|
+
it 'should return true if success' do
|
404
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
405
|
+
allow(Open3).to receive(:capture3).and_return(success_status)
|
406
|
+
|
407
|
+
expect(git.commit('message')).to be(true)
|
408
|
+
end
|
409
|
+
|
410
|
+
it 'should return false if error' do
|
411
|
+
expect(git).to receive(:exec).with(*subcommand).and_call_original
|
412
|
+
allow(Open3).to receive(:capture3).and_return(error_status)
|
172
413
|
|
173
|
-
expect(
|
414
|
+
expect(git.commit('message')).to be(false)
|
174
415
|
end
|
175
416
|
|
176
417
|
end
|
@@ -6,7 +6,7 @@ describe DeltaTest::Profiler do
|
|
6
6
|
DeltaTest::Profiler.clean!
|
7
7
|
end
|
8
8
|
|
9
|
-
describe '
|
9
|
+
describe '.start!' do
|
10
10
|
|
11
11
|
it 'should start profiler' do
|
12
12
|
expect(DeltaTest::Profiler.running?).to be(false)
|
@@ -20,7 +20,7 @@ describe DeltaTest::Profiler do
|
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
|
-
describe '
|
23
|
+
describe '.stop!' do
|
24
24
|
|
25
25
|
it 'should not raise error if the profiler not yet started' do
|
26
26
|
expect {
|
@@ -43,7 +43,7 @@ describe DeltaTest::Profiler do
|
|
43
43
|
|
44
44
|
end
|
45
45
|
|
46
|
-
describe '
|
46
|
+
describe '.last_result' do
|
47
47
|
|
48
48
|
it 'should retrun an array if not yet started' do
|
49
49
|
files = DeltaTest::Profiler.last_result
|
@@ -4,16 +4,14 @@ describe DeltaTest::RelatedSpecList do
|
|
4
4
|
|
5
5
|
include_examples :defer_create_table_file
|
6
6
|
|
7
|
-
let(:base) { 'master' }
|
8
|
-
let(:head) { 'feature/foo' }
|
9
7
|
let(:list) { DeltaTest::RelatedSpecList.new }
|
10
8
|
|
11
|
-
let(:
|
9
|
+
let(:base_commit) { '1111111111111111111111111111111111111111' }
|
10
|
+
let(:base_path) { '/base_path' }
|
12
11
|
|
13
12
|
before do
|
14
13
|
DeltaTest.configure do |config|
|
15
|
-
config.base_path
|
16
|
-
config.table_file = table_file_path
|
14
|
+
config.base_path = base_path
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -41,8 +39,8 @@ describe DeltaTest::RelatedSpecList do
|
|
41
39
|
before do
|
42
40
|
allow(DeltaTest::DependenciesTable).to receive(:load).with(Pathname.new(table_file_path)).and_return(table)
|
43
41
|
|
44
|
-
allow(
|
45
|
-
allow(
|
42
|
+
allow(list.git).to receive(:git_repo?).and_return(true)
|
43
|
+
allow(list.git).to receive(:changed_files).with(base_commit).and_return(changed_files)
|
46
44
|
end
|
47
45
|
|
48
46
|
end
|
@@ -51,7 +49,7 @@ describe DeltaTest::RelatedSpecList do
|
|
51
49
|
|
52
50
|
it 'should raise an error if a table file is not exist' do
|
53
51
|
expect {
|
54
|
-
list.load_table!
|
52
|
+
list.load_table!(table_file_path)
|
55
53
|
}.to raise_error(DeltaTest::TableNotFoundError)
|
56
54
|
end
|
57
55
|
|
@@ -61,7 +59,7 @@ describe DeltaTest::RelatedSpecList do
|
|
61
59
|
expect(list.table).to be_nil
|
62
60
|
|
63
61
|
expect {
|
64
|
-
list.load_table!
|
62
|
+
list.load_table!(table_file_path)
|
65
63
|
}.not_to raise_error
|
66
64
|
|
67
65
|
expect(list.table).to be_a(DeltaTest::DependenciesTable)
|
@@ -74,17 +72,17 @@ describe DeltaTest::RelatedSpecList do
|
|
74
72
|
include_examples :_mock_table_and_changed_files
|
75
73
|
|
76
74
|
it 'shoud raise an error if the directory is not managed by git' do
|
77
|
-
allow(
|
75
|
+
allow(list.git).to receive(:git_repo?).and_return(false)
|
78
76
|
|
79
77
|
expect {
|
80
|
-
list.retrive_changed_files!(
|
78
|
+
list.retrive_changed_files!(base_commit)
|
81
79
|
}.to raise_error(DeltaTest::NotInGitRepositoryError)
|
82
80
|
end
|
83
81
|
|
84
82
|
it 'shoud retrive a list of changed files' do
|
85
83
|
expect(list.changed_files).to be_nil
|
86
84
|
|
87
|
-
list.retrive_changed_files!(
|
85
|
+
list.retrive_changed_files!(base_commit)
|
88
86
|
|
89
87
|
expect(list.changed_files).to be_a(Array)
|
90
88
|
expect(list.changed_files).not_to be_empty
|
@@ -98,8 +96,8 @@ describe DeltaTest::RelatedSpecList do
|
|
98
96
|
|
99
97
|
before do
|
100
98
|
table_file
|
101
|
-
list.load_table!
|
102
|
-
list.retrive_changed_files!(
|
99
|
+
list.load_table!(table_file_path)
|
100
|
+
list.retrive_changed_files!(base_commit)
|
103
101
|
end
|
104
102
|
|
105
103
|
describe '#dependents' do
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'delta_test/stats'
|
2
|
+
require 'delta_test/git'
|
3
|
+
|
4
|
+
describe DeltaTest::Stats do
|
5
|
+
|
6
|
+
describe '.new' do
|
7
|
+
|
8
|
+
it 'should initialize git instances for base_path and stats_path' do
|
9
|
+
expect(DeltaTest::Git).to receive(:new).with(DeltaTest.config.base_path)
|
10
|
+
expect(DeltaTest::Git).to receive(:new).with(DeltaTest.config.stats_path)
|
11
|
+
expect {
|
12
|
+
DeltaTest::Stats.new
|
13
|
+
}.not_to raise_error
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:stats) { DeltaTest::Stats.new }
|
19
|
+
|
20
|
+
let(:commit_hashes) do
|
21
|
+
[
|
22
|
+
'4444444444444444444444444444444444444444',
|
23
|
+
'3333333333333333333333333333333333333333',
|
24
|
+
'2222222222222222222222222222222222222222',
|
25
|
+
'1111111111111111111111111111111111111111',
|
26
|
+
'0000000000000000000000000000000000000000',
|
27
|
+
]
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:files) do
|
31
|
+
[
|
32
|
+
'11/11111111111111111111111111111111111111/foo.txt',
|
33
|
+
'11/11111111111111111111111111111111111111/table.marshal',
|
34
|
+
'33/33333333333333333333333333333333333333/bar.txt',
|
35
|
+
'33/33333333333333333333333333333333333333/table.marshal',
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
before do
|
40
|
+
allow_any_instance_of(DeltaTest::Git).to receive(:ls_hashes)
|
41
|
+
.with(DeltaTest.config.stats_life)
|
42
|
+
.and_return(commit_hashes)
|
43
|
+
allow_any_instance_of(DeltaTest::Git).to receive(:ls_files).and_return([])
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#base_commit' do
|
47
|
+
|
48
|
+
it 'should return a base commit if exists' do
|
49
|
+
allow_any_instance_of(DeltaTest::Git).to receive(:ls_files).and_return(files)
|
50
|
+
expect(stats.base_commit).to eq('3333333333333333333333333333333333333333')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should return nil if not exists' do
|
54
|
+
expect(stats.base_commit).to be_nil
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#commit_dir' do
|
60
|
+
|
61
|
+
let(:commit_dir) { DeltaTest.config.stats_path.join('33/33333333333333333333333333333333333333') }
|
62
|
+
|
63
|
+
it 'should return a file for the commit hash if base_commit exists' do
|
64
|
+
allow_any_instance_of(DeltaTest::Git).to receive(:ls_files).and_return(files)
|
65
|
+
expect(stats.commit_dir).to eq(commit_dir)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should return nil if base_commit does not exist' do
|
69
|
+
expect(stats.commit_dir).to be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#table_file_path' do
|
75
|
+
|
76
|
+
let(:table_file_path) { DeltaTest.config.stats_path.join('33/33333333333333333333333333333333333333/table.marshal') }
|
77
|
+
|
78
|
+
it 'should return a path of table file' do
|
79
|
+
allow_any_instance_of(DeltaTest::Git).to receive(:ls_files).and_return(files)
|
80
|
+
expect(stats.table_file_path).to eq(table_file_path)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should return nil if base_commit does not exist' do
|
84
|
+
expect(stats.table_file_path).to be_nil
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -2,7 +2,7 @@ require 'delta_test/utils'
|
|
2
2
|
|
3
3
|
describe DeltaTest::Utils do
|
4
4
|
|
5
|
-
describe '
|
5
|
+
describe '.regulate_filepath' do
|
6
6
|
|
7
7
|
let(:base_path) { Pathname.new('/base_path') }
|
8
8
|
|
@@ -28,7 +28,7 @@ describe DeltaTest::Utils do
|
|
28
28
|
|
29
29
|
end
|
30
30
|
|
31
|
-
describe '
|
31
|
+
describe '.find_file_upward' do
|
32
32
|
|
33
33
|
let(:file) { FakeFS::FakeFile.new }
|
34
34
|
let(:file_name) { 'file' }
|
@@ -131,7 +131,7 @@ describe DeltaTest::Utils do
|
|
131
131
|
|
132
132
|
end
|
133
133
|
|
134
|
-
describe '
|
134
|
+
describe '.grep_pattern_to_regexp' do
|
135
135
|
|
136
136
|
# private method
|
137
137
|
let(:grep_pattern_to_regexp) { DeltaTest::Utils.method(:grep_pattern_to_regexp) }
|
@@ -177,7 +177,7 @@ describe DeltaTest::Utils do
|
|
177
177
|
|
178
178
|
end
|
179
179
|
|
180
|
-
describe '
|
180
|
+
describe '.files_grep' do
|
181
181
|
|
182
182
|
let(:files) do
|
183
183
|
[
|