test-prof 1.4.0.rc.3 → 1.4.0.rc.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/test_prof/factory_prof/fabrication_patch.rb +1 -1
- data/lib/test_prof/factory_prof/factory_bot_patch.rb +1 -1
- data/lib/test_prof/factory_prof/printers/simple.rb +2 -0
- data/lib/test_prof/factory_prof.rb +7 -2
- data/lib/test_prof/ruby_prof/rspec_no_boot.rb +15 -0
- data/lib/test_prof/ruby_prof.rb +20 -7
- data/lib/test_prof/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46c375967bb8f18cb7a27c0852c3bbc277ea6cae7c0d9ed51d8fe709b1ec67e9
|
4
|
+
data.tar.gz: 133939cf5cd497246b36642d3552ac0883a3a558d32775be960a9f308e3e67a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 830b4ed5c186ecec5a5396ad764f4d8c96700c8c0c3e55b2f0634b937906ec74d39e61ce1e270d9dd93a72b5618aaad87a6c0b316dc42874c3522631e1e8bbc6
|
7
|
+
data.tar.gz: 8e81d280c8f86adf1df271758d7bbf91499d86f2493ecbc6435f23cef73adfc23ed1404f475b10ef749a84dd19d0e87eff42aa61f1040738aef04cdb270a2689
|
@@ -7,7 +7,7 @@ module TestProf
|
|
7
7
|
def create(name, overrides = {})
|
8
8
|
variation = ""
|
9
9
|
|
10
|
-
if FactoryProf.config.include_variations && !overrides.empty?
|
10
|
+
if FactoryProf.config.include_variations? && !overrides.empty?
|
11
11
|
variation += overrides.keys.sort.to_s.gsub(/[\\":]/, "")
|
12
12
|
end
|
13
13
|
|
@@ -40,6 +40,8 @@ module TestProf::FactoryProf
|
|
40
40
|
(variation[:name] == "[...]") ? stat[:variations].size + 1 : i
|
41
41
|
end
|
42
42
|
sorted_variations.each do |variation_stat|
|
43
|
+
next if variation_stat[:total_count] < threshold
|
44
|
+
|
43
45
|
msgs << format("%-5s%-18s %8d %11d %13.4fs %17.4fs %18.4fs", *format_args(variation_stat))
|
44
46
|
end
|
45
47
|
end
|
@@ -40,6 +40,10 @@ module TestProf
|
|
40
40
|
def flamegraph?
|
41
41
|
@mode == :flamegraph
|
42
42
|
end
|
43
|
+
|
44
|
+
def include_variations?
|
45
|
+
@include_variations == true
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
class Result # :nodoc:
|
@@ -137,14 +141,14 @@ module TestProf
|
|
137
141
|
@depth += 1
|
138
142
|
@current_stack << factory if config.flamegraph?
|
139
143
|
track_count(@stats[factory])
|
140
|
-
track_count(@stats[factory][:variations][variation_name(variation)])
|
144
|
+
track_count(@stats[factory][:variations][variation_name(variation)]) if config.include_variations?
|
141
145
|
t1 = TestProf.now
|
142
146
|
begin
|
143
147
|
yield
|
144
148
|
ensure
|
145
149
|
t2 = TestProf.now
|
146
150
|
track_time(@stats[factory], t1, t2)
|
147
|
-
track_time(@stats[factory][:variations][variation_name(variation)], t1, t2)
|
151
|
+
track_time(@stats[factory][:variations][variation_name(variation)], t1, t2) if config.include_variations?
|
148
152
|
@depth -= 1
|
149
153
|
flush_stack if @depth.zero?
|
150
154
|
end
|
@@ -153,6 +157,7 @@ module TestProf
|
|
153
157
|
private
|
154
158
|
|
155
159
|
def variation_name(variation)
|
160
|
+
return "-" if variation.empty?
|
156
161
|
variations_count = variation.to_s.scan(/[\w]+/).size
|
157
162
|
return "[...]" if variations_count > config.variations_limit
|
158
163
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
report = nil
|
5
|
+
|
6
|
+
config.append_before(:suite) do
|
7
|
+
report = TestProf::RubyProf.profile(locked: true)
|
8
|
+
|
9
|
+
TestProf.log :info, "RubyProf enabled for examples"
|
10
|
+
end
|
11
|
+
|
12
|
+
config.after(:suite) do
|
13
|
+
report&.dump("examples")
|
14
|
+
end
|
15
|
+
end
|
data/lib/test_prof/ruby_prof.rb
CHANGED
@@ -48,12 +48,13 @@ module TestProf
|
|
48
48
|
attr_accessor :printer, :mode, :min_percent,
|
49
49
|
:include_threads, :exclude_common_methods,
|
50
50
|
:test_prof_exclusions_enabled,
|
51
|
-
:custom_exclusions
|
51
|
+
:custom_exclusions, :skip_boot
|
52
52
|
|
53
53
|
def initialize
|
54
54
|
@printer = ENV["TEST_RUBY_PROF"].to_sym if PRINTERS.key?(ENV["TEST_RUBY_PROF"])
|
55
55
|
@printer ||= ENV.fetch("TEST_RUBY_PROF_PRINTER", :flat).to_sym
|
56
56
|
@mode = ENV.fetch("TEST_RUBY_PROF_MODE", :wall).to_s
|
57
|
+
@skip_boot = %w[0 false f].include?(ENV["TEST_RUBY_PROF_BOOT"])
|
57
58
|
@min_percent = 1
|
58
59
|
@include_threads = false
|
59
60
|
@exclude_common_methods = true
|
@@ -65,6 +66,10 @@ module TestProf
|
|
65
66
|
include_threads == true
|
66
67
|
end
|
67
68
|
|
69
|
+
def skip_boot?
|
70
|
+
skip_boot == true
|
71
|
+
end
|
72
|
+
|
68
73
|
def exclude_common_methods?
|
69
74
|
exclude_common_methods == true
|
70
75
|
end
|
@@ -166,23 +171,21 @@ module TestProf
|
|
166
171
|
#
|
167
172
|
# Use this method to profile the whole run.
|
168
173
|
def run
|
169
|
-
report = profile
|
174
|
+
report = profile(locked: true)
|
170
175
|
|
171
176
|
return unless report
|
172
177
|
|
173
|
-
@locked = true
|
174
|
-
|
175
178
|
log :info, "RubyProf enabled globally"
|
176
179
|
|
177
180
|
at_exit { report.dump("total") }
|
178
181
|
end
|
179
182
|
|
180
|
-
def profile
|
183
|
+
def profile(locked: false)
|
181
184
|
if locked?
|
182
185
|
log :warn, <<~MSG
|
183
186
|
RubyProf is activated globally, you cannot generate per-example report.
|
184
187
|
|
185
|
-
Make sure you haven
|
188
|
+
Make sure you haven not set the TEST_RUBY_PROF environmental variable.
|
186
189
|
MSG
|
187
190
|
return
|
188
191
|
end
|
@@ -212,6 +215,8 @@ module TestProf
|
|
212
215
|
|
213
216
|
profiler.start
|
214
217
|
|
218
|
+
@locked = true if locked
|
219
|
+
|
215
220
|
Report.new(profiler)
|
216
221
|
end
|
217
222
|
|
@@ -282,5 +287,13 @@ end
|
|
282
287
|
|
283
288
|
# Hook to run RubyProf globally
|
284
289
|
TestProf.activate("TEST_RUBY_PROF") do
|
285
|
-
TestProf::RubyProf.
|
290
|
+
if TestProf::RubyProf.config.skip_boot?
|
291
|
+
if TestProf.rspec?
|
292
|
+
require "test_prof/ruby_prof/rspec_no_boot"
|
293
|
+
else
|
294
|
+
TestProf.log :warn, "RubyProf tests profiling w/o test suite boot is only supported in RSpec"
|
295
|
+
end
|
296
|
+
else
|
297
|
+
TestProf::RubyProf.run
|
298
|
+
end
|
286
299
|
end
|
data/lib/test_prof/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-prof
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.0.rc.
|
4
|
+
version: 1.4.0.rc.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- lib/test_prof/ruby_prof.rb
|
212
212
|
- lib/test_prof/ruby_prof/rspec.rb
|
213
213
|
- lib/test_prof/ruby_prof/rspec_exclusions.rb
|
214
|
+
- lib/test_prof/ruby_prof/rspec_no_boot.rb
|
214
215
|
- lib/test_prof/stack_prof.rb
|
215
216
|
- lib/test_prof/stack_prof/rspec.rb
|
216
217
|
- lib/test_prof/tag_prof.rb
|