delta_test 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/README.md +63 -14
- data/Rakefile +16 -3
- data/circle.yml +8 -1
- data/delta_test.gemspec +4 -3
- data/ext/delta_test/delta_test_native.c +154 -0
- data/ext/delta_test/delta_test_native.h +15 -0
- data/ext/delta_test/extconf.rb +12 -0
- data/lib/delta_test.rb +8 -2
- data/lib/delta_test/cli.rb +108 -21
- data/lib/delta_test/configuration.rb +91 -35
- data/lib/delta_test/dependencies_table.rb +15 -1
- data/lib/delta_test/generator.rb +42 -29
- data/lib/delta_test/profiler.rb +5 -0
- data/lib/delta_test/related_spec_list.rb +67 -8
- data/lib/delta_test/spec_helpers.rb +9 -7
- data/lib/delta_test/version.rb +1 -1
- data/spec/lib/delta_test/cli_spec.rb +26 -5
- data/spec/lib/delta_test/configuration_spec.rb +12 -0
- data/spec/lib/delta_test/dependencies_table_spec.rb +35 -0
- data/spec/lib/delta_test/generator_spec.rb +34 -17
- data/spec/lib/delta_test/profiler_spec.rb +121 -0
- data/spec/lib/delta_test/related_spec_list_spec.rb +150 -34
- data/spec/lib/delta_test/spec_helpers_spec.rb +11 -5
- data/spec/rails/Gemfile +8 -2
- data/spec/rails/Gemfile.lock +37 -3
- data/spec/rails/app/models/category.rb +14 -0
- data/spec/rails/app/models/comment.rb +20 -0
- data/spec/rails/app/models/post.rb +23 -0
- data/spec/rails/app/models/post_categorizing.rb +14 -0
- data/spec/rails/app/models/user.rb +15 -0
- data/spec/rails/db/migrate/20150518052022_create_users.rb +9 -0
- data/spec/rails/db/migrate/20150518052057_create_posts.rb +11 -0
- data/spec/rails/db/migrate/20150518052332_create_comments.rb +11 -0
- data/spec/rails/db/migrate/20150518052523_create_categories.rb +9 -0
- data/spec/rails/db/migrate/20150518052604_create_post_categorizings.rb +10 -0
- data/spec/rails/db/schema.rb +59 -0
- data/spec/rails/spec/factories/categories.rb +5 -0
- data/spec/rails/spec/factories/comments.rb +8 -0
- data/spec/rails/spec/factories/post_categorizings.rb +6 -0
- data/spec/rails/spec/factories/posts.rb +7 -0
- data/spec/rails/spec/factories/users.rb +5 -0
- data/spec/rails/spec/models/category_spec.rb +3 -0
- data/spec/rails/spec/models/comment_spec.rb +3 -0
- data/spec/rails/spec/models/post_categorizing_spec.rb +3 -0
- data/spec/rails/spec/models/post_spec.rb +3 -0
- data/spec/rails/spec/models/user_spec.rb +20 -0
- data/spec/rails/spec/spec_helper.rb +53 -9
- data/spec/spec_helper.rb +2 -0
- metadata +79 -19
- data/lib/delta_test/analyzer.rb +0 -47
- data/spec/lib/delta_test/analyzer_spec.rb +0 -126
@@ -92,7 +92,7 @@ describe DeltaTest::RelatedSpecList do
|
|
92
92
|
|
93
93
|
end
|
94
94
|
|
95
|
-
|
95
|
+
context 'Related spec files' do
|
96
96
|
|
97
97
|
include_examples :_mock_table_and_changed_files
|
98
98
|
|
@@ -102,45 +102,49 @@ describe DeltaTest::RelatedSpecList do
|
|
102
102
|
list.retrive_changed_files!(base, head)
|
103
103
|
end
|
104
104
|
|
105
|
-
describe '
|
105
|
+
describe '#dependents' do
|
106
106
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
107
|
+
describe 'Dependents' do
|
108
|
+
|
109
|
+
let(:dependents) do
|
110
|
+
Set[
|
111
|
+
'spec/foo_spec.rb',
|
112
|
+
'spec/mixed_spec.rb',
|
113
|
+
]
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'should be included' do
|
117
|
+
expect(list.dependents).to eq(dependents)
|
118
|
+
end
|
113
119
|
|
114
|
-
it 'should be included' do
|
115
|
-
expect(list.related_spec_files).to eq(related_spec_files)
|
116
120
|
end
|
117
121
|
|
118
|
-
|
122
|
+
describe 'Modified spec files' do
|
119
123
|
|
120
|
-
|
124
|
+
let(:changed_files) do
|
125
|
+
[
|
126
|
+
'lib/foo.rb',
|
127
|
+
'spec/baz_spec.rb',
|
128
|
+
]
|
129
|
+
end
|
121
130
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
131
|
+
let(:dependents) do
|
132
|
+
Set[
|
133
|
+
'spec/foo_spec.rb',
|
134
|
+
'spec/mixed_spec.rb',
|
135
|
+
'spec/baz_spec.rb',
|
136
|
+
]
|
137
|
+
end
|
128
138
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
'spec/mixed_spec.rb',
|
133
|
-
'spec/baz_spec.rb',
|
134
|
-
]
|
135
|
-
end
|
139
|
+
it 'should be included' do
|
140
|
+
expect(list.dependents).to eq(dependents)
|
141
|
+
end
|
136
142
|
|
137
|
-
it 'should be included' do
|
138
|
-
expect(list.related_spec_files).to eq(related_spec_files)
|
139
143
|
end
|
140
144
|
|
141
145
|
end
|
142
146
|
|
143
|
-
describe '
|
147
|
+
describe '#customs' do
|
144
148
|
|
145
149
|
let(:custom_mappings) do
|
146
150
|
{
|
@@ -152,15 +156,12 @@ describe DeltaTest::RelatedSpecList do
|
|
152
156
|
|
153
157
|
let(:changed_files) do
|
154
158
|
[
|
155
|
-
'lib/foo.rb',
|
156
159
|
'config/locales/something/en.yml',
|
157
160
|
]
|
158
161
|
end
|
159
162
|
|
160
|
-
let(:
|
163
|
+
let(:customs) do
|
161
164
|
Set[
|
162
|
-
'spec/foo_spec.rb',
|
163
|
-
'spec/mixed_spec.rb',
|
164
165
|
'spec/other_spec.rb',
|
165
166
|
]
|
166
167
|
end
|
@@ -171,8 +172,123 @@ describe DeltaTest::RelatedSpecList do
|
|
171
172
|
end
|
172
173
|
end
|
173
174
|
|
174
|
-
|
175
|
-
|
175
|
+
after do
|
176
|
+
DeltaTest.configure do |config|
|
177
|
+
config.custom_mappings = {}
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should include custom mapped files' do
|
182
|
+
expect(list.customs).to eq(customs)
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
186
|
+
|
187
|
+
describe '#full_tests?' do
|
188
|
+
|
189
|
+
context 'No file in full test patterns is changed' do
|
190
|
+
|
191
|
+
let(:changed_files) do
|
192
|
+
[
|
193
|
+
'spec/other_spec.rb',
|
194
|
+
]
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'should return false' do
|
198
|
+
expect(list.full_tests?).to be(false)
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'No file in full test patterns is changed' do
|
204
|
+
|
205
|
+
let(:full_test_patterns) do
|
206
|
+
[
|
207
|
+
'spec/other_spec.rb',
|
208
|
+
]
|
209
|
+
end
|
210
|
+
|
211
|
+
let(:changed_files) do
|
212
|
+
[
|
213
|
+
'spec/other_spec.rb',
|
214
|
+
]
|
215
|
+
end
|
216
|
+
|
217
|
+
before do
|
218
|
+
DeltaTest.configure do |config|
|
219
|
+
config.full_test_patterns = full_test_patterns
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
after do
|
224
|
+
DeltaTest.configure do |config|
|
225
|
+
config.full_test_patterns = []
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'should return true' do
|
230
|
+
expect(list.full_tests?).to be(true)
|
231
|
+
end
|
232
|
+
|
233
|
+
end
|
234
|
+
|
235
|
+
end
|
236
|
+
|
237
|
+
describe '#full' do
|
238
|
+
|
239
|
+
let(:full_spec_files) do
|
240
|
+
Set[
|
241
|
+
'spec/foo_spec.rb',
|
242
|
+
'spec/bar_spec.rb',
|
243
|
+
'spec/baz_spec.rb',
|
244
|
+
'spec/other_spec.rb',
|
245
|
+
'spec/mixed_spec.rb',
|
246
|
+
]
|
247
|
+
end
|
248
|
+
|
249
|
+
it 'should return full spec files in the table' do
|
250
|
+
expect(list.full).to eq(full_spec_files)
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
254
|
+
|
255
|
+
describe '#related_spec_files' do
|
256
|
+
|
257
|
+
context 'If `full_tests?` is true' do
|
258
|
+
|
259
|
+
before do
|
260
|
+
allow(list).to receive(:full_tests?).and_return(true)
|
261
|
+
end
|
262
|
+
|
263
|
+
it 'should return full spec files' do
|
264
|
+
expect(list).to receive(:full)
|
265
|
+
expect(list).not_to receive(:dependents)
|
266
|
+
expect(list).not_to receive(:customs)
|
267
|
+
|
268
|
+
list.related_spec_files
|
269
|
+
end
|
270
|
+
|
271
|
+
end
|
272
|
+
|
273
|
+
context 'If `full_tests?` is false' do
|
274
|
+
|
275
|
+
let(:dependents) { Set['dependent_1'] }
|
276
|
+
let(:customs) { Set['custom_1'] }
|
277
|
+
|
278
|
+
before do
|
279
|
+
allow(list).to receive(:full_tests?).and_return(false)
|
280
|
+
allow(list).to receive(:dependents).and_return(dependents)
|
281
|
+
allow(list).to receive(:customs).and_return(customs)
|
282
|
+
end
|
283
|
+
|
284
|
+
it 'should return a union set of dependents and custom' do
|
285
|
+
expect(list).not_to receive(:full)
|
286
|
+
expect(list).to receive(:dependents)
|
287
|
+
expect(list).to receive(:customs)
|
288
|
+
|
289
|
+
expect(list.related_spec_files).to eq(dependents | customs)
|
290
|
+
end
|
291
|
+
|
176
292
|
end
|
177
293
|
|
178
294
|
end
|
@@ -16,14 +16,20 @@ describe DeltaTest::SpecHelpers do
|
|
16
16
|
def metadata
|
17
17
|
{ file_path: 'spec/foo/bar.rb' }
|
18
18
|
end
|
19
|
+
|
20
|
+
def file_path
|
21
|
+
metadata[:file_path]
|
22
|
+
end
|
19
23
|
end
|
20
24
|
end
|
21
25
|
|
22
26
|
allow(DeltaTest).to receive(:active?).and_return(false)
|
23
27
|
end
|
24
28
|
|
29
|
+
let(:generator) { DeltaTest::GeneratorSingleton.instance }
|
30
|
+
|
25
31
|
it 'should define a global generator' do
|
26
|
-
expect(defined?(
|
32
|
+
expect(defined?(generator)).not_to be(false)
|
27
33
|
end
|
28
34
|
|
29
35
|
describe 'when extending' do
|
@@ -31,12 +37,12 @@ describe DeltaTest::SpecHelpers do
|
|
31
37
|
context 'before :all' do
|
32
38
|
|
33
39
|
it 'should call it' do
|
34
|
-
expect(@rspec_example_group).to receive(:before).with(:
|
40
|
+
expect(@rspec_example_group).to receive(:before).with(:all)
|
35
41
|
@rspec_example_group.extend DeltaTest::SpecHelpers
|
36
42
|
end
|
37
43
|
|
38
44
|
it 'should start the generator' do
|
39
|
-
expect(
|
45
|
+
expect(generator).to receive(:start!).with('spec/foo/bar.rb')
|
40
46
|
@rspec_example_group.extend DeltaTest::SpecHelpers
|
41
47
|
end
|
42
48
|
|
@@ -45,12 +51,12 @@ describe DeltaTest::SpecHelpers do
|
|
45
51
|
context 'after :all' do
|
46
52
|
|
47
53
|
it 'should call it' do
|
48
|
-
expect(@rspec_example_group).to receive(:after).with(:
|
54
|
+
expect(@rspec_example_group).to receive(:after).with(:all)
|
49
55
|
@rspec_example_group.extend DeltaTest::SpecHelpers
|
50
56
|
end
|
51
57
|
|
52
58
|
it 'should stop the generator' do
|
53
|
-
expect(
|
59
|
+
expect(generator).to receive(:stop!)
|
54
60
|
@rspec_example_group.extend DeltaTest::SpecHelpers
|
55
61
|
end
|
56
62
|
|
data/spec/rails/Gemfile
CHANGED
@@ -2,14 +2,20 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gem 'rails', '4.2.1'
|
4
4
|
|
5
|
+
gem 'haml-rails'
|
5
6
|
gem 'sqlite3'
|
6
7
|
gem 'therubyracer', platforms: :ruby
|
7
|
-
gem 'haml-rails'
|
8
8
|
|
9
9
|
group :development, :test do
|
10
|
+
gem 'capybara'
|
11
|
+
gem 'database_cleaner'
|
12
|
+
gem 'factory_girl_rails'
|
13
|
+
gem 'minitest'
|
14
|
+
gem 'poltergeist', github: 'teampoltergeist/poltergeist'
|
10
15
|
gem 'pry-rails'
|
11
|
-
gem 'spring'
|
12
16
|
gem 'rspec-rails', '>= 3.2'
|
17
|
+
gem 'spork'
|
18
|
+
gem 'spring'
|
13
19
|
|
14
20
|
gem 'delta_test', path: '../..'
|
15
21
|
end
|
data/spec/rails/Gemfile.lock
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/teampoltergeist/poltergeist.git
|
3
|
+
revision: e3fc25919afb07960698785985f1051b9ea7f7ec
|
4
|
+
specs:
|
5
|
+
poltergeist (1.6.0)
|
6
|
+
capybara (~> 2.1)
|
7
|
+
cliver (~> 0.3.1)
|
8
|
+
multi_json (~> 1.0)
|
9
|
+
websocket-driver (>= 0.2.0)
|
10
|
+
|
1
11
|
PATH
|
2
12
|
remote: ../..
|
3
13
|
specs:
|
4
|
-
delta_test (0.0
|
5
|
-
ruby-prof
|
14
|
+
delta_test (0.1.0)
|
6
15
|
|
7
16
|
GEM
|
8
17
|
remote: https://rubygems.org/
|
@@ -44,9 +53,22 @@ GEM
|
|
44
53
|
tzinfo (~> 1.1)
|
45
54
|
arel (6.0.0)
|
46
55
|
builder (3.2.2)
|
56
|
+
capybara (2.4.4)
|
57
|
+
mime-types (>= 1.16)
|
58
|
+
nokogiri (>= 1.3.3)
|
59
|
+
rack (>= 1.0.0)
|
60
|
+
rack-test (>= 0.5.4)
|
61
|
+
xpath (~> 2.0)
|
62
|
+
cliver (0.3.2)
|
47
63
|
coderay (1.1.0)
|
64
|
+
database_cleaner (1.4.1)
|
48
65
|
diff-lcs (1.2.5)
|
49
66
|
erubis (2.7.0)
|
67
|
+
factory_girl (4.5.0)
|
68
|
+
activesupport (>= 3.0.0)
|
69
|
+
factory_girl_rails (4.5.0)
|
70
|
+
factory_girl (~> 4.5.0)
|
71
|
+
railties (>= 3.0.0)
|
50
72
|
globalid (0.3.5)
|
51
73
|
activesupport (>= 4.1.0)
|
52
74
|
haml (4.0.6)
|
@@ -73,6 +95,7 @@ GEM
|
|
73
95
|
mime-types (2.5)
|
74
96
|
mini_portile (0.6.2)
|
75
97
|
minitest (5.6.1)
|
98
|
+
multi_json (1.11.0)
|
76
99
|
nokogiri (1.6.6.2)
|
77
100
|
mini_portile (~> 0.6.0)
|
78
101
|
pry (0.10.1)
|
@@ -127,11 +150,11 @@ GEM
|
|
127
150
|
rspec-mocks (~> 3.2.0)
|
128
151
|
rspec-support (~> 3.2.0)
|
129
152
|
rspec-support (3.2.2)
|
130
|
-
ruby-prof (0.15.8)
|
131
153
|
ruby_parser (3.6.6)
|
132
154
|
sexp_processor (~> 4.1)
|
133
155
|
sexp_processor (4.5.1)
|
134
156
|
slop (3.6.0)
|
157
|
+
spork (0.9.2)
|
135
158
|
spring (1.3.5)
|
136
159
|
sprockets (3.0.3)
|
137
160
|
rack (~> 1.0)
|
@@ -148,16 +171,27 @@ GEM
|
|
148
171
|
tilt (2.0.1)
|
149
172
|
tzinfo (1.2.2)
|
150
173
|
thread_safe (~> 0.1)
|
174
|
+
websocket-driver (0.5.4)
|
175
|
+
websocket-extensions (>= 0.1.0)
|
176
|
+
websocket-extensions (0.1.2)
|
177
|
+
xpath (2.0.0)
|
178
|
+
nokogiri (~> 1.3)
|
151
179
|
|
152
180
|
PLATFORMS
|
153
181
|
ruby
|
154
182
|
|
155
183
|
DEPENDENCIES
|
184
|
+
capybara
|
185
|
+
database_cleaner
|
156
186
|
delta_test!
|
187
|
+
factory_girl_rails
|
157
188
|
haml-rails
|
189
|
+
minitest
|
190
|
+
poltergeist!
|
158
191
|
pry-rails
|
159
192
|
rails (= 4.2.1)
|
160
193
|
rspec-rails (>= 3.2)
|
194
|
+
spork
|
161
195
|
spring
|
162
196
|
sqlite3
|
163
197
|
therubyracer
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Category < ActiveRecord::Base
|
2
|
+
|
3
|
+
# Associations
|
4
|
+
#-----------------------------------------------
|
5
|
+
has_many :post_categorizings, dependent: :destroy
|
6
|
+
|
7
|
+
|
8
|
+
# Validations
|
9
|
+
#-----------------------------------------------
|
10
|
+
validates :name,
|
11
|
+
presence: true,
|
12
|
+
length: { maximum: 100 }
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Comment < ActiveRecord::Base
|
2
|
+
|
3
|
+
# Associations
|
4
|
+
#-----------------------------------------------
|
5
|
+
belongs_to :post
|
6
|
+
belongs_to :user
|
7
|
+
|
8
|
+
|
9
|
+
# Validations
|
10
|
+
#-----------------------------------------------
|
11
|
+
validates_associated :post
|
12
|
+
validates_associated :user
|
13
|
+
|
14
|
+
validates :post, presence: true
|
15
|
+
validates :user, presence: true
|
16
|
+
validates :body,
|
17
|
+
presence: true,
|
18
|
+
length: { maximum: 1000 }
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Post < ActiveRecord::Base
|
2
|
+
|
3
|
+
# Associations
|
4
|
+
#-----------------------------------------------
|
5
|
+
belongs_to :author, class_name: 'User'
|
6
|
+
has_many :comments, dependent: :destroy
|
7
|
+
has_many :post_categorizings, dependent: :destroy
|
8
|
+
has_many :categories, through: :post_categorizings
|
9
|
+
|
10
|
+
|
11
|
+
# Validations
|
12
|
+
#-----------------------------------------------
|
13
|
+
validates_associated :author
|
14
|
+
|
15
|
+
validates :author, presence: true
|
16
|
+
validates :title,
|
17
|
+
presence: true,
|
18
|
+
length: { maximum: 100 }
|
19
|
+
validates :body,
|
20
|
+
presence: true,
|
21
|
+
length: { maximum: 1000 }
|
22
|
+
|
23
|
+
end
|