flutter 0.2.6 → 0.3.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 +7 -0
- data/lib/flutter/minitest.rb +1 -1
- data/lib/flutter/parser.rb +1 -1
- data/lib/flutter/persistence.rb +5 -4
- data/lib/flutter/rspec.rb +1 -1
- data/lib/flutter/tracker.rb +15 -12
- data/lib/flutter/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 892688c26b88bc96c4c37c4ea72d7ef54342dc242c7741a0241250a96e4d484e
|
4
|
+
data.tar.gz: 4700cb7256bf15cc3b1238607eb37c37b96d93828413ed793733bf3374b39730
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c8f5fbb1e054bbb041002c25b9ff4545b83938320be7af311df4cabda4829c105778153e95b6a9ced5861602a24ad7266f2d7900abcd813a471ba70128238f0
|
7
|
+
data.tar.gz: 13c7c7818265fcfa0b4738bd51e179ab787dc242dbb6213234a635472a996b10db7c983188f837ee4ce76675d17a9036592eee5a14b7c7ff629ead075f4004e6
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
7
|
## Unreleased
|
8
|
+
## 0.3.0 - 2022-10-16
|
9
|
+
### Changed
|
10
|
+
- Switch from `pry` to `method_source` as the actual dependency for inspecting method sources for generating signatures
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
- Ensure partial test runs don't clobber source mappings for previously run test cases
|
14
|
+
|
8
15
|
## 0.2.6 - 2022-10-14
|
9
16
|
### Added
|
10
17
|
- Backward compatibilty hack for default values in `dry-configurable < 0.13`
|
data/lib/flutter/minitest.rb
CHANGED
data/lib/flutter/parser.rb
CHANGED
data/lib/flutter/persistence.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "deep_merge"
|
3
4
|
require "fileutils"
|
4
5
|
require "set"
|
5
6
|
module Flutter
|
@@ -122,8 +123,8 @@ module Flutter
|
|
122
123
|
|
123
124
|
# (see AbstractStorage#update_source_mapping!)
|
124
125
|
def update_source_mapping!(mapping, hints)
|
125
|
-
source_mapping.
|
126
|
-
source_hints.
|
126
|
+
source_mapping.deep_merge!(mapping)
|
127
|
+
source_hints.deep_merge!(hints)
|
127
128
|
end
|
128
129
|
|
129
130
|
# (see AbstractStorage#clear!)
|
@@ -197,8 +198,8 @@ module Flutter
|
|
197
198
|
@state.transaction do
|
198
199
|
@state[:source_mapping] ||= {}
|
199
200
|
@state[:source_hints] ||= {}
|
200
|
-
@state[:source_mapping].
|
201
|
-
@state[:source_hints].
|
201
|
+
@state[:source_mapping].deep_merge!(mapping)
|
202
|
+
@state[:source_hints].deep_merge!(hints)
|
202
203
|
end
|
203
204
|
end
|
204
205
|
|
data/lib/flutter/rspec.rb
CHANGED
data/lib/flutter/tracker.rb
CHANGED
@@ -33,6 +33,7 @@ module Flutter
|
|
33
33
|
@method_prefixes = {}
|
34
34
|
@tracked_files = {}
|
35
35
|
@source_hints = @storage.source_hints
|
36
|
+
@tracker_pwd = Dir.pwd
|
36
37
|
end
|
37
38
|
|
38
39
|
# Starts tracking calls made by +test+
|
@@ -73,12 +74,14 @@ module Flutter
|
|
73
74
|
@test_source_mapping.fetch(test_location_rel) do
|
74
75
|
@test_source_mapping[test_location_rel] = {}
|
75
76
|
end[test] = Digest::SHA1.hexdigest(test_source)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
test_seen = @test_mapping.key?(test)
|
78
|
+
|
79
|
+
test_source_unchanged = @test_source_mapping[test_location_rel][test] == @source_mapping.dig(
|
80
|
+
test_location_rel, test
|
81
|
+
)
|
82
|
+
return unless test_seen && test_source_unchanged
|
80
83
|
|
81
|
-
sources = @test_mapping[test]
|
84
|
+
sources = @test_mapping[test] || {}
|
82
85
|
sources.map do |file, methods|
|
83
86
|
@current_source_mapping[file] ||= Flutter::Parser.new(file, @source_hints[file]).signatures
|
84
87
|
methods.map do |method|
|
@@ -119,18 +122,18 @@ module Flutter
|
|
119
122
|
|
120
123
|
if tracked?(tracepoint.path, tracepoint.callee_id)
|
121
124
|
rel_path = relative_path(tracepoint.path)
|
122
|
-
class_name,
|
125
|
+
class_name, separator = method_prefix(tracepoint.defined_class).values_at(:class, :separator)
|
123
126
|
@source_hints.fetch(rel_path) { @source_hints[rel_path] = Set.new } << class_name if class_name
|
124
127
|
@test_mapping.fetch(test) do
|
125
128
|
@test_mapping[test] = {}
|
126
129
|
end.fetch(rel_path) { @test_mapping[test][rel_path] = Set.new } << (
|
127
|
-
class_name ? "#{class_name}#{
|
130
|
+
class_name ? "#{class_name}#{separator}#{tracepoint.callee_id}" : tracepoint.callee_id
|
128
131
|
)
|
129
132
|
end
|
130
133
|
end
|
131
134
|
|
132
135
|
def relative_path(file)
|
133
|
-
@path_mapping[file] ||= Pathname.new(file).relative_path_from(
|
136
|
+
@path_mapping[file] ||= Pathname.new(file).relative_path_from(@tracker_pwd).to_s
|
134
137
|
end
|
135
138
|
|
136
139
|
##
|
@@ -140,7 +143,7 @@ module Flutter
|
|
140
143
|
# @return [Hash<Symbol, String>]
|
141
144
|
#
|
142
145
|
def method_prefix(tracepoint_class)
|
143
|
-
return { class: nil,
|
146
|
+
return { class: nil, separator: nil } unless tracepoint_class
|
144
147
|
|
145
148
|
@method_prefixes[tracepoint_class] ||= if tracepoint_class.to_s.start_with?("#<Class")
|
146
149
|
if tracepoint_class.superclass.name && tracepoint_class.to_s.include?(tracepoint_class.superclass.name)
|
@@ -149,7 +152,7 @@ module Flutter
|
|
149
152
|
{ class: tracepoint_class.to_s.sub(/#<Class:(.*?)(\(.*?\))?>/, '\1'), separator: "::" }
|
150
153
|
end
|
151
154
|
else
|
152
|
-
{ class: tracepoint_class.name,
|
155
|
+
{ class: tracepoint_class.name, separator: ":" }
|
153
156
|
end
|
154
157
|
end
|
155
158
|
|
@@ -169,9 +172,9 @@ module Flutter
|
|
169
172
|
end
|
170
173
|
|
171
174
|
##
|
172
|
-
# Generates a mapping of
|
175
|
+
# Generates a mapping of source files to method=>signatures
|
173
176
|
#
|
174
|
-
# @return [Hash<String, Hash<String,
|
177
|
+
# @return [Hash<String, Hash<String, String>>]
|
175
178
|
def generate_source_mapping
|
176
179
|
@test_mapping.map { |_k, v| v.keys }.flatten.uniq.map do |file|
|
177
180
|
[file, @current_source_mapping.fetch(file) { Flutter::Parser.new(file, @source_hints[file] || []).signatures }]
|
data/lib/flutter/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flutter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ali-Akber Saifee
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-10-
|
12
|
+
date: 2022-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: deep_merge
|
@@ -40,33 +40,33 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0.11'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: method_source
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '1.0'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '1.0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: parser
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '3.1'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '3.1'
|
70
70
|
description: "Plug in for RSpec & Minitest test suites\n to run only the tests that
|
71
71
|
exercise the code that has changed\n "
|
72
72
|
email:
|