test-prof 0.11.3 → 1.0.0.rc2

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +122 -447
  3. data/LICENSE.txt +1 -1
  4. data/README.md +9 -13
  5. data/config/default.yml +0 -15
  6. data/config/rubocop-rspec.yml +6 -0
  7. data/lib/minitest/test_prof_plugin.rb +3 -0
  8. data/lib/test_prof/any_fixture.rb +116 -7
  9. data/lib/test_prof/any_fixture/dump.rb +207 -0
  10. data/lib/test_prof/any_fixture/dump/base_adapter.rb +43 -0
  11. data/lib/test_prof/any_fixture/dump/digest.rb +29 -0
  12. data/lib/test_prof/any_fixture/dump/postgresql.rb +91 -0
  13. data/lib/test_prof/any_fixture/dump/sqlite.rb +42 -0
  14. data/lib/test_prof/before_all.rb +9 -4
  15. data/lib/test_prof/before_all/adapters/active_record.rb +14 -5
  16. data/lib/test_prof/cops/rspec/aggregate_examples.rb +2 -2
  17. data/lib/test_prof/cops/rspec/aggregate_examples/its.rb +1 -1
  18. data/lib/test_prof/cops/rspec/aggregate_examples/line_range_helpers.rb +1 -1
  19. data/lib/test_prof/cops/rspec/aggregate_examples/matchers_with_side_effects.rb +1 -1
  20. data/lib/test_prof/cops/rspec/aggregate_examples/metadata_helpers.rb +1 -1
  21. data/lib/test_prof/cops/rspec/aggregate_examples/node_matchers.rb +1 -1
  22. data/lib/test_prof/event_prof/instrumentations/active_support.rb +22 -4
  23. data/lib/test_prof/recipes/minitest/before_all.rb +48 -23
  24. data/lib/test_prof/recipes/minitest/sample.rb +6 -10
  25. data/lib/test_prof/recipes/rspec/before_all.rb +10 -10
  26. data/lib/test_prof/recipes/rspec/let_it_be.rb +111 -13
  27. data/lib/test_prof/recipes/rspec/sample.rb +4 -2
  28. data/lib/test_prof/rubocop.rb +0 -1
  29. data/lib/test_prof/stack_prof.rb +3 -0
  30. data/lib/test_prof/version.rb +1 -1
  31. metadata +23 -21
  32. data/lib/test_prof/cops/rspec/aggregate_failures.rb +0 -26
  33. data/lib/test_prof/ext/active_record_3.rb +0 -27
  34. data/lib/test_prof/recipes/active_record_one_love.rb +0 -6
  35. data/lib/test_prof/recipes/active_record_shared_connection.rb +0 -77
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f94a3a078b73be780b867708b18572f4eec3d9847c733ddab65e04999895b14
4
- data.tar.gz: 5859b8f66524c27e07c96456bba4d44a3ba76a20eed7d987319ca287ee441392
3
+ metadata.gz: ae1131d5828c1e2b52eab444c34c89bd82b294a7b3725f62c01ce30d7526f46b
4
+ data.tar.gz: 5f0bf2610fef5ad188999259aaca14918e3d96d9d5d2fdc9b6f60a961b02a20f
5
5
  SHA512:
6
- metadata.gz: 417495b0ccf198639e80396635922ad3802a622471304a93dd364bdca66ffbc09934badd74eb3e562e8524f141fa040e190068ab1f278d2ecc7575104889efb4
7
- data.tar.gz: e07278c5c32fbdd59fcd57a2e87785732503ea810fc21fc2222f4fdba5709dfa4c6794f7782c2498335eaf84516582f8cb5263ed302b12ac7f3137bbc3b4a3b4
6
+ metadata.gz: ac9329e707caa20870ec22035678585a9a344968ea98f5f210a6fb0c25558d85162145ff47d731b77f9b17a71bb0c8d1fb23d57b5a46eba2af4244b2c6f269f6
7
+ data.tar.gz: dc0795ccc8916f93ffb9303d703a81da20d3723401b55d2c1ddfef45f8fb2d5879f9988c8b78cb9efe9ea0279e5adb610055bbf56433ff4a01101b9d7c6344e3
@@ -1,524 +1,195 @@
1
1
  # Change log
2
2
 
3
- ## master (unreleased)
3
+ ## master (unrealeased)
4
4
 
5
- ## 0.11.3 (2020-02-11)
6
-
7
- - Disable `RSpec/AggregateFailures` by default. ([@pirj][])
8
-
9
- ## 0.11.2 (2020-02-11)
10
-
11
- - Fix RuboCop integration regressions. ([@palkan][])
12
-
13
- ## 0.11.1 (2020-02-10)
14
-
15
- - Add `config/` to the gem contents. ([@palkan][])
16
-
17
- Fixes RuboCop integration regression from 0.11.0.
18
-
19
- ## 0.11.0 (2020-02-09)
20
-
21
- - Fix `let_it_be` issue when initialized with an array/enumerable or an AR relation. ([@pirj][])
22
-
23
- - Improve `RSpec/AggregateExamples` (formerly `RSpec/AggregateFailures`) cop. ([@pirj][])
24
-
25
- ## 0.10.2 (2020-01-07) 🎄
26
-
27
- - Fix Ruby 2.7 deprecations. ([@lostie][])
28
-
29
- ## 0.10.1 (2019-10-17)
30
-
31
- - Fix AnyFixture DSL when using with Rails 6.1+. ([@palkan][])
5
+ ## 1.0.0.rc2 (2021-01-06)
32
6
 
33
- - Fix loading `let_it_be` without ActiveRecord present. ([@palkan][])
34
-
35
- - Fix compatibility of `before_all` with [`isolator`](https://github.com/palkan/isolator) gem to handle correct usages of non-atomic interactions outside DB transactions. ([@Envek][])
36
-
37
- - Updates FactoryProf to show the amount of time taken per factory call. ([@tyleriguchi][])
38
-
39
- ## 0.10.0 (2019-08-19)
40
-
41
- - Use RSpec example ID instead of full description for RubyProf/Stackprof report names. ([@palkan][])
42
-
43
- For more complex scenarios feel free to use your own report name generator:
44
-
45
- ```ruby
46
- # for RubyProf
47
- TestProf::RubyProf::Listener.report_name_generator = ->(example) { "..." }
48
- # for Stackprof
49
- TestProf::StackProf::Listener.report_name_generator = ->(example) { "..." }
50
- ```
51
-
52
- - Support arrays in `let_it_be` with modifiers. ([@palkan][])
7
+ - Make Rails fixtures accesible in `before_all`. ([@palkan][])
53
8
 
54
- ```ruby
55
- # Now you can use modifiers with arrays
56
- let_it_be(:posts, reload: true) { create_pair(:post) }
57
- ```
9
+ You can load and access fixtures when explicitly enabling them via `before_all(setup_fixtures: true, &block)`.
58
10
 
59
- - Refactor `let_it_be` modifiers and allow adding custom modifiers. ([@palkan][])
11
+ - Minitest's `before_all` is not longer experimental. ([@palkan][])
60
12
 
61
- ```ruby
62
- TestProf::LetItBe.config.register_modifier :reload do |record, val|
63
- # ignore when `reload: false`
64
- next record unless val
65
- # ignore non-ActiveRecord objects
66
- next record unless record.is_a?(::ActiveRecord::Base)
67
- record.reload
68
- end
69
- ```
13
+ - Add `after_all` to Minitest in addition to `before_all`. ([@palkan][])
70
14
 
71
- - Print warning when `ActiveRecordSharedConnection` is used in the version of Rails
72
- supporting `lock_threads` (5.1+). ([@palkan][])
15
+ ## 1.0.0.rc1 (2020-12-30)
73
16
 
74
- ## 0.9.0 (2019-05-14)
17
+ - Remove deprecated `AggregateFailures` cop. ([@palkan][])
75
18
 
76
- - Add threshold and custom event support to FactoryDoctor. ([@palkan][])
19
+ - Remove `ActiveRecordSharedConnection`. ([@palkan][])
77
20
 
78
- ```sh
79
- $ FDOC=1 FDOC_EVENT="sql.rom" FDOC_THRESHOLD=0.1 rspec
80
- ```
21
+ - Add `AnyFixture#register_dump` to _cache_ fixtures using SQL dumps. ([@palkan][])
81
22
 
82
- - Add Fabrication support to FactoryDoctor. ([@palkan][])
23
+ - Replaced `TestProf::AnyFixture.reporting_enabled = true` with `TestProf::AnyFixture.config.reporting_enabled = true`. ([@palkan][])
83
24
 
84
- - Add `guard` and `top_level` options to `EventProf::Monitor`. ([@palkan][])
25
+ - Add support for RSpec aliases detection when linting specs using `let_it_be`/`before_all` with `rubocop-rspec` 2.0 ([@pirj][])
85
26
 
86
- For example:
27
+ ## 0.12.2 (2020-09-03)
87
28
 
88
- ```ruby
89
- TestProf::EventProf.monitor(
90
- Sidekiq::Client,
91
- "sidekiq.inline",
92
- :raw_push,
93
- top_level: true,
94
- guard: ->(*) { Sidekiq::Testing.inline? }
95
- )
96
- ```
29
+ - Execute Minitest `before_all` in the context of the current test object. ([@palkan][])
97
30
 
98
- - Add global `before_all` hooks. ([@danielwaterworth][], [@palkan][])
31
+ ## 0.12.1 (2020-09-01)
99
32
 
100
- Now you can run additional code before and after every `before_all` transaction
101
- begins and rollbacks:
33
+ - Minor improvements.
102
34
 
103
- ```ruby
104
- TestProf::BeforeAll.configure do |config|
105
- config.before(:begin) do
106
- # do something before transaction opens
107
- end
35
+ ## 0.12.0 (2020-07-17)
108
36
 
109
- config.after(:rollback) do
110
- # do something after transaction closes
111
- end
112
- end
113
- ```
37
+ - Add state leakage detection for `let_it_be`. ([@pirj][], [@jaimerson][], [@alexvko][])
114
38
 
115
- - Add ability to use `let_it_be` aliases with predefined options. ([@danielwaterworth][])
39
+ - Add default let_it_be modifiers configuration. ([@palkan][])
116
40
 
117
- ```ruby
118
- TestProf::LetItBe.configure do |config|
119
- config.alias_to :let_it_be_with_refind, refind: true
120
- end
121
- ```
41
+ You can configure global modifiers:
122
42
 
123
- - Made FactoryProf measure and report on timing ([@danielwaterworth][])
43
+ ```ruby
44
+ TestProf::LetItBe.configure do |config|
45
+ # Make refind activated by default
46
+ config.default_modifiers[:refind] = true
47
+ end
48
+ ```
124
49
 
125
- ## 0.8.0 (2019-04-12) 🚀
50
+ Or for specific contexts via tags:
126
51
 
127
- - **Ruby 2.4+ is requiered** ([@palkan][])
52
+ ```ruby
53
+ context "with let_it_be reload", let_it_be_modifiers: {reload: true} do
54
+ # examples
55
+ end
56
+ ```
128
57
 
129
- - **RSpec 3.5+ is requiered for RSpec features** ([@palkan][])
58
+ - **Drop Ruby 2.4 support.** ([@palkan][])
130
59
 
131
- - Make `before_all` compatible with [`isolator`](https://github.com/palkan/isolator). ([@palkan][])
60
+ - SAMPLE and SAMPLE_GROUP work consistently with seed in RSpec and Minitest. ([@stefkin][])
132
61
 
133
- - Add `with_logging` and `with_ar_logging` helpers to logging recipe. ([@palkan][])
62
+ - Make sure EventProf is not affected by time freezing. ([@palkan][])
134
63
 
135
- - Make `before_all` for Active Record `lock_thread` aware. ([@palkan][])
64
+ EventProf results now is not affected by `Timecop.freeze` or similar.
136
65
 
137
- `before_all` can went crazy if you open multiple connections within it
138
- (since it tracks the number of open transactions).
139
- Rails 5+ `lock_thread` feature only locks the connection thread in
140
- `before`/`setup` hook thus making it possible to have multiple connections/transactions
141
- in `before_all` (e.g. performing jobs with Active Job async adapter).
66
+ See more in [#181](https://github.com/test-prof/test-prof/issues/181).
142
67
 
143
- ## 0.7.5 (2019-02-22)
68
+ - Adds the ability to define stackprof's interval sampling by using `TEST_STACK_PROF_INTERVAL` env variable ([@LynxEyes][])
144
69
 
145
- - Make `let_it_be` and `before_all` work with `include_context`. ([@palkan][])
70
+ Now you can use `$ TEST_STACK_PROF=1 TEST_STACK_PROF_INTERVAL=10000 rspec` to define a custom interval (in microseconds).
146
71
 
147
- Fixes [#117](https://github.com/palkan/test-prof/issues/117)
148
-
149
- ## 0.7.4 (2019-02-16)
150
-
151
- - Add JSON report support for StackProf. ([@palkan][])
152
-
153
- - Add ability to specify report/artifact name suffixes. ([@palkan][])
154
-
155
- ## 0.7.3 (2018-11-07)
156
-
157
- - Add a header with the general information on factories usage [#99](https://github.com/palkan/test-prof/issues/99) ([@szemek][])
158
-
159
- - Improve test sampling.([@mkldon][])
72
+ ## 0.11.3 (2020-02-11)
160
73
 
161
- ```bash
162
- $ SAMPLE=10 rake test # runs 10 random test examples
163
- $ SAMPLE_GROUPS=10 rake test # runs 10 random example groups
164
- ```
74
+ - Disable `RSpec/AggregateFailures` by default. ([@pirj][])
165
75
 
166
- - Extend Event Prof formatter to include the absolute run time and the percentage of the event tim [#100](https://github.com/palkan/test-prof/issues/100) ([@dmagro][])
76
+ ## 0.11.2 (2020-02-11)
167
77
 
168
- ## 0.7.2 (2018-10-08)
78
+ - Fix RuboCop integration regressions. ([@palkan][])
169
79
 
170
- - Add `RSpec/AggregateFailures` support for non-regular 'its' examples. ([@broels][])
80
+ ## 0.11.1 (2020-02-10)
171
81
 
172
- ## 0.7.1 (2018-08-20)
82
+ - Add `config/` to the gem contents. ([@palkan][])
173
83
 
174
- - Add ability to ignore connection configurations in shared connection.([@palkan][])
84
+ Fixes RuboCop integration regression from 0.11.0.
175
85
 
176
- Example:
86
+ ## 0.11.0 (2020-02-09)
177
87
 
178
- ```ruby
179
- # Do not use shared connection for sqlite db
180
- TestProf::ActiveRecordSharedConnection.ignore { |config| config[:adapter] == "sqlite3" }
181
- ```
88
+ - Fix `let_it_be` issue when initialized with an array/enumerable or an AR relation. ([@pirj][])
182
89
 
183
- ## 0.7.0 (2018-08-12)
90
+ - Improve `RSpec/AggregateExamples` (formerly `RSpec/AggregateFailures`) cop. ([@pirj][])
184
91
 
185
- - **Ruby 2.3+ is required**. ([@palkan][])
92
+ ## 0.10.2 (2020-01-07) 🎄
186
93
 
187
- Ruby 2.2 EOL was on 2018-03-31.
94
+ - Fix Ruby 2.7 deprecations. ([@lostie][])
188
95
 
189
- - Upgrade RubyProf integration to `ruby-prof >= 0.17`. ([@palkan][])
96
+ ## 0.10.1 (2019-10-17)
190
97
 
191
- Use `exclude_common_methods!` instead of the deprecated `eliminate_methods!`.
98
+ - Fix AnyFixture DSL when using with Rails 6.1+. ([@palkan][])
192
99
 
193
- Add RSpec specific exclusions.
100
+ - Fix loading `let_it_be` without ActiveRecord present. ([@palkan][])
194
101
 
195
- Add ability to specify custom exclusions through `config.custom_exclusions`, e.g.:
102
+ - Fix compatibility of `before_all` with [`isolator`](https://github.com/palkan/isolator) gem to handle correct usages of non-atomic interactions outside DB transactions. ([@Envek][])
196
103
 
197
- ```ruby
198
- TestProf::RubyProf.configure do |config|
199
- config.custom_exclusions = {User => %i[save save!]}
200
- end
201
- ```
104
+ - Updates FactoryProf to show the amount of time taken per factory call. ([@tyleriguchi][])
202
105
 
203
- ## 0.6.0 (2018-06-29)
106
+ ## 0.10.0 (2019-08-19)
204
107
 
205
- ### Features
108
+ - Use RSpec example ID instead of full description for RubyProf/Stackprof report names. ([@palkan][])
206
109
 
207
- - Add `EventProf.monitor` to instrument arbitrary methods. ([@palkan][])
110
+ For more complex scenarios feel free to use your own report name generator:
208
111
 
209
- Add custom instrumetation easily:
112
+ ```ruby
113
+ # for RubyProf
114
+ TestProf::RubyProf::Listener.report_name_generator = ->(example) { "..." }
115
+ # for Stackprof
116
+ TestProf::StackProf::Listener.report_name_generator = ->(example) { "..." }
117
+ ```
210
118
 
211
- ```ruby
212
- class Work
213
- def do
214
- # ...
215
- end
216
- end
119
+ - Support arrays in `let_it_be` with modifiers. ([@palkan][])
217
120
 
218
- # Instrument Work#do calls with "my.work" event
219
- TestProf::EventProf.monitor(Work, "my.work", :do)
220
- ```
121
+ ```ruby
122
+ # Now you can use modifiers with arrays
123
+ let_it_be(:posts, reload: true) { create_pair(:post) }
124
+ ```
221
125
 
222
- [📝 Docs](https://test-prof.evilmartians.io/#/event_prof?id=profile-arbitrary-methods)
126
+ - Refactor `let_it_be` modifiers and allow adding custom modifiers. ([@palkan][])
223
127
 
224
- - Adapterize `before_all`. ([@palkan][])
128
+ ```ruby
129
+ TestProf::LetItBe.config.register_modifier :reload do |record, val|
130
+ # ignore when `reload: false`
131
+ next record unless val
132
+ # ignore non-ActiveRecord objects
133
+ next record unless record.is_a?(::ActiveRecord::Base)
134
+ record.reload
135
+ end
136
+ ```
225
137
 
226
- Now it's possible to write your own adapter for `before_all` to manage transactions.
138
+ - Print warning when `ActiveRecordSharedConnection` is used in the version of Rails
139
+ supporting `lock_threads` (5.1+). ([@palkan][])
227
140
 
228
- [📝 Docs](https://test-prof.evilmartians.io/#/before_all?id=database-adapters)
141
+ ## 0.9.0 (2019-05-14)
229
142
 
230
- - Add `before_all` for Minitest. ([@palkan][])
143
+ - Add threshold and custom event support to FactoryDoctor. ([@palkan][])
231
144
 
232
- [📝 Docs](https://test-prof.evilmartians.io/#/before_all?id=minitest-experimental)
145
+ ```sh
146
+ $ FDOC=1 FDOC_EVENT="sql.rom" FDOC_THRESHOLD=0.1 rspec
147
+ ```
233
148
 
234
- ### Fixes & Improvements
149
+ - Add Fabrication support to FactoryDoctor. ([@palkan][])
235
150
 
236
- - Show top `let` declarations per example group in RSpecDissect profiler. ([@palkan][])
151
+ - Add `guard` and `top_level` options to `EventProf::Monitor`. ([@palkan][])
237
152
 
238
- The output now includes the following information:
153
+ For example:
239
154
 
240
- ```
241
- Top 5 slowest suites (by `let` time):
155
+ ```ruby
156
+ TestProf::EventProf.monitor(
157
+ Sidekiq::Client,
158
+ "sidekiq.inline",
159
+ :raw_push,
160
+ top_level: true,
161
+ guard: ->(*) { Sidekiq::Testing.inline? }
162
+ )
163
+ ```
242
164
 
243
- FunnelsController (./spec/controllers/funnels_controller_spec.rb:3) 00:38.532 of 00:43.649 (133)
244
- ↳ user – 3
245
- ↳ funnel – 2
246
- ApplicantsController (./spec/controllers/applicants_controller_spec.rb:3) – 00:33.252 of 00:41.407 (222)
247
- ↳ user – 10
248
- ↳ funnel – 5
249
- ```
165
+ - Add global `before_all` hooks. ([@danielwaterworth][], [@palkan][])
250
166
 
251
- Enabled by default. Disable it with:
167
+ Now you can run additional code before and after every `before_all` transaction
168
+ begins and rollbacks:
252
169
 
253
- ```ruby
254
- TestProf::RSpecDissect.configure do |config|
255
- config.let_stats_enabled = false
170
+ ```ruby
171
+ TestProf::BeforeAll.configure do |config|
172
+ config.before(:begin) do
173
+ # do something before transaction opens
256
174
  end
257
- ```
258
-
259
- - [Fix [#80](https://github.com/palkan/test-prof/issues/80)] Added ability to preserve traits. ([@Vasfed][])
260
-
261
- Disabled by default for compatibility. Enable globally by `FactoryDefault.preserve_traits = true` or for single `create_default`: `create_default(:user, preserve_traits: true)`
262
-
263
- When enabled - default object will be used only when there's no [traits](https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#traits) in association.
264
-
265
- - Add ability to run only `let` or `before` profiler with RSpecDissect. ([@palkan][])
266
-
267
- - Collect _raw_ data with StackProf by default. ([@palkan][])
268
-
269
- - Refactor `:with_clean_fixture` to clean data once per group. ([@palkan][])
270
-
271
- - [Fix [#75](https://github.com/palkan/test-prof/issues/75)] Fix `RSpec/Aggregate` failures with non-regular examples. ([@palkan][])
272
-
273
- Do not take into account `xit`, `pending`, `its`, etc. examples,
274
- only consider regular `it`, `specify`, `scenario`, `example`.
275
-
276
- ## 0.5.0 (2018-04-25)
277
-
278
- ### Features
279
-
280
- - Add events support to TagProf. ([@palkan][])
281
-
282
- Example usage:
283
-
284
- ```sh
285
- TAG_PROF=type TAG_PROF_EVENT=sql.active_record rspec
286
- ```
287
-
288
- [📝 Docs](https://test-prof.evilmartians.io/#/tag_prof?id=profiling-events)
289
-
290
- - Add logging helpers for Rails. ([@palkan][])
291
-
292
- Enable verbose logging globally:
293
175
 
294
- ```sh
295
- LOG=all rspec
296
- ```
297
-
298
- Or per example (group):
299
-
300
- ```ruby
301
- it "does smth weird", :log do
302
- # ...
176
+ config.after(:rollback) do
177
+ # do something after transaction closes
303
178
  end
304
- ```
305
-
306
- [📝 Docs](https://test-prof.evilmartians.io/#/logging)
307
-
308
- - Add HTML report for `TagProf`. ([@palkan][])
309
-
310
- Generate HTML report by setting `TAG_PROF_FORMAT` to `html`.
311
-
312
- - Add ability to track multiple events at the same time with `EventProf`. ([@palkan][])
313
-
314
- - Add `AnyFixture` DSL. ([@palkan][])
315
-
316
- Example:
317
-
318
- ```ruby
319
- # Enable DSL
320
- using TestProf::AnyFixture::DSL
321
-
322
- # and then you can use `fixture` method (which is just an alias for `TestProf::AnyFixture.register`)
323
- before(:all) { fixture(:account) }
324
-
325
- # You can also use it to fetch the record (instead of storing it in instance variable)
326
- let(:account) { fixture(:account) }
327
- ```
328
-
329
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=dsl)
330
-
331
- - Add `AnyFixture` usage report. ([@palkan][])
332
-
333
- Enable `AnyFixture` usage reporting with `ANYFIXTURE_REPORTING=1` or with:
334
-
335
- ```ruby
336
- TestProf::AnyFixture.reporting_enabled = true
337
- ```
338
-
339
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=usage-report)
340
-
341
- - Add `ActiveRecordSharedConnection` recipe. ([@palkan][])
342
-
343
- Force ActiveRecord to use the same connection between threads (to avoid database cleaning in browser tests).
344
-
345
- [📝 Docs](https://test-prof.evilmartians.io/#/active_record_shared_connection)
346
-
347
- - [#70](https://github.com/palkan/test-prof/pull/70) Add `FactoryAllStub` recipe. ([@palkan][])
348
-
349
- [📝 Docs](https://test-prof.evilmartians.io/#/factory_all_stub)
350
-
351
- - Add `ActiveRecordRefind` refinement. ([@palkan][])
352
-
353
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=activerecordrefind)
354
-
355
- ### Fixes & Improvements
356
-
357
- - **Brand new documentatation website: https://test-prof.evilmartians.io/**
358
-
359
- - Disable referential integrity when cleaning AnyFixture. ([@palkan][])
360
-
361
-
362
- ## 0.4.9 (2018-03-20)
363
-
364
- - [Fix [#64](https://github.com/palkan/test-prof/issues/64)] Fix dependencies requiring for FactoryDefault. ([@palkan][])
365
-
366
- - [Fix [#60](https://github.com/palkan/test-prof/issues/60)] Fix RSpecDissect reporter hooks. ([@palkan][])
367
-
368
- Consider only `example_failed` and `example_passed` to ensure that the `run_time`
369
- is available.
370
-
371
- ## 0.4.8 (2018-01-17)
372
-
373
- - Add `minitest` 5.11 support. ([@palkan][])
374
-
375
- - Fix `spring` detection. ([@palkan][])
376
-
377
- Some `spring`-related gems do not check whether Spring is running and load
378
- Spring modules. Thus we have `Spring` defined (and even `Spring.after_fork` defined) but no-op.
379
-
380
- Now we require that `Spring::Applcation` is defined in order to rely on Spring.
381
-
382
- Possibly fixes [#47](https://github.com/palkan/test-prof/issues/47).
383
-
384
- ## 0.4.7 (2017-12-25)
385
-
386
- - [#57](https://github.com/palkan/test-prof/pull/57) Fix RubyProf Printers Support ([@rabotyaga][])
387
-
388
- ## 0.4.6 (2017-12-17)
389
-
390
- - Upgrade RSpec/AggregateFailures to RuboCop 0.52.0. ([@palkan][])
391
-
392
- RuboCop < 0.51.0 is not supported anymore.
393
-
394
- - [Fixes [#49](https://github.com/palkan/test-prof/issues/49)] Correctly detect RSpec version in `let_it_be`. ([@desoleary][])
395
-
396
- ## 0.4.5 (2017-12-09)
397
-
398
- - Fix circular require in `lib/factory_doctor/minitest`. ([@palkan][])
399
-
400
- ## 0.4.4 (2017-11-08)
401
-
402
- - [Fixes [#48](https://github.com/palkan/test-prof/issues/48)] Respect RubyProf reports files extensions. ([@palkan][])
403
-
404
- ## 0.4.3 (2017-10-26)
405
-
406
- - [#46](https://github.com/palkan/test-prof/pull/46) Support FactoryBot, which is [former FactoryGirl](https://github.com/thoughtbot/factory_bot/pull/1051),
407
- while maintaining compatibility with latter. ([@Shkrt][])
408
-
409
- ## 0.4.2 (2017-10-23)
410
-
411
- - Fix bug with multiple `before_all` within one group. ([@palkan][])
412
-
413
- ## 0.4.1 (2017-10-18)
179
+ end
180
+ ```
414
181
 
415
- - [#44](https://github.com/palkan/test-prof/pull/44) Support older versions of RSpec. ([@palkan][])
416
-
417
- Support RSpec 3.1.0+ in general.
418
-
419
- `let_it_be` supports only RSpec 3.3.0+.
420
-
421
- RSpecDissect `let` tracking supports only RSpec 3.3.0+.
422
-
423
- - [#38](https://github.com/palkan/test-prof/pull/38) Factory Doctor Minitest integration. ([@IDolgirev][])
424
-
425
- It is possible now to use Factory Doctor with Minitest
426
-
427
- ## 0.4.0 (2017-10-03)
428
-
429
- ### Features:
430
-
431
- - [#29](https://github.com/palkan/test-prof/pull/29) EventProf Minitest integration. ([@IDolgirev][])
432
-
433
- It is possible now to use Event Prof with Minitest
434
-
435
- - [#30](https://github.com/palkan/test-prof/pull/30) Fabrication support for FactoryProf. ([@Shkrt][])
436
-
437
- FactoryProf now also accounts objects created by Fabrication gem (in addition to FactoryGirl)
438
-
439
- ## 0.3.0 (2017-09-21)
440
-
441
- ### Features:
442
-
443
- - Combine RSpecStamp with FactoryDoctor. ([@palkan][])
444
-
445
- Automatically mark _bad_ examples with custom tags.
446
-
447
- - [#17](https://github.com/palkan/test-prof/pull/17) Combine RSpecStamp with EventProf and RSpecDissect. ([@palkan][])
448
-
449
- It is possible now to automatically mark _slow_ examples and groups with custom tags. For example:
450
-
451
- ```sh
452
- $ EVENT_PROF="sql.active_record" EVENT_PROF_STAMP="slow:sql" rspec ...
453
- ```
454
-
455
- After running the command above the top 5 slowest example groups would be marked with `slow: :sql` tag.
456
-
457
- - [#14](https://github.com/palkan/test-prof/pull/14) RSpecDissect profiler. ([@palkan][])
458
-
459
- RSpecDissect tracks how much time do you spend in `before` hooks and memoization helpers (i.e. `let`) in your tests.
460
-
461
- - [#13](https://github.com/palkan/test-prof/pull/13) RSpec `let_it_be` method. ([@palkan][])
462
-
463
- Just like `let`, but persist the result for the whole group (i.e. `let` + `before_all`).
464
-
465
- ### Improvements:
466
-
467
- - Add ability to specify RubyProf report through `TEST_RUBY_PROF` env variable. ([@palkan][])
468
-
469
- - Add ability to specify StackProf raw mode through `TEST_STACK_PROF` env variable. ([@palkan][])
470
-
471
- ### Changes
472
-
473
- - Use RubyProf `FlatPrinter` by default (was `CallStackPrinter`). ([@palkan][])
474
-
475
- ## 0.2.5 (2017-08-30)
476
-
477
- - [#16](https://github.com/palkan/test-prof/pull/16) Support Ruby >= 2.2.0 (was >= 2.3.0). ([@palkan][])
478
-
479
- ## 0.2.4 (2017-08-29)
480
-
481
- - EventProf: Fix regression bug with examples profiling. ([@palkan][])
482
-
483
- There was a bug when an event occurs before the example has started (e.g. in `before(:context)` hook).
484
-
485
- ## 0.2.3 (2017-08-28)
486
-
487
- - Minor improvements. ([@palkan][])
488
-
489
- ## 0.2.2 (2017-08-23)
490
-
491
- - Fix time calculation when Time class is monkey-patched. ([@palkan][])
492
-
493
- Add `TestProf.now` method which is just a copy of original `Time.now` and use it everywhere.
494
-
495
- Fixes [#10](https://github.com/palkan/test-prof/issues/10).
496
-
497
- ## 0.2.1 (2017-08-19)
498
-
499
- - Detect `RSpec` by checking the presence of `RSpec::Core`. ([@palkan][])
500
-
501
- Fixes [#8](https://github.com/palkan/test-prof/issues/8).
502
-
503
- ## 0.2.0 (2017-08-18)
504
-
505
- - Ensure output directory exists. ([@danielwestendorf][])
506
-
507
- **Change default output dir** to "tmp/test_prof".
508
-
509
- Rename `#artefact_path` to `#artifact_path` to be more US-like
510
-
511
- Ensure output dir exists in `#artifact_path` method.
512
-
513
- - FactoryDoctor: print success message when no bad examples found. ([@palkan][])
514
-
515
- ## 0.1.1 (2017-08-17)
182
+ - Add ability to use `let_it_be` aliases with predefined options. ([@danielwaterworth][])
516
183
 
517
- - AnyFixture: clean tables in reverse order to not fail when foreign keys exist. ([@marshall-lee][])
184
+ ```ruby
185
+ TestProf::LetItBe.configure do |config|
186
+ config.alias_to :let_it_be_with_refind, refind: true
187
+ end
188
+ ```
518
189
 
519
- ## 0.1.0 (2017-08-15)
190
+ - Made FactoryProf measure and report on timing ([@danielwaterworth][])
520
191
 
521
- - Initial version. ([@palkan][])
192
+ See [changelog](https://github.com/test-prof/test-prof/blob/v0.8.0/CHANGELOG.md) for versions <0.9.0.
522
193
 
523
194
  [@palkan]: https://github.com/palkan
524
195
  [@marshall-lee]: https://github.com/marshall-lee
@@ -536,3 +207,7 @@ Fixes [#10](https://github.com/palkan/test-prof/issues/10).
536
207
  [@tyleriguchi]: https://github.com/tyleriguchi
537
208
  [@lostie]: https://github.com/lostie
538
209
  [@pirj]: https://github.com/pirj
210
+ [@LynxEyes]: https://github.com/LynxEyes
211
+ [@stefkin]: https://github.com/stefkin
212
+ [@jaimerson]: https://github.com/jaimerson
213
+ [@alexvko]: https://github.com/alexvko