fast_cov 0.3.1 → 0.3.2
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8d5eb20089cfe981168592cd5672e1919746a5186c61f151aff87eea7319eb1c
|
|
4
|
+
data.tar.gz: af45acb129fd680beaa1a906248ad1aedf03e10a5d40d02fbeaa0971e9112b44
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 97cdc30f83fb1970d97d6cddc04758463043a85ee81ccd5a22011e0b017a04d8b9b82be90931b42bdf5565ef163ac84cc1544ec43ecae2cc1727041770adfc52
|
|
7
|
+
data.tar.gz: baa28e4ae365439250404b285eb0577a167de1cb907a3c37b33f09d3a99bf53bf4e6ca0ac6fd2ff84360a048f2795de7ca709ffd11c1236b0846ae66a4f4a75a
|
|
@@ -15,6 +15,8 @@ module FastCov
|
|
|
15
15
|
# - threads: true -> record from ALL threads (global tracking)
|
|
16
16
|
# - threads: false -> only record from the thread that called start
|
|
17
17
|
class AbstractTracker
|
|
18
|
+
attr_reader :coverage_map
|
|
19
|
+
|
|
18
20
|
def initialize(coverage_map, **_options)
|
|
19
21
|
@coverage_map = coverage_map
|
|
20
22
|
@files = nil
|
|
@@ -22,7 +24,7 @@ module FastCov
|
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def root
|
|
25
|
-
|
|
27
|
+
coverage_map.root
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
# Public API - called by FastCov framework
|
|
@@ -12,9 +12,7 @@ module FastCov
|
|
|
12
12
|
# Register via: coverage_map.use(FastCov::FactoryBotTracker)
|
|
13
13
|
class FactoryBotTracker < AbstractTracker
|
|
14
14
|
def install
|
|
15
|
-
|
|
16
|
-
raise LoadError, "FactoryBotTracker requires the factory_bot gem to be installed"
|
|
17
|
-
end
|
|
15
|
+
gem "factory_bot"
|
|
18
16
|
|
|
19
17
|
return if ::FactoryBot.factories.singleton_class.ancestors.include?(RegistryPatch)
|
|
20
18
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "abstract_tracker"
|
|
4
|
+
|
|
5
|
+
module FastCov
|
|
6
|
+
# Tracks FixtureKit fixture definition files when fixtures are used.
|
|
7
|
+
#
|
|
8
|
+
# Fixture definitions run once during cache generation (before(:context)),
|
|
9
|
+
# then every test replays cached SQL without executing Ruby. This tracker
|
|
10
|
+
# uses FixtureKit's callback hooks to:
|
|
11
|
+
#
|
|
12
|
+
# 1. Connect the fixture file to all source files touched during generation
|
|
13
|
+
# 2. Record the fixture definition file when a test mounts a fixture
|
|
14
|
+
#
|
|
15
|
+
# Requires fixture_kit >= 0.14.0 (Event-based callbacks).
|
|
16
|
+
#
|
|
17
|
+
# Register via: coverage_map.use(FastCov::FixtureKitTracker)
|
|
18
|
+
class FixtureKitTracker < AbstractTracker
|
|
19
|
+
def install
|
|
20
|
+
gem "fixture_kit", ">= 0.14.0"
|
|
21
|
+
|
|
22
|
+
tracker = self
|
|
23
|
+
|
|
24
|
+
FixtureKit.configure do |config|
|
|
25
|
+
# When a fixture is about to be generated, start the coverage map
|
|
26
|
+
# to track what files the fixture definition touches.
|
|
27
|
+
# This runs in before(:context), before the formatter starts coverage.
|
|
28
|
+
config.on_cache_save do |_fixture|
|
|
29
|
+
tracker.coverage_map.start
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# After generation, stop coverage and connect the fixture file
|
|
33
|
+
# to everything it touched.
|
|
34
|
+
config.on_cache_saved do |fixture, _duration|
|
|
35
|
+
files = tracker.coverage_map.stop
|
|
36
|
+
files.each do |file|
|
|
37
|
+
tracker.coverage_map.connect(from: fixture.path, to: file)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# When a test mounts a fixture, record the fixture definition file
|
|
42
|
+
# and any parent fixture files in the chain.
|
|
43
|
+
config.on_cache_mount do |event|
|
|
44
|
+
tracker.class.record(event.path)
|
|
45
|
+
parent = event.fixture.parent
|
|
46
|
+
while parent
|
|
47
|
+
tracker.class.record(parent.definition.path)
|
|
48
|
+
parent = parent.parent
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/lib/fast_cov/version.rb
CHANGED
data/lib/fast_cov.rb
CHANGED
|
@@ -11,5 +11,6 @@ module FastCov
|
|
|
11
11
|
autoload :FileTracker, File.expand_path("fast_cov/trackers/file_tracker", __dir__)
|
|
12
12
|
autoload :FactoryBotTracker, File.expand_path("fast_cov/trackers/factory_bot_tracker", __dir__)
|
|
13
13
|
autoload :ConstGetTracker, File.expand_path("fast_cov/trackers/const_get_tracker", __dir__)
|
|
14
|
+
autoload :FixtureKitTracker, File.expand_path("fast_cov/trackers/fixture_kit_tracker", __dir__)
|
|
14
15
|
autoload :StaticMap, File.expand_path("fast_cov/static_map", __dir__)
|
|
15
16
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fast_cov
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ngan Pham
|
|
@@ -65,6 +65,34 @@ dependencies:
|
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
67
|
version: '6.0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: fixture_kit
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 0.14.0
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 0.14.0
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: sqlite3
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
type: :development
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
68
96
|
description: A high-performance C extension that tracks which Ruby source files are
|
|
69
97
|
executed during test runs, enabling test impact analysis.
|
|
70
98
|
executables: []
|
|
@@ -91,6 +119,7 @@ files:
|
|
|
91
119
|
- lib/fast_cov/trackers/const_get_tracker.rb
|
|
92
120
|
- lib/fast_cov/trackers/factory_bot_tracker.rb
|
|
93
121
|
- lib/fast_cov/trackers/file_tracker.rb
|
|
122
|
+
- lib/fast_cov/trackers/fixture_kit_tracker.rb
|
|
94
123
|
- lib/fast_cov/utils.rb
|
|
95
124
|
- lib/fast_cov/version.rb
|
|
96
125
|
homepage: https://github.com/Gusto/fast_cov
|