delta_test 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/README.md +63 -14
  4. data/Rakefile +16 -3
  5. data/circle.yml +8 -1
  6. data/delta_test.gemspec +4 -3
  7. data/ext/delta_test/delta_test_native.c +154 -0
  8. data/ext/delta_test/delta_test_native.h +15 -0
  9. data/ext/delta_test/extconf.rb +12 -0
  10. data/lib/delta_test.rb +8 -2
  11. data/lib/delta_test/cli.rb +108 -21
  12. data/lib/delta_test/configuration.rb +91 -35
  13. data/lib/delta_test/dependencies_table.rb +15 -1
  14. data/lib/delta_test/generator.rb +42 -29
  15. data/lib/delta_test/profiler.rb +5 -0
  16. data/lib/delta_test/related_spec_list.rb +67 -8
  17. data/lib/delta_test/spec_helpers.rb +9 -7
  18. data/lib/delta_test/version.rb +1 -1
  19. data/spec/lib/delta_test/cli_spec.rb +26 -5
  20. data/spec/lib/delta_test/configuration_spec.rb +12 -0
  21. data/spec/lib/delta_test/dependencies_table_spec.rb +35 -0
  22. data/spec/lib/delta_test/generator_spec.rb +34 -17
  23. data/spec/lib/delta_test/profiler_spec.rb +121 -0
  24. data/spec/lib/delta_test/related_spec_list_spec.rb +150 -34
  25. data/spec/lib/delta_test/spec_helpers_spec.rb +11 -5
  26. data/spec/rails/Gemfile +8 -2
  27. data/spec/rails/Gemfile.lock +37 -3
  28. data/spec/rails/app/models/category.rb +14 -0
  29. data/spec/rails/app/models/comment.rb +20 -0
  30. data/spec/rails/app/models/post.rb +23 -0
  31. data/spec/rails/app/models/post_categorizing.rb +14 -0
  32. data/spec/rails/app/models/user.rb +15 -0
  33. data/spec/rails/db/migrate/20150518052022_create_users.rb +9 -0
  34. data/spec/rails/db/migrate/20150518052057_create_posts.rb +11 -0
  35. data/spec/rails/db/migrate/20150518052332_create_comments.rb +11 -0
  36. data/spec/rails/db/migrate/20150518052523_create_categories.rb +9 -0
  37. data/spec/rails/db/migrate/20150518052604_create_post_categorizings.rb +10 -0
  38. data/spec/rails/db/schema.rb +59 -0
  39. data/spec/rails/spec/factories/categories.rb +5 -0
  40. data/spec/rails/spec/factories/comments.rb +8 -0
  41. data/spec/rails/spec/factories/post_categorizings.rb +6 -0
  42. data/spec/rails/spec/factories/posts.rb +7 -0
  43. data/spec/rails/spec/factories/users.rb +5 -0
  44. data/spec/rails/spec/models/category_spec.rb +3 -0
  45. data/spec/rails/spec/models/comment_spec.rb +3 -0
  46. data/spec/rails/spec/models/post_categorizing_spec.rb +3 -0
  47. data/spec/rails/spec/models/post_spec.rb +3 -0
  48. data/spec/rails/spec/models/user_spec.rb +20 -0
  49. data/spec/rails/spec/spec_helper.rb +53 -9
  50. data/spec/spec_helper.rb +2 -0
  51. metadata +79 -19
  52. data/lib/delta_test/analyzer.rb +0 -47
  53. data/spec/lib/delta_test/analyzer_spec.rb +0 -126
@@ -0,0 +1,14 @@
1
+ class PostCategorizing < ActiveRecord::Base
2
+
3
+ # Associations
4
+ #-----------------------------------------------
5
+ belongs_to :post
6
+ belongs_to :category
7
+
8
+
9
+ # Validations
10
+ #-----------------------------------------------
11
+ validates_associated :post
12
+ validates_associated :category
13
+
14
+ end
@@ -0,0 +1,15 @@
1
+ class User < ActiveRecord::Base
2
+
3
+ # Associations
4
+ #-----------------------------------------------
5
+ has_many :posts, dependent: :destroy
6
+ has_many :comments, dependent: :destroy
7
+
8
+
9
+ # Validations
10
+ #-----------------------------------------------
11
+ validates :name,
12
+ presence: true,
13
+ length: { maximum: 100 }
14
+
15
+ end
@@ -0,0 +1,9 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :users do |t|
4
+ t.string :name
5
+
6
+ t.timestamps null: false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ class CreatePosts < ActiveRecord::Migration
2
+ def change
3
+ create_table :posts do |t|
4
+ t.belongs_to :author, index: true, foreign_key: true
5
+ t.string :title
6
+ t.text :body
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ class CreateComments < ActiveRecord::Migration
2
+ def change
3
+ create_table :comments do |t|
4
+ t.belongs_to :post, index: true, foreign_key: true
5
+ t.belongs_to :user, index: true, foreign_key: true
6
+ t.text :body
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class CreateCategories < ActiveRecord::Migration
2
+ def change
3
+ create_table :categories do |t|
4
+ t.string :name
5
+
6
+ t.timestamps null: false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class CreatePostCategorizings < ActiveRecord::Migration
2
+ def change
3
+ create_table :post_categorizings do |t|
4
+ t.belongs_to :post, index: true, foreign_key: true
5
+ t.belongs_to :category, index: true, foreign_key: true
6
+
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20150518052604) do
15
+
16
+ create_table "categories", force: :cascade do |t|
17
+ t.string "name"
18
+ t.datetime "created_at", null: false
19
+ t.datetime "updated_at", null: false
20
+ end
21
+
22
+ create_table "comments", force: :cascade do |t|
23
+ t.integer "post_id"
24
+ t.integer "user_id"
25
+ t.text "body"
26
+ t.datetime "created_at", null: false
27
+ t.datetime "updated_at", null: false
28
+ end
29
+
30
+ add_index "comments", ["post_id"], name: "index_comments_on_post_id"
31
+ add_index "comments", ["user_id"], name: "index_comments_on_user_id"
32
+
33
+ create_table "post_categorizings", force: :cascade do |t|
34
+ t.integer "post_id"
35
+ t.integer "category_id"
36
+ t.datetime "created_at", null: false
37
+ t.datetime "updated_at", null: false
38
+ end
39
+
40
+ add_index "post_categorizings", ["category_id"], name: "index_post_categorizings_on_category_id"
41
+ add_index "post_categorizings", ["post_id"], name: "index_post_categorizings_on_post_id"
42
+
43
+ create_table "posts", force: :cascade do |t|
44
+ t.integer "author_id"
45
+ t.string "title"
46
+ t.text "body"
47
+ t.datetime "created_at", null: false
48
+ t.datetime "updated_at", null: false
49
+ end
50
+
51
+ add_index "posts", ["author_id"], name: "index_posts_on_author_id"
52
+
53
+ create_table "users", force: :cascade do |t|
54
+ t.string "name"
55
+ t.datetime "created_at", null: false
56
+ t.datetime "updated_at", null: false
57
+ end
58
+
59
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :category do
3
+ sequence(:name) { |n| 'Category %d' % n }
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :comment do
3
+ post nil
4
+ user nil
5
+
6
+ body 'Here goes comment body'
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :post_categorizing do
3
+ post nil
4
+ category nil
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :post do
3
+ author nil
4
+ sequence(:title) { |n| 'Post title %d' % n }
5
+ body 'Here goes body'
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :user do
3
+ sequence(:name) { |n| 'User %d' % n }
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ describe Category do
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ describe Comment do
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ describe PostCategorizing do
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ describe Post do
2
+
3
+ end
@@ -0,0 +1,20 @@
1
+ describe User do
2
+
3
+ describe '.create' do
4
+
5
+ it 'should be a validation error without a name' do
6
+ user = build(:user, name: nil)
7
+ expect(user).not_to be_valid
8
+ end
9
+
10
+ it 'should create a user with a name' do
11
+ name = 'John Smith'
12
+ user = build(:user, name: name)
13
+ user.save
14
+ expect(user).to be_persisted
15
+ expect(user.name).to eq(name)
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -1,16 +1,60 @@
1
- require 'delta_test'
2
- require 'delta_test/spec_helpers'
1
+ require 'rubygems'
2
+ require 'spork'
3
3
 
4
- RSpec.configure do |config|
4
+ Spork.prefork do
5
+ ENV['RAILS_ENV'] ||= 'test'
5
6
 
6
- config.include DeltaTest::SpecHelpers
7
+ require File.expand_path('../../config/environment', __FILE__)
8
+ require 'rspec/rails'
9
+ require 'capybara/rspec'
10
+ require 'capybara/poltergeist'
7
11
 
8
- config.expect_with :rspec do |expectations|
9
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
10
- end
12
+ require 'delta_test'
13
+ require 'delta_test/spec_helpers'
14
+
15
+ RSpec.configure do |config|
16
+
17
+ config.include DeltaTest::SpecHelpers
18
+ config.include FactoryGirl::Syntax::Methods
19
+
20
+ Capybara.javascript_driver = :poltergeist
21
+ Capybara.default_selector = :css
22
+ Capybara.default_wait_time = 15
23
+
24
+ Capybara.register_driver :poltergeist do |app|
25
+ Capybara::Poltergeist::Driver.new(app, js_errors: true, timeout: 90)
26
+ end
27
+
28
+ config.expect_with :rspec do |expectations|
29
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
30
+ end
31
+
32
+ config.mock_with :rspec do |mocks|
33
+ mocks.verify_partial_doubles = true
34
+ end
35
+
36
+ config.before :each do |example|
37
+ DatabaseCleaner.strategy = if example.metadata[:js]
38
+ :truncation
39
+ else
40
+ :transaction
41
+ end
42
+
43
+ DatabaseCleaner.start
44
+ end
45
+
46
+ config.after :each do
47
+ DatabaseCleaner.clean
48
+ end
11
49
 
12
- config.mock_with :rspec do |mocks|
13
- mocks.verify_partial_doubles = true
14
50
  end
51
+ end
15
52
 
53
+ Spork.each_run do
54
+ if Spork.using_spork?
55
+ ActionDispatch::Reloader.cleanup!
56
+ ActionDispatch::Reloader.prepare!
57
+ Rails.application.reload_routes!
58
+ FactoryGirl.reload
59
+ end
16
60
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rspec'
2
2
  require 'fakefs/spec_helpers'
3
+ require 'codeclimate-test-reporter'
3
4
 
4
5
  require 'delta_test'
5
6
 
@@ -15,6 +16,7 @@ module DeltaTestSpecHelper
15
16
 
16
17
  end
17
18
 
19
+ CodeClimate::TestReporter.start
18
20
 
19
21
  RSpec.configure do |config|
20
22
 
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delta_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuki Iwanaga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-10 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ruby-prof
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
19
+ version: '1.7'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: codeclimate-test-reporter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.7'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.7'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fakefs
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake-compiler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -100,12 +114,14 @@ email:
100
114
  - yuki@creasty.com
101
115
  executables:
102
116
  - delta_test
103
- extensions: []
117
+ extensions:
118
+ - ext/delta_test/extconf.rb
104
119
  extra_rdoc_files: []
105
120
  files:
106
121
  - ".gitignore"
107
122
  - ".rspec"
108
123
  - ".ruby-version"
124
+ - CHANGELOG.md
109
125
  - Gemfile
110
126
  - LICENSE.txt
111
127
  - README.md
@@ -113,14 +129,17 @@ files:
113
129
  - bin/delta_test
114
130
  - circle.yml
115
131
  - delta_test.gemspec
132
+ - ext/delta_test/delta_test_native.c
133
+ - ext/delta_test/delta_test_native.h
134
+ - ext/delta_test/extconf.rb
116
135
  - lib/delta_test.rb
117
- - lib/delta_test/analyzer.rb
118
136
  - lib/delta_test/cli.rb
119
137
  - lib/delta_test/configuration.rb
120
138
  - lib/delta_test/dependencies_table.rb
121
139
  - lib/delta_test/errors.rb
122
140
  - lib/delta_test/generator.rb
123
141
  - lib/delta_test/git.rb
142
+ - lib/delta_test/profiler.rb
124
143
  - lib/delta_test/related_spec_list.rb
125
144
  - lib/delta_test/spec_helpers.rb
126
145
  - lib/delta_test/utils.rb
@@ -128,12 +147,12 @@ files:
128
147
  - spec/fixtures/sample/alpha.rb
129
148
  - spec/fixtures/sample/beta.rb
130
149
  - spec/fixtures/sample/gamma.rb
131
- - spec/lib/delta_test/analyzer_spec.rb
132
150
  - spec/lib/delta_test/cli_spec.rb
133
151
  - spec/lib/delta_test/configuration_spec.rb
134
152
  - spec/lib/delta_test/dependencies_table_spec.rb
135
153
  - spec/lib/delta_test/generator_spec.rb
136
154
  - spec/lib/delta_test/git_spec.rb
155
+ - spec/lib/delta_test/profiler_spec.rb
137
156
  - spec/lib/delta_test/related_spec_list_spec.rb
138
157
  - spec/lib/delta_test/spec_helpers_spec.rb
139
158
  - spec/lib/delta_test/utils_spec.rb
@@ -149,7 +168,12 @@ files:
149
168
  - spec/rails/app/helpers/application_helper.rb
150
169
  - spec/rails/app/mailers/.keep
151
170
  - spec/rails/app/models/.keep
171
+ - spec/rails/app/models/category.rb
172
+ - spec/rails/app/models/comment.rb
152
173
  - spec/rails/app/models/concerns/.keep
174
+ - spec/rails/app/models/post.rb
175
+ - spec/rails/app/models/post_categorizing.rb
176
+ - spec/rails/app/models/user.rb
153
177
  - spec/rails/app/views/layouts/application.html.haml
154
178
  - spec/rails/bin/bundle
155
179
  - spec/rails/bin/rails
@@ -174,6 +198,12 @@ files:
174
198
  - spec/rails/config/locales/en.yml
175
199
  - spec/rails/config/routes.rb
176
200
  - spec/rails/config/secrets.yml
201
+ - spec/rails/db/migrate/20150518052022_create_users.rb
202
+ - spec/rails/db/migrate/20150518052057_create_posts.rb
203
+ - spec/rails/db/migrate/20150518052332_create_comments.rb
204
+ - spec/rails/db/migrate/20150518052523_create_categories.rb
205
+ - spec/rails/db/migrate/20150518052604_create_post_categorizings.rb
206
+ - spec/rails/db/schema.rb
177
207
  - spec/rails/db/seeds.rb
178
208
  - spec/rails/delta_test.yml
179
209
  - spec/rails/lib/assets/.keep
@@ -184,7 +214,17 @@ files:
184
214
  - spec/rails/public/500.html
185
215
  - spec/rails/public/favicon.ico
186
216
  - spec/rails/public/robots.txt
217
+ - spec/rails/spec/factories/categories.rb
218
+ - spec/rails/spec/factories/comments.rb
219
+ - spec/rails/spec/factories/post_categorizings.rb
220
+ - spec/rails/spec/factories/posts.rb
221
+ - spec/rails/spec/factories/users.rb
187
222
  - spec/rails/spec/features/sample_spec.rb
223
+ - spec/rails/spec/models/category_spec.rb
224
+ - spec/rails/spec/models/comment_spec.rb
225
+ - spec/rails/spec/models/post_categorizing_spec.rb
226
+ - spec/rails/spec/models/post_spec.rb
227
+ - spec/rails/spec/models/user_spec.rb
188
228
  - spec/rails/spec/spec_helper.rb
189
229
  - spec/rails/vendor/assets/javascripts/.keep
190
230
  - spec/rails/vendor/assets/stylesheets/.keep
@@ -213,18 +253,17 @@ rubyforge_project:
213
253
  rubygems_version: 2.4.5
214
254
  signing_key:
215
255
  specification_version: 4
216
- summary: delta_test analyzes your tests and runs only related tests for your file
217
- changes
256
+ summary: It's kinda "delta update" for RSpec
218
257
  test_files:
219
258
  - spec/fixtures/sample/alpha.rb
220
259
  - spec/fixtures/sample/beta.rb
221
260
  - spec/fixtures/sample/gamma.rb
222
- - spec/lib/delta_test/analyzer_spec.rb
223
261
  - spec/lib/delta_test/cli_spec.rb
224
262
  - spec/lib/delta_test/configuration_spec.rb
225
263
  - spec/lib/delta_test/dependencies_table_spec.rb
226
264
  - spec/lib/delta_test/generator_spec.rb
227
265
  - spec/lib/delta_test/git_spec.rb
266
+ - spec/lib/delta_test/profiler_spec.rb
228
267
  - spec/lib/delta_test/related_spec_list_spec.rb
229
268
  - spec/lib/delta_test/spec_helpers_spec.rb
230
269
  - spec/lib/delta_test/utils_spec.rb
@@ -240,7 +279,12 @@ test_files:
240
279
  - spec/rails/app/helpers/application_helper.rb
241
280
  - spec/rails/app/mailers/.keep
242
281
  - spec/rails/app/models/.keep
282
+ - spec/rails/app/models/category.rb
283
+ - spec/rails/app/models/comment.rb
243
284
  - spec/rails/app/models/concerns/.keep
285
+ - spec/rails/app/models/post.rb
286
+ - spec/rails/app/models/post_categorizing.rb
287
+ - spec/rails/app/models/user.rb
244
288
  - spec/rails/app/views/layouts/application.html.haml
245
289
  - spec/rails/bin/bundle
246
290
  - spec/rails/bin/rails
@@ -265,6 +309,12 @@ test_files:
265
309
  - spec/rails/config/locales/en.yml
266
310
  - spec/rails/config/routes.rb
267
311
  - spec/rails/config/secrets.yml
312
+ - spec/rails/db/migrate/20150518052022_create_users.rb
313
+ - spec/rails/db/migrate/20150518052057_create_posts.rb
314
+ - spec/rails/db/migrate/20150518052332_create_comments.rb
315
+ - spec/rails/db/migrate/20150518052523_create_categories.rb
316
+ - spec/rails/db/migrate/20150518052604_create_post_categorizings.rb
317
+ - spec/rails/db/schema.rb
268
318
  - spec/rails/db/seeds.rb
269
319
  - spec/rails/delta_test.yml
270
320
  - spec/rails/lib/assets/.keep
@@ -275,7 +325,17 @@ test_files:
275
325
  - spec/rails/public/500.html
276
326
  - spec/rails/public/favicon.ico
277
327
  - spec/rails/public/robots.txt
328
+ - spec/rails/spec/factories/categories.rb
329
+ - spec/rails/spec/factories/comments.rb
330
+ - spec/rails/spec/factories/post_categorizings.rb
331
+ - spec/rails/spec/factories/posts.rb
332
+ - spec/rails/spec/factories/users.rb
278
333
  - spec/rails/spec/features/sample_spec.rb
334
+ - spec/rails/spec/models/category_spec.rb
335
+ - spec/rails/spec/models/comment_spec.rb
336
+ - spec/rails/spec/models/post_categorizing_spec.rb
337
+ - spec/rails/spec/models/post_spec.rb
338
+ - spec/rails/spec/models/user_spec.rb
279
339
  - spec/rails/spec/spec_helper.rb
280
340
  - spec/rails/vendor/assets/javascripts/.keep
281
341
  - spec/rails/vendor/assets/stylesheets/.keep