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.
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