test-prof 1.4.0.rc.4 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|