test-prof 1.4.0.rc.4 → 1.4.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/test_prof/any_fixture/dsl.rb +19 -1
- data/lib/test_prof/any_fixture.rb +16 -2
- data/lib/test_prof/before_all/isolator.rb +6 -15
- data/lib/test_prof/recipes/rspec/any_fixture.rb +8 -0
- data/lib/test_prof/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6636a3c69af7cd067079bd1e91ef72d38b650a372a13e6363c3de9e510a8970b
|
4
|
+
data.tar.gz: 2f1a503a8adcf4af85cad6b98ab4682394c5222b1f5290cc6aaeec97da77ef06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68701c8c91b20f810ff93f3e3360d4f8f7b3210a2014f3a4463542b0e31b657ab3093da4eaf4b2bf9cee59d1e99ded9ef51d83e7a27855f05113f681219f7888
|
7
|
+
data.tar.gz: 438a4297ebff65d6f9d5aec752775a638f5c6255c63d439f278eda596825595c2b6d74cc609057c42712247a98eefb07c42dcd1133d4d1ae5162898a2af5068c
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
+
## 1.4.0 (2024-08-12)
|
6
|
+
|
7
|
+
- AnyFixture: Disable fixtures cache within _clean fixture_ context. Automatically _refind_ records when using `#fixture`. ([@palkan][])
|
8
|
+
|
5
9
|
- Add new TPS (tests per second) profiler. ([@palkan][])
|
6
10
|
|
7
11
|
- FactoryDefault: add Fabrication support. ([@palkan][])
|
@@ -1,5 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
if defined?(::ActiveRecord::Base)
|
4
|
+
require "test_prof/ext/active_record_refind"
|
5
|
+
using TestProf::Ext::ActiveRecordRefind
|
6
|
+
end
|
7
|
+
|
3
8
|
module TestProf
|
4
9
|
module AnyFixture
|
5
10
|
# Adds "global" `fixture`, `before_fixtures_reset` and `after_fixtures_reset` methods (through refinement)
|
@@ -9,7 +14,20 @@ module TestProf
|
|
9
14
|
# - Rails added `Kernel.prepend` in 6.1: https://github.com/rails/rails/commit/3124007bd674dcdc9c3b5c6b2964dfb7a1a0733c
|
10
15
|
refine ::Object do
|
11
16
|
def fixture(id, &block)
|
12
|
-
|
17
|
+
id = :"#{id}"
|
18
|
+
record = ::TestProf::AnyFixture.cached(id)
|
19
|
+
|
20
|
+
return ::TestProf::AnyFixture.register(id, &block) unless record
|
21
|
+
|
22
|
+
return record.refind if record.is_a?(::ActiveRecord::Base)
|
23
|
+
|
24
|
+
if record.respond_to?(:to_ary)
|
25
|
+
return record.map do |rec|
|
26
|
+
rec.is_a?(::ActiveRecord::Base) ? rec.refind : rec
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
record
|
13
31
|
end
|
14
32
|
|
15
33
|
def before_fixtures_reset(&block)
|
@@ -108,14 +108,18 @@ module TestProf
|
|
108
108
|
cached(id) do
|
109
109
|
raise "No fixture named #{id} has been registered" unless block_given?
|
110
110
|
|
111
|
+
next yield if @disabled
|
112
|
+
|
111
113
|
ActiveSupport::Notifications.subscribed(method(:subscriber), "sql.active_record") do
|
112
114
|
yield
|
113
115
|
end
|
114
116
|
end
|
115
117
|
end
|
116
118
|
|
117
|
-
def cached(id)
|
118
|
-
|
119
|
+
def cached(id, &block)
|
120
|
+
return (block_given? ? yield : nil) if @disabled
|
121
|
+
|
122
|
+
cache.fetch(id, &block)
|
119
123
|
end
|
120
124
|
|
121
125
|
# Create and register new SQL dump.
|
@@ -174,6 +178,14 @@ module TestProf
|
|
174
178
|
callbacks.clear
|
175
179
|
end
|
176
180
|
|
181
|
+
def disable!
|
182
|
+
@disabled = true
|
183
|
+
end
|
184
|
+
|
185
|
+
def enable!
|
186
|
+
@disabled = false
|
187
|
+
end
|
188
|
+
|
177
189
|
def before_fixtures_reset(&block)
|
178
190
|
callbacks[:before_fixtures_reset] << block
|
179
191
|
end
|
@@ -266,5 +278,7 @@ module TestProf
|
|
266
278
|
connection.disable_referential_integrity { yield }
|
267
279
|
end
|
268
280
|
end
|
281
|
+
|
282
|
+
enable!
|
269
283
|
end
|
270
284
|
end
|
@@ -1,20 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
def begin_transaction(*)
|
8
|
-
::Isolator.transactions_threshold += 1
|
9
|
-
super
|
10
|
-
end
|
3
|
+
TestProf::BeforeAll.configure do |config|
|
4
|
+
config.before(:begin) do
|
5
|
+
::Isolator.incr_thresholds!
|
6
|
+
end
|
11
7
|
|
12
|
-
|
13
|
-
|
14
|
-
::Isolator.transactions_threshold -= 1
|
15
|
-
end
|
16
|
-
end
|
8
|
+
config.after(:rollback) do
|
9
|
+
::Isolator.decr_thresholds!
|
17
10
|
end
|
18
11
|
end
|
19
|
-
|
20
|
-
TestProf::BeforeAll.singleton_class.prepend(TestProf::BeforeAll::Isolator)
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "test_prof/any_fixture"
|
4
|
+
require "test_prof/any_fixture/dsl"
|
5
|
+
require "test_prof/ext/active_record_refind"
|
6
|
+
|
4
7
|
require "test_prof/recipes/rspec/before_all"
|
5
8
|
|
6
9
|
RSpec.shared_context "any_fixture:clean" do
|
@@ -8,6 +11,11 @@ RSpec.shared_context "any_fixture:clean" do
|
|
8
11
|
|
9
12
|
before_all do
|
10
13
|
TestProf::AnyFixture.clean
|
14
|
+
TestProf::AnyFixture.disable!
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:all) do
|
18
|
+
TestProf::AnyFixture.enable!
|
11
19
|
end
|
12
20
|
end
|
13
21
|
|
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
|
4
|
+
version: 1.4.0
|
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-
|
11
|
+
date: 2024-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -252,9 +252,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
252
|
version: 2.7.0
|
253
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- - "
|
255
|
+
- - ">="
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
257
|
+
version: '0'
|
258
258
|
requirements: []
|
259
259
|
rubygems_version: 3.4.19
|
260
260
|
signing_key:
|