test-prof 0.8.0 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65bd3447c63c3e7c037707ebd0f637831ccf0c98af1b0b3d9bf0a6fa72c56b11
4
- data.tar.gz: d6af1b43e6924c67ef4c2297602ef641377584f3282eafc236e48eb951e04b68
3
+ metadata.gz: 6cf66f80707806f1378f3164e1376e6ee8fe5c3472d0704ef865de4939852283
4
+ data.tar.gz: 472ea3dde66363470b5e62995548760359f5ecd358b84099d12d9a622b36063d
5
5
  SHA512:
6
- metadata.gz: 2eae07fcbce70eb7598b92fc578530ed5e20edfb3d7752c672740d44aa13f5d925005500aa26e83ce004c0b2ba128b0091362c39771b67e12d352360aacc2081
7
- data.tar.gz: 213858acbdaa8d5e2e6e1fcdd99ca952a044949d23846f631a34513d379ce583013c13ed76c0303c8bd8fec777f44b99bf992e8937598d22bf4110cedb408eb6
6
+ metadata.gz: 4c21d8cae35943af31f72617a20b11d653ade888ba264c510dbe1fc365052a3ed7c7e04a7516b967a4f47dcb2442754a0d4e60053c385ae859963b666d239f9e
7
+ data.tar.gz: 7615a8bdb3d087c254333c265ffd759d13b51e76c6913d8e38a6856bdc036303f096ef2f2fb83c1b867024a87fe4989635105361103e85d7e1f4b14c0ae584bd
@@ -1,6 +1,57 @@
1
1
  # Change log
2
2
 
3
- ## master
3
+ ## master (unreleased)
4
+
5
+ ## 0.9.0 (2019-05-14)
6
+
7
+ - Add threshold and custom event support to FactoryDoctor. ([@palkan][])
8
+
9
+ ```sh
10
+ $ FDOC=1 FDOC_EVENT="sql.rom" FDOC_THRESHOLD=0.1 rspec
11
+ ```
12
+
13
+ - Add Fabrication support to FactoryDoctor. ([@palkan][])
14
+
15
+ - Add `guard` and `top_level` options to `EventProf::Monitor`. ([@palkan][])
16
+
17
+ For example:
18
+
19
+ ```ruby
20
+ TestProf::EventProf.monitor(
21
+ Sidekiq::Client,
22
+ "sidekiq.inline",
23
+ :raw_push,
24
+ top_level: true,
25
+ guard: ->(*) { Sidekiq::Testing.inline? }
26
+ )
27
+ ```
28
+
29
+ - Add global `before_all` hooks. ([@danielwaterworth][], [@palkan][])
30
+
31
+ Now you can run additional code before and after every `before_all` transaction
32
+ begins and rollbacks:
33
+
34
+ ```ruby
35
+ TestProf::BeforeAll.configure do |config|
36
+ config.before(:begin) do
37
+ # do something before transaction opens
38
+ end
39
+
40
+ config.after(:rollback) do
41
+ # do something after transaction closes
42
+ end
43
+ end
44
+ ```
45
+
46
+ - Add ability to use `let_it_be` aliases with predefined options. ([@danielwaterworth][])
47
+
48
+ ```ruby
49
+ TestProf::LetItBe.configure do |config|
50
+ config.alias_to :let_it_be_with_refind, refind: true
51
+ end
52
+ ```
53
+
54
+ - Made FactoryProf measure and report on timing ([@danielwaterworth][])
4
55
 
5
56
  ## 0.8.0 (2019-04-12) 🚀
6
57
 
@@ -38,10 +89,10 @@
38
89
 
39
90
  - Improve test sampling.([@mkldon][])
40
91
 
41
- ```bash
42
- SAMPLE=10 rake test # runs 10 random test examples
43
- SAMPLE_GROUPS=10 rake test # runs 10 random example groups
44
- ```
92
+ ```bash
93
+ $ SAMPLE=10 rake test # runs 10 random test examples
94
+ $ SAMPLE_GROUPS=10 rake test # runs 10 random example groups
95
+ ```
45
96
 
46
97
  - 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][])
47
98
 
@@ -53,32 +104,32 @@
53
104
 
54
105
  - Add ability to ignore connection configurations in shared connection.([@palkan][])
55
106
 
56
- Example:
107
+ Example:
57
108
 
58
- ```ruby
59
- # Do not use shared connection for sqlite db
60
- TestProf::ActiveRecordSharedConnection.ignore { |config| config[:adapter] == "sqlite3" }
61
- ```
109
+ ```ruby
110
+ # Do not use shared connection for sqlite db
111
+ TestProf::ActiveRecordSharedConnection.ignore { |config| config[:adapter] == "sqlite3" }
112
+ ```
62
113
 
63
114
  ## 0.7.0 (2018-08-12)
64
115
 
65
116
  - **Ruby 2.3+ is required**. ([@palkan][])
66
117
 
67
- Ruby 2.2 EOL was on 2018-03-31.
118
+ Ruby 2.2 EOL was on 2018-03-31.
68
119
 
69
120
  - Upgrade RubyProf integration to `ruby-prof >= 0.17`. ([@palkan][])
70
121
 
71
- Use `exclude_common_methods!` instead of the deprecated `eliminate_methods!`.
122
+ Use `exclude_common_methods!` instead of the deprecated `eliminate_methods!`.
72
123
 
73
- Add RSpec specific exclusions.
124
+ Add RSpec specific exclusions.
74
125
 
75
- Add ability to specify custom exclusions through `config.custom_exclusions`, e.g.:
126
+ Add ability to specify custom exclusions through `config.custom_exclusions`, e.g.:
76
127
 
77
- ```ruby
78
- TestProf::RubyProf.configure do |config|
79
- config.custom_exclusions = {User => %i[save save!]}
80
- end
81
- ```
128
+ ```ruby
129
+ TestProf::RubyProf.configure do |config|
130
+ config.custom_exclusions = {User => %i[save save!]}
131
+ end
132
+ ```
82
133
 
83
134
  ## 0.6.0 (2018-06-29)
84
135
 
@@ -86,25 +137,24 @@ end
86
137
 
87
138
  - Add `EventProf.monitor` to instrument arbitrary methods. ([@palkan][])
88
139
 
89
- Add custom instrumetation easily:
140
+ Add custom instrumetation easily:
90
141
 
91
- ```ruby
92
- class Work
93
- def do
94
- # ...
142
+ ```ruby
143
+ class Work
144
+ def do
145
+ # ...
146
+ end
95
147
  end
96
- end
97
148
 
98
- # Instrument Work#do calls with "my.work" event
99
- TestProf::EventProf.monitor(Work, "my.work", :do)
100
- ```
149
+ # Instrument Work#do calls with "my.work" event
150
+ TestProf::EventProf.monitor(Work, "my.work", :do)
151
+ ```
101
152
 
102
153
  [📝 Docs](https://test-prof.evilmartians.io/#/event_prof?id=profile-arbitrary-methods)
103
154
 
104
155
  - Adapterize `before_all`. ([@palkan][])
105
156
 
106
- Now it's possible to write your own adapter for `before_all` to manage
107
- transactions.
157
+ Now it's possible to write your own adapter for `before_all` to manage transactions.
108
158
 
109
159
  [📝 Docs](https://test-prof.evilmartians.io/#/before_all?id=database-adapters)
110
160
 
@@ -116,32 +166,32 @@ transactions.
116
166
 
117
167
  - Show top `let` declarations per example group in RSpecDissect profiler. ([@palkan][])
118
168
 
119
- The output now includes the following information:
169
+ The output now includes the following information:
120
170
 
121
- ```
122
- Top 5 slowest suites (by `let` time):
171
+ ```
172
+ Top 5 slowest suites (by `let` time):
123
173
 
124
- FunnelsController (./spec/controllers/funnels_controller_spec.rb:3) – 00:38.532 of 00:43.649 (133)
125
- ↳ user – 3
126
- ↳ funnel – 2
127
- ApplicantsController (./spec/controllers/applicants_controller_spec.rb:3) – 00:33.252 of 00:41.407 (222)
128
- ↳ user – 10
129
- ↳ funnel – 5
130
- ```
174
+ FunnelsController (./spec/controllers/funnels_controller_spec.rb:3) – 00:38.532 of 00:43.649 (133)
175
+ ↳ user – 3
176
+ ↳ funnel – 2
177
+ ApplicantsController (./spec/controllers/applicants_controller_spec.rb:3) – 00:33.252 of 00:41.407 (222)
178
+ ↳ user – 10
179
+ ↳ funnel – 5
180
+ ```
131
181
 
132
- Enabled by default. Disable it with:
182
+ Enabled by default. Disable it with:
133
183
 
134
- ```ruby
135
- TestProf::RSpecDissect.configure do |config|
136
- config.let_stats_enabled = false
137
- end
138
- ```
184
+ ```ruby
185
+ TestProf::RSpecDissect.configure do |config|
186
+ config.let_stats_enabled = false
187
+ end
188
+ ```
139
189
 
140
190
  - [Fix [#80](https://github.com/palkan/test-prof/issues/80)] Added ability to preserve traits. ([@Vasfed][])
141
191
 
142
- Disabled by default for compatibility. Enable globally by `FactoryDefault.preserve_traits = true` or for single `create_default`: `create_default(:user, preserve_traits: true)`
192
+ Disabled by default for compatibility. Enable globally by `FactoryDefault.preserve_traits = true` or for single `create_default`: `create_default(:user, preserve_traits: true)`
143
193
 
144
- 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.
194
+ 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.
145
195
 
146
196
  - Add ability to run only `let` or `before` profiler with RSpecDissect. ([@palkan][])
147
197
 
@@ -151,8 +201,8 @@ When enabled - default object will be used only when there's no [traits](https:/
151
201
 
152
202
  - [Fix [#75](https://github.com/palkan/test-prof/issues/75)] Fix `RSpec/Aggregate` failures with non-regular examples. ([@palkan][])
153
203
 
154
- Do not take into account `xit`, `pending`, `its`, etc. examples,
155
- only consider regular `it`, `specify`, `scenario`, `example`.
204
+ Do not take into account `xit`, `pending`, `its`, etc. examples,
205
+ only consider regular `it`, `specify`, `scenario`, `example`.
156
206
 
157
207
  ## 0.5.0 (2018-04-25)
158
208
 
@@ -160,78 +210,78 @@ only consider regular `it`, `specify`, `scenario`, `example`.
160
210
 
161
211
  - Add events support to TagProf. ([@palkan][])
162
212
 
163
- Example usage:
213
+ Example usage:
164
214
 
165
- ```sh
166
- TAG_PROF=type TAG_PROF_EVENT=sql.active_record rspec
167
- ```
215
+ ```sh
216
+ TAG_PROF=type TAG_PROF_EVENT=sql.active_record rspec
217
+ ```
168
218
 
169
- [📝 Docs](https://test-prof.evilmartians.io/#/tag_prof?id=profiling-events)
219
+ [📝 Docs](https://test-prof.evilmartians.io/#/tag_prof?id=profiling-events)
170
220
 
171
221
  - Add logging helpers for Rails. ([@palkan][])
172
222
 
173
- Enalbe verbose logging globally:
223
+ Enable verbose logging globally:
174
224
 
175
- ```sh
176
- LOG=all rspec
177
- ```
225
+ ```sh
226
+ LOG=all rspec
227
+ ```
178
228
 
179
- Or per example (group):
229
+ Or per example (group):
180
230
 
181
- ```ruby
182
- it "does smth weird", :log do
183
- # ...
184
- end
185
- ```
231
+ ```ruby
232
+ it "does smth weird", :log do
233
+ # ...
234
+ end
235
+ ```
186
236
 
187
- [📝 Docs](https://test-prof.evilmartians.io/#/logging)
237
+ [📝 Docs](https://test-prof.evilmartians.io/#/logging)
188
238
 
189
239
  - Add HTML report for `TagProf`. ([@palkan][])
190
240
 
191
- Generate HTML report by setting `TAG_PROF_FORMAT` to `html`.
241
+ Generate HTML report by setting `TAG_PROF_FORMAT` to `html`.
192
242
 
193
243
  - Add ability to track multiple events at the same time with `EventProf`. ([@palkan][])
194
244
 
195
245
  - Add `AnyFixture` DSL. ([@palkan][])
196
246
 
197
- Example:
247
+ Example:
198
248
 
199
- ```ruby
200
- # Enable DSL
201
- using TestProf::AnyFixture::DSL
249
+ ```ruby
250
+ # Enable DSL
251
+ using TestProf::AnyFixture::DSL
202
252
 
203
- # and then you can use `fixture` method (which is just an alias for `TestProf::AnyFixture.register`)
204
- before(:all) { fixture(:account) }
253
+ # and then you can use `fixture` method (which is just an alias for `TestProf::AnyFixture.register`)
254
+ before(:all) { fixture(:account) }
205
255
 
206
- # You can also use it to fetch the record (instead of storing it in instance variable)
207
- let(:account) { fixture(:account) }
208
- ```
256
+ # You can also use it to fetch the record (instead of storing it in instance variable)
257
+ let(:account) { fixture(:account) }
258
+ ```
209
259
 
210
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=dsl)
260
+ [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=dsl)
211
261
 
212
262
  - Add `AnyFixture` usage report. ([@palkan][])
213
263
 
214
- Enable `AnyFixture` usage reporting with `ANYFIXTURE_REPORTING=1` or with:
264
+ Enable `AnyFixture` usage reporting with `ANYFIXTURE_REPORTING=1` or with:
215
265
 
216
- ```ruby
217
- TestProf::AnyFixture.reporting_enabled = true
218
- ```
266
+ ```ruby
267
+ TestProf::AnyFixture.reporting_enabled = true
268
+ ```
219
269
 
220
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=usage-report)
270
+ [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=usage-report)
221
271
 
222
272
  - Add `ActiveRecordSharedConnection` recipe. ([@palkan][])
223
273
 
224
- Force ActiveRecord to use the same connection between threads (to avoid database cleaning in browser tests).
274
+ Force ActiveRecord to use the same connection between threads (to avoid database cleaning in browser tests).
225
275
 
226
- [📝 Docs](https://test-prof.evilmartians.io/#/active_record_shared_connection)
276
+ [📝 Docs](https://test-prof.evilmartians.io/#/active_record_shared_connection)
227
277
 
228
278
  - [#70](https://github.com/palkan/test-prof/pull/70) Add `FactoryAllStub` recipe. ([@palkan][])
229
279
 
230
- [📝 Docs](https://test-prof.evilmartians.io/#/factory_all_stub)
280
+ [📝 Docs](https://test-prof.evilmartians.io/#/factory_all_stub)
231
281
 
232
282
  - Add `ActiveRecordRefind` refinement. ([@palkan][])
233
283
 
234
- [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=activerecordrefind)
284
+ [📝 Docs](https://test-prof.evilmartians.io/#/any_fixture?id=activerecordrefind)
235
285
 
236
286
  ### Fixes & Improvements
237
287
 
@@ -295,15 +345,15 @@ Force ActiveRecord to use the same connection between threads (to avoid database
295
345
 
296
346
  - [#44](https://github.com/palkan/test-prof/pull/44) Support older versions of RSpec. ([@palkan][])
297
347
 
298
- Support RSpec 3.1.0+ in general.
348
+ Support RSpec 3.1.0+ in general.
299
349
 
300
- `let_it_be` supports only RSpec 3.3.0+.
350
+ `let_it_be` supports only RSpec 3.3.0+.
301
351
 
302
- RSpecDissect `let` tracking supports only RSpec 3.3.0+.
352
+ RSpecDissect `let` tracking supports only RSpec 3.3.0+.
303
353
 
304
354
  - [#38](https://github.com/palkan/test-prof/pull/38) Factory Doctor Minitest integration. ([@IDolgirev][])
305
355
 
306
- It is possible now to use Factory Doctor with Minitest
356
+ It is possible now to use Factory Doctor with Minitest
307
357
 
308
358
  ## 0.4.0 (2017-10-03)
309
359
 
@@ -311,7 +361,7 @@ It is possible now to use Factory Doctor with Minitest
311
361
 
312
362
  - [#29](https://github.com/palkan/test-prof/pull/29) EventProf Minitest integration. ([@IDolgirev][])
313
363
 
314
- It is possible now to use Event Prof with Minitest
364
+ It is possible now to use Event Prof with Minitest
315
365
 
316
366
  - [#30](https://github.com/palkan/test-prof/pull/30) Fabrication support for FactoryProf. ([@Shkrt][])
317
367
 
@@ -323,26 +373,25 @@ FactoryProf now also accounts objects created by Fabrication gem (in addition to
323
373
 
324
374
  - Combine RSpecStamp with FactoryDoctor. ([@palkan][])
325
375
 
326
- Automatically mark _bad_ examples with custom tags.
376
+ Automatically mark _bad_ examples with custom tags.
327
377
 
328
378
  - [#17](https://github.com/palkan/test-prof/pull/17) Combine RSpecStamp with EventProf and RSpecDissect. ([@palkan][])
329
379
 
330
- It is possible now to automatically mark _slow_ examples and groups with custom tags. For example:
380
+ It is possible now to automatically mark _slow_ examples and groups with custom tags. For example:
331
381
 
332
- ```sh
333
- EVENT_PROF="sql.active_record" EVENT_PROF_STAMP="slow:sql" rspec ...
334
- ```
382
+ ```sh
383
+ $ EVENT_PROF="sql.active_record" EVENT_PROF_STAMP="slow:sql" rspec ...
384
+ ```
335
385
 
336
- After running the command above the top 5 slowest example groups would be marked with `slow: :sql` tag.
386
+ After running the command above the top 5 slowest example groups would be marked with `slow: :sql` tag.
337
387
 
338
388
  - [#14](https://github.com/palkan/test-prof/pull/14) RSpecDissect profiler. ([@palkan][])
339
389
 
340
- RSpecDissect tracks how much time do you spend in `before` hooks
341
- and memoization helpers (i.e. `let`) in your tests.
390
+ RSpecDissect tracks how much time do you spend in `before` hooks and memoization helpers (i.e. `let`) in your tests.
342
391
 
343
392
  - [#13](https://github.com/palkan/test-prof/pull/13) RSpec `let_it_be` method. ([@palkan][])
344
393
 
345
- Just like `let`, but persist the result for the whole group (i.e. `let` + `before_all`).
394
+ Just like `let`, but persist the result for the whole group (i.e. `let` + `before_all`).
346
395
 
347
396
  ### Improvements:
348
397
 
@@ -362,7 +411,7 @@ Just like `let`, but persist the result for the whole group (i.e. `let` + `befor
362
411
 
363
412
  - EventProf: Fix regression bug with examples profiling. ([@palkan][])
364
413
 
365
- There was a bug when an event occurs before the example has started (e.g. in `before(:context)` hook).
414
+ There was a bug when an event occurs before the example has started (e.g. in `before(:context)` hook).
366
415
 
367
416
  ## 0.2.3 (2017-08-28)
368
417
 
@@ -372,8 +421,7 @@ There was a bug when an event occurs before the example has started (e.g. in `be
372
421
 
373
422
  - Fix time calculation when Time class is monkey-patched. ([@palkan][])
374
423
 
375
- Add `TestProf.now` method which is just a copy of original `Time.now` and
376
- use it everywhere.
424
+ Add `TestProf.now` method which is just a copy of original `Time.now` and use it everywhere.
377
425
 
378
426
  Fixes [#10](https://github.com/palkan/test-prof/issues/10).
379
427
 
@@ -381,17 +429,17 @@ Fixes [#10](https://github.com/palkan/test-prof/issues/10).
381
429
 
382
430
  - Detect `RSpec` by checking the presence of `RSpec::Core`. ([@palkan][])
383
431
 
384
- Fixes [#8](https://github.com/palkan/test-prof/issues/8).
432
+ Fixes [#8](https://github.com/palkan/test-prof/issues/8).
385
433
 
386
434
  ## 0.2.0 (2017-08-18)
387
435
 
388
436
  - Ensure output directory exists. ([@danielwestendorf][])
389
437
 
390
- **Change default output dir** to "tmp/test_prof".
438
+ **Change default output dir** to "tmp/test_prof".
391
439
 
392
- Rename `#artefact_path` to `#artifact_path` to be more US-like
440
+ Rename `#artefact_path` to `#artifact_path` to be more US-like
393
441
 
394
- Ensure output dir exists in `#artifact_path` method.
442
+ Ensure output dir exists in `#artifact_path` method.
395
443
 
396
444
  - FactoryDoctor: print success message when no bad examples found. ([@palkan][])
397
445
 
@@ -414,3 +462,4 @@ Ensure output dir exists in `#artifact_path` method.
414
462
  [@szemek]: https://github.com/szemek
415
463
  [@mkldon]: https://github.com/mkldon
416
464
  [@dmagro]: https://github.com/dmagro
465
+ [@danielwaterworth]: https://github.com/danielwaterworth
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 palkan
3
+ Copyright (c) 2017-2019 palkan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal