flutter 0.1.0.pre.2 → 0.1.0.pre.3
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 +15 -1
- data/README.md +3 -1
- data/lib/flutter/persistence.rb +51 -5
- data/lib/flutter/tracker.rb +47 -5
- data/lib/flutter/version.rb +1 -1
- metadata +16 -91
- data/integration_tests/minitest/grape_app/.gitignore +0 -67
- data/integration_tests/minitest/grape_app/.ruby-version +0 -1
- data/integration_tests/minitest/grape_app/Gemfile +0 -17
- data/integration_tests/minitest/grape_app/Gemfile.lock +0 -89
- data/integration_tests/minitest/grape_app/README.md +0 -2
- data/integration_tests/minitest/grape_app/Rakefile +0 -9
- data/integration_tests/minitest/grape_app/api/api.rb +0 -34
- data/integration_tests/minitest/grape_app/api/routes/api_helpers.rb +0 -12
- data/integration_tests/minitest/grape_app/api/routes/change_request/api.rb +0 -69
- data/integration_tests/minitest/grape_app/api/routes/change_request/response_entity.rb +0 -18
- data/integration_tests/minitest/grape_app/api/routes/event/api.rb +0 -121
- data/integration_tests/minitest/grape_app/api/routes/event/response_entity.rb +0 -41
- data/integration_tests/minitest/grape_app/api/routes/project/api.rb +0 -59
- data/integration_tests/minitest/grape_app/api/routes/project/response_entity.rb +0 -13
- data/integration_tests/minitest/grape_app/api/routes/property/api.rb +0 -78
- data/integration_tests/minitest/grape_app/api/routes/property/response_entity.rb +0 -31
- data/integration_tests/minitest/grape_app/api/routes/trackable_object/api.rb +0 -64
- data/integration_tests/minitest/grape_app/api/routes/trackable_object/response_entity.rb +0 -24
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/api.rb +0 -88
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/response_entity.rb +0 -17
- data/integration_tests/minitest/grape_app/api/routes/tracking_spec/spec_response.rb +0 -19
- data/integration_tests/minitest/grape_app/api/routes/user/api.rb +0 -22
- data/integration_tests/minitest/grape_app/api/routes/user/response_entity.rb +0 -12
- data/integration_tests/minitest/grape_app/app/app.rb +0 -30
- data/integration_tests/minitest/grape_app/app/change_request/endpoint.rb +0 -24
- data/integration_tests/minitest/grape_app/app/change_request/generate_system_changes.rb +0 -25
- data/integration_tests/minitest/grape_app/app/change_request/service.rb +0 -79
- data/integration_tests/minitest/grape_app/app/event/endpoint.rb +0 -78
- data/integration_tests/minitest/grape_app/app/event/service.rb +0 -68
- data/integration_tests/minitest/grape_app/app/event/validator.rb +0 -108
- data/integration_tests/minitest/grape_app/app/project/endpoint.rb +0 -24
- data/integration_tests/minitest/grape_app/app/project/service.rb +0 -42
- data/integration_tests/minitest/grape_app/app/property/endpoint.rb +0 -39
- data/integration_tests/minitest/grape_app/app/property/service.rb +0 -56
- data/integration_tests/minitest/grape_app/app/trackable_object/endpoint.rb +0 -38
- data/integration_tests/minitest/grape_app/app/trackable_object/service.rb +0 -49
- data/integration_tests/minitest/grape_app/app/trackable_object/validator.rb +0 -40
- data/integration_tests/minitest/grape_app/app/tracking_spec/endpoint.rb +0 -58
- data/integration_tests/minitest/grape_app/app/tracking_spec/expand_tracking_spec_events.rb +0 -91
- data/integration_tests/minitest/grape_app/app/tracking_spec/service.rb +0 -51
- data/integration_tests/minitest/grape_app/app/tracking_spec/validator.rb +0 -61
- data/integration_tests/minitest/grape_app/app/utils/errors/api_exceptions.rb +0 -10
- data/integration_tests/minitest/grape_app/app/utils/errors/service_exceptions.rb +0 -12
- data/integration_tests/minitest/grape_app/app/versioned_entity/entity.rb +0 -110
- data/integration_tests/minitest/grape_app/app/versioned_entity/service.rb +0 -47
- data/integration_tests/minitest/grape_app/app/versioned_entity/validator.rb +0 -61
- data/integration_tests/minitest/grape_app/app/versioned_entity_snapshot/entity.rb +0 -32
- data/integration_tests/minitest/grape_app/config/boot.rb +0 -9
- data/integration_tests/minitest/grape_app/config.ru +0 -3
- data/integration_tests/minitest/grape_app/db/proto/change_request.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/common/doc.rb +0 -86
- data/integration_tests/minitest/grape_app/db/proto/event.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/event_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/project.rb +0 -21
- data/integration_tests/minitest/grape_app/db/proto/property.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/property_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/trackable_object.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/trackable_object_snapshot.rb +0 -10
- data/integration_tests/minitest/grape_app/db/proto/tracking_spec.rb +0 -10
- data/integration_tests/minitest/grape_app/test/api/functional/event_test.rb +0 -186
- data/integration_tests/minitest/grape_app/test/api/functional/property_test.rb +0 -197
- data/integration_tests/minitest/grape_app/test/api/functional/trackable_object_test.rb +0 -134
- data/integration_tests/minitest/grape_app/test/api/functional/tracking_spec_test.rb +0 -56
- data/integration_tests/minitest/grape_app/test/api/functional/user_test.rb +0 -24
- data/integration_tests/minitest/grape_app/test/api/functional/versioned_entity_helper.rb +0 -157
- data/integration_tests/minitest/grape_app/test/fixtures/change_requests.rb +0 -83
- data/integration_tests/minitest/grape_app/test/fixtures/event_snapshots.rb +0 -105
- data/integration_tests/minitest/grape_app/test/fixtures/events.rb +0 -58
- data/integration_tests/minitest/grape_app/test/fixtures/properties.rb +0 -66
- data/integration_tests/minitest/grape_app/test/fixtures/property_snapshots.rb +0 -124
- data/integration_tests/minitest/grape_app/test/fixtures/sample_tracking_spec.json +0 -125
- data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects.rb +0 -58
- data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects_snapshots.rb +0 -61
- data/integration_tests/minitest/grape_app/test/fixtures/tracking_specs.rb +0 -22
- data/integration_tests/minitest/grape_app/test/test_helper.rb +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bdffa233de57141c16bbbd41684ca85b04208b32edeec97625662383f4e3e753
|
|
4
|
+
data.tar.gz: be3eb7f6bb1d0ffd8123ad4b8c2293ecdaf4c3979c75be8471542a2c26e1d771
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e301754a8492f5eaae1ba2388fe39c4d1fe2250b61bb7b792025d646e96719bd1df76a1ed8f669a821107e4e12f54b89c070671f5b86c29d24eae7bf2a3de3d7
|
|
7
|
+
data.tar.gz: 4e69808a87b89d50f3d7fcf964ae3a2d5ccc176294e7f610e00d5ffb712131384ff24bb64e630e1ef1f5df1afac7f2175c986d031b4ada8dba9af37df00c930d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
1
7
|
## [Unreleased]
|
|
8
|
+
## [0.1.0.pre.3]
|
|
9
|
+
### Added
|
|
10
|
+
- Improved documentation for Tracker
|
|
11
|
+
- Improved documentation for Persistance classes
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Pinned dependencies to known working minimum versions
|
|
15
|
+
|
|
2
16
|
## [0.1.0.pre.2]
|
|
3
|
-
|
|
17
|
+
### Added
|
|
4
18
|
- Minitest integration
|
|
5
19
|
- RSpec integration
|
|
6
20
|
|
data/README.md
CHANGED
|
@@ -119,7 +119,9 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
|
119
119
|
|
|
120
120
|
This project uses [overcommit](https://github.com/sds/overcommit) to enforce standards. Enable the precommit hooks in your local checkout by running: `overcommit --sign`
|
|
121
121
|
|
|
122
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number
|
|
122
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number by running `gem bump`,
|
|
123
|
+
then move the `Unreleased` entries in the [CHANGELOG](./CHANGELOG.md) to the new version and commit that.
|
|
124
|
+
Finally tag and release the gem with `gem tag` and `gem release`
|
|
123
125
|
|
|
124
126
|
## Contributing
|
|
125
127
|
|
data/lib/flutter/persistence.rb
CHANGED
|
@@ -4,40 +4,68 @@ require "fileutils"
|
|
|
4
4
|
require "set"
|
|
5
5
|
module Flutter
|
|
6
6
|
module Persistence
|
|
7
|
+
# The abstract base storage.
|
|
8
|
+
#
|
|
9
|
+
# To implement a custom storage, override the following methods:
|
|
10
|
+
# * {#test_mapping}
|
|
11
|
+
# * {#source_mapping}
|
|
12
|
+
# * {#update_test_mapping!}
|
|
13
|
+
# * {#update_source_mapping!}
|
|
14
|
+
# * {#load!}
|
|
15
|
+
# * {#persist!}
|
|
16
|
+
# * {#clear!}
|
|
17
|
+
#
|
|
18
|
+
# @abstract Override this class to implement a custom storage
|
|
7
19
|
class AbstractStorage
|
|
8
20
|
def initialize
|
|
9
21
|
load!
|
|
10
22
|
end
|
|
11
23
|
|
|
12
24
|
# :nocov:
|
|
25
|
+
|
|
26
|
+
# Mapping of +test_id -> source file -> callable_id+
|
|
27
|
+
# @return [Hash<String, Hash<String, Set<String>>>]
|
|
13
28
|
def test_mapping
|
|
14
29
|
raise NotImplementedError
|
|
15
30
|
end
|
|
16
31
|
|
|
32
|
+
# Mapping of +source file -> callable_id -> signature+
|
|
33
|
+
# @return [Hash<String, Hash<String, String>>] mapping
|
|
17
34
|
def source_mapping
|
|
18
35
|
raise NotImplementedError
|
|
19
36
|
end
|
|
20
37
|
|
|
38
|
+
##
|
|
39
|
+
# Update {#test_mapping}
|
|
40
|
+
#
|
|
41
|
+
# @param [Hash<String, Hash<String, String>>] mapping
|
|
21
42
|
def update_test_mapping!(mapping)
|
|
22
43
|
raise NotImplementedError
|
|
23
44
|
end
|
|
24
45
|
|
|
46
|
+
##
|
|
47
|
+
# Update {#source_mapping}
|
|
48
|
+
#
|
|
49
|
+
# @param [Hash<String, Hash<String, String>>] mapping
|
|
25
50
|
def update_source_mapping!(mapping)
|
|
26
51
|
raise NotImplementedError
|
|
27
52
|
end
|
|
28
53
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def to_s
|
|
54
|
+
# Save the state of test & source mapping to the underlying
|
|
55
|
+
# storage
|
|
56
|
+
# @return [void]
|
|
57
|
+
def persist!
|
|
34
58
|
raise NotImplementedError
|
|
35
59
|
end
|
|
36
60
|
|
|
61
|
+
# Clear any saved state in the underlying storage
|
|
62
|
+
# @return [void]
|
|
37
63
|
def clear!
|
|
38
64
|
raise NotImplementedError
|
|
39
65
|
end
|
|
40
66
|
|
|
67
|
+
# If the storage was already persisted load the current state
|
|
68
|
+
# @return [void]
|
|
41
69
|
def load!
|
|
42
70
|
raise NotImplementedError
|
|
43
71
|
end
|
|
@@ -48,6 +76,8 @@ module Flutter
|
|
|
48
76
|
require "yaml"
|
|
49
77
|
# ruby >= 3.1 requires this
|
|
50
78
|
YAML_LOAD_OPTS = RUBY_VERSION > "3.1" ? { permitted_classes: [Hash, Set, Symbol] } : {}
|
|
79
|
+
|
|
80
|
+
# @param [String] path The directory to store the +state.yml+ file
|
|
51
81
|
def initialize(path:)
|
|
52
82
|
@path = File.absolute_path(path)
|
|
53
83
|
@full_path = File.join(@path, "state.yml")
|
|
@@ -55,6 +85,7 @@ module Flutter
|
|
|
55
85
|
super()
|
|
56
86
|
end
|
|
57
87
|
|
|
88
|
+
# (see AbstractStorage#load!)
|
|
58
89
|
def load!
|
|
59
90
|
if File.exist?(@full_path)
|
|
60
91
|
persisted = YAML.load(File.read(@full_path), **YAML_LOAD_OPTS)
|
|
@@ -62,27 +93,33 @@ module Flutter
|
|
|
62
93
|
end
|
|
63
94
|
end
|
|
64
95
|
|
|
96
|
+
# (see AbstractStorage#test_mapping)
|
|
65
97
|
def test_mapping
|
|
66
98
|
@state.fetch(:test_mapping) { @state[:test_mapping] = {} }
|
|
67
99
|
end
|
|
68
100
|
|
|
101
|
+
# (see AbstractStorage#source_mapping)
|
|
69
102
|
def source_mapping
|
|
70
103
|
@state.fetch(:source_mapping) { @state[:source_mapping] = {} }
|
|
71
104
|
end
|
|
72
105
|
|
|
106
|
+
# (see AbstractStorage#update_test_mapping!)
|
|
73
107
|
def update_test_mapping!(mapping)
|
|
74
108
|
test_mapping.merge!(mapping)
|
|
75
109
|
end
|
|
76
110
|
|
|
111
|
+
# (see AbstractStorage#update_source_mapping!)
|
|
77
112
|
def update_source_mapping!(mapping)
|
|
78
113
|
source_mapping.merge!(mapping)
|
|
79
114
|
end
|
|
80
115
|
|
|
116
|
+
# (see AbstractStorage#clear!)
|
|
81
117
|
def clear!
|
|
82
118
|
FileUtils.rm(@full_path) if File.exist?(@full_path)
|
|
83
119
|
@state.clear
|
|
84
120
|
end
|
|
85
121
|
|
|
122
|
+
# (see AbstractStorage#persist!)
|
|
86
123
|
def persist!
|
|
87
124
|
FileUtils.mkdir_p(@path) unless File.exist?(@path)
|
|
88
125
|
File.open(@full_path, "w") { |file| file.write(@state.to_yaml) }
|
|
@@ -95,6 +132,7 @@ module Flutter
|
|
|
95
132
|
|
|
96
133
|
class Marshal < AbstractStorage
|
|
97
134
|
require "pstore"
|
|
135
|
+
# @param [String] path The directory to store the marshaled state file +state.pstore+
|
|
98
136
|
def initialize(path:)
|
|
99
137
|
@path = File.absolute_path(path)
|
|
100
138
|
FileUtils.mkdir_p(@path) unless File.exist?(@path)
|
|
@@ -103,6 +141,7 @@ module Flutter
|
|
|
103
141
|
super()
|
|
104
142
|
end
|
|
105
143
|
|
|
144
|
+
# (see AbstractStorage#load!)
|
|
106
145
|
def load!
|
|
107
146
|
@state = PStore.new(@full_path)
|
|
108
147
|
@state.transaction do
|
|
@@ -111,18 +150,21 @@ module Flutter
|
|
|
111
150
|
end
|
|
112
151
|
end
|
|
113
152
|
|
|
153
|
+
# (see AbstractStorage#test_mapping)
|
|
114
154
|
def test_mapping
|
|
115
155
|
@state.transaction do
|
|
116
156
|
return @state[:test_mapping]
|
|
117
157
|
end
|
|
118
158
|
end
|
|
119
159
|
|
|
160
|
+
# (see AbstractStorage#source_mapping)
|
|
120
161
|
def source_mapping
|
|
121
162
|
@state.transaction do
|
|
122
163
|
return @state[:source_mapping]
|
|
123
164
|
end
|
|
124
165
|
end
|
|
125
166
|
|
|
167
|
+
# (see AbstractStorage#update_test_mapping!)
|
|
126
168
|
def update_test_mapping!(mapping)
|
|
127
169
|
@state.transaction do
|
|
128
170
|
@state[:test_mapping] ||= {}
|
|
@@ -130,6 +172,7 @@ module Flutter
|
|
|
130
172
|
end
|
|
131
173
|
end
|
|
132
174
|
|
|
175
|
+
# (see AbstractStorage#update_source_mapping!)
|
|
133
176
|
def update_source_mapping!(mapping)
|
|
134
177
|
@state.transaction do
|
|
135
178
|
@state[:source_mapping] ||= {}
|
|
@@ -137,13 +180,16 @@ module Flutter
|
|
|
137
180
|
end
|
|
138
181
|
end
|
|
139
182
|
|
|
183
|
+
# (see AbstractStorage#clear!)
|
|
140
184
|
def clear!
|
|
141
185
|
FileUtils.rm(@full_path) if File.exist?(@full_path)
|
|
142
186
|
end
|
|
143
187
|
|
|
188
|
+
# (see AbstractStorage#persist!)
|
|
144
189
|
def persist!
|
|
145
190
|
end
|
|
146
191
|
|
|
192
|
+
# @return [String]
|
|
147
193
|
def to_s
|
|
148
194
|
"state: #{@full_path}"
|
|
149
195
|
end
|
data/lib/flutter/tracker.rb
CHANGED
|
@@ -7,9 +7,20 @@ require_relative "parser"
|
|
|
7
7
|
require "pry"
|
|
8
8
|
|
|
9
9
|
module Flutter
|
|
10
|
+
# @attr [Hash<String, Hash<String, Set<String>>>] test_mapping Mapping of tests to
|
|
11
|
+
# files -> callable_ids
|
|
12
|
+
# @attr [Hash<String, Hash<String, String>>] source_mapping Mapping of
|
|
13
|
+
# source files -> callable_id -> signature
|
|
14
|
+
# @attr [Persistence::AbstractStorage] storage the storage instance used for
|
|
15
|
+
# persisting the state of the tracker
|
|
10
16
|
class Tracker
|
|
11
|
-
attr_reader :test_mapping, :source_mapping
|
|
17
|
+
attr_reader :test_mapping, :source_mapping, :storage
|
|
12
18
|
|
|
19
|
+
# @param [Array<String>] sources
|
|
20
|
+
# @param [Array<String>] exclusions
|
|
21
|
+
# @param [Class<Flutter::Persistence::AbstractStorage>] storage_class
|
|
22
|
+
# @param [Hash] storage_options Additionally options that should be passed
|
|
23
|
+
# to the +storage_class+ constructor
|
|
13
24
|
def initialize(sources, exclusions, storage_class, storage_options)
|
|
14
25
|
@sources = sources.map { |s| File.absolute_path(s) }
|
|
15
26
|
@exclusions = exclusions.map { |s| File.absolute_path(s) }
|
|
@@ -23,8 +34,8 @@ module Flutter
|
|
|
23
34
|
@tracked_files = {}
|
|
24
35
|
end
|
|
25
36
|
|
|
26
|
-
#
|
|
27
|
-
#
|
|
37
|
+
# Starts tracking calls made by +test+
|
|
38
|
+
# @param [String] test A unique identifier for the test
|
|
28
39
|
def start(test)
|
|
29
40
|
# Delete test from the in-memory mapping to allow each new test run
|
|
30
41
|
# to store all the functions that the test calls into
|
|
@@ -35,10 +46,24 @@ module Flutter
|
|
|
35
46
|
@current_tracepoint&.enable
|
|
36
47
|
end
|
|
37
48
|
|
|
49
|
+
# End tracking (should be called after a call to {#start})
|
|
38
50
|
def stop
|
|
39
51
|
@current_tracepoint&.disable
|
|
40
52
|
end
|
|
41
53
|
|
|
54
|
+
##
|
|
55
|
+
# Decides if a test should be skipped based on *all* of the following
|
|
56
|
+
# criteria being met:
|
|
57
|
+
#
|
|
58
|
+
# 1. Test was seen before
|
|
59
|
+
# 2. Test sources have not changed since the last time it was executed
|
|
60
|
+
# 3. All the callables triggered within the scope of this test have no
|
|
61
|
+
# changes in their source since the last time this test was executed
|
|
62
|
+
#
|
|
63
|
+
# @param [String] test A unique identifier for the test
|
|
64
|
+
# @param [String] test_location The absolute path to the source file containing the test
|
|
65
|
+
# @param [String] test_source The source code of the test itself
|
|
66
|
+
# @return [TrueClass, FalseClass] If the test should be skipped
|
|
42
67
|
def skip?(test, test_location, test_source)
|
|
43
68
|
test_location_rel = relative_path(test_location)
|
|
44
69
|
@test_source_mapping.fetch(test_location_rel) do
|
|
@@ -58,12 +83,20 @@ module Flutter
|
|
|
58
83
|
end.all?
|
|
59
84
|
end
|
|
60
85
|
|
|
86
|
+
##
|
|
87
|
+
# Persist the state of the tracker to the storage
|
|
88
|
+
# specified by {#storage}
|
|
89
|
+
# @return [void]
|
|
61
90
|
def persist!
|
|
62
91
|
@storage.update_test_mapping!(@test_mapping)
|
|
63
92
|
@storage.update_source_mapping!(generate_source_mapping)
|
|
64
93
|
@storage.persist!
|
|
65
94
|
end
|
|
66
95
|
|
|
96
|
+
##
|
|
97
|
+
# Reset the state of the tracker and the storage
|
|
98
|
+
# that it was configured with
|
|
99
|
+
# @return [void]
|
|
67
100
|
def reset!
|
|
68
101
|
@storage.clear!
|
|
69
102
|
@source_mapping.clear
|
|
@@ -74,8 +107,6 @@ module Flutter
|
|
|
74
107
|
@storage.to_s
|
|
75
108
|
end
|
|
76
109
|
|
|
77
|
-
attr_reader :mapping
|
|
78
|
-
|
|
79
110
|
private
|
|
80
111
|
|
|
81
112
|
def hit!(test, tracepoint)
|
|
@@ -116,6 +147,13 @@ module Flutter
|
|
|
116
147
|
end
|
|
117
148
|
end
|
|
118
149
|
|
|
150
|
+
##
|
|
151
|
+
# Check if a file pair should be tracked or not based on the
|
|
152
|
+
# +sources+ and +exclusions+ lists provided when initializing
|
|
153
|
+
# the instance
|
|
154
|
+
#
|
|
155
|
+
# @param [String] file
|
|
156
|
+
# @param [Symbol] _method
|
|
119
157
|
def tracked?(file, _method)
|
|
120
158
|
@tracked_files.fetch(file) do
|
|
121
159
|
@sources.any?(->(source) { File.fnmatch?(source, file) }) && !@exclusions.any?(->(exclusion) {
|
|
@@ -124,6 +162,10 @@ module Flutter
|
|
|
124
162
|
end
|
|
125
163
|
end
|
|
126
164
|
|
|
165
|
+
##
|
|
166
|
+
# Generates a mapping of
|
|
167
|
+
#
|
|
168
|
+
# @return [Hash<String, Hash<String, Hash<String, String>>>]
|
|
127
169
|
def generate_source_mapping
|
|
128
170
|
@test_mapping.map { |_k, v| v.keys }.flatten.uniq.map do |file|
|
|
129
171
|
[file, @current_source_mapping.fetch(file) { Flutter::Parser.new(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.1.0.pre.
|
|
4
|
+
version: 0.1.0.pre.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ali-Akber Saifee
|
|
@@ -9,50 +9,50 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2022-09-
|
|
12
|
+
date: 2022-09-30 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: deep_merge
|
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
requirements:
|
|
18
|
-
- - "
|
|
18
|
+
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: '
|
|
20
|
+
version: '1.2'
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
|
-
- - "
|
|
25
|
+
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: '
|
|
27
|
+
version: '1.2'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: dry-configurable
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
|
-
- - "
|
|
32
|
+
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '0'
|
|
34
|
+
version: '0.15'
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
|
-
- - "
|
|
39
|
+
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '0'
|
|
41
|
+
version: '0.15'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: parser
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
|
-
- - "
|
|
46
|
+
- - "~>"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: '
|
|
48
|
+
version: '3.1'
|
|
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: '3.1'
|
|
56
56
|
description: "Flutter plugs in to your RSpec or Minitest test suites\n and helps
|
|
57
57
|
you run only the tests that exercise the code you have changed since the last run\n
|
|
58
58
|
\ "
|
|
@@ -73,81 +73,6 @@ files:
|
|
|
73
73
|
- README.md
|
|
74
74
|
- Rakefile
|
|
75
75
|
- TODO.md
|
|
76
|
-
- integration_tests/minitest/grape_app/.gitignore
|
|
77
|
-
- integration_tests/minitest/grape_app/.ruby-version
|
|
78
|
-
- integration_tests/minitest/grape_app/Gemfile
|
|
79
|
-
- integration_tests/minitest/grape_app/Gemfile.lock
|
|
80
|
-
- integration_tests/minitest/grape_app/README.md
|
|
81
|
-
- integration_tests/minitest/grape_app/Rakefile
|
|
82
|
-
- integration_tests/minitest/grape_app/api/api.rb
|
|
83
|
-
- integration_tests/minitest/grape_app/api/routes/api_helpers.rb
|
|
84
|
-
- integration_tests/minitest/grape_app/api/routes/change_request/api.rb
|
|
85
|
-
- integration_tests/minitest/grape_app/api/routes/change_request/response_entity.rb
|
|
86
|
-
- integration_tests/minitest/grape_app/api/routes/event/api.rb
|
|
87
|
-
- integration_tests/minitest/grape_app/api/routes/event/response_entity.rb
|
|
88
|
-
- integration_tests/minitest/grape_app/api/routes/project/api.rb
|
|
89
|
-
- integration_tests/minitest/grape_app/api/routes/project/response_entity.rb
|
|
90
|
-
- integration_tests/minitest/grape_app/api/routes/property/api.rb
|
|
91
|
-
- integration_tests/minitest/grape_app/api/routes/property/response_entity.rb
|
|
92
|
-
- integration_tests/minitest/grape_app/api/routes/trackable_object/api.rb
|
|
93
|
-
- integration_tests/minitest/grape_app/api/routes/trackable_object/response_entity.rb
|
|
94
|
-
- integration_tests/minitest/grape_app/api/routes/tracking_spec/api.rb
|
|
95
|
-
- integration_tests/minitest/grape_app/api/routes/tracking_spec/response_entity.rb
|
|
96
|
-
- integration_tests/minitest/grape_app/api/routes/tracking_spec/spec_response.rb
|
|
97
|
-
- integration_tests/minitest/grape_app/api/routes/user/api.rb
|
|
98
|
-
- integration_tests/minitest/grape_app/api/routes/user/response_entity.rb
|
|
99
|
-
- integration_tests/minitest/grape_app/app/app.rb
|
|
100
|
-
- integration_tests/minitest/grape_app/app/change_request/endpoint.rb
|
|
101
|
-
- integration_tests/minitest/grape_app/app/change_request/generate_system_changes.rb
|
|
102
|
-
- integration_tests/minitest/grape_app/app/change_request/service.rb
|
|
103
|
-
- integration_tests/minitest/grape_app/app/event/endpoint.rb
|
|
104
|
-
- integration_tests/minitest/grape_app/app/event/service.rb
|
|
105
|
-
- integration_tests/minitest/grape_app/app/event/validator.rb
|
|
106
|
-
- integration_tests/minitest/grape_app/app/project/endpoint.rb
|
|
107
|
-
- integration_tests/minitest/grape_app/app/project/service.rb
|
|
108
|
-
- integration_tests/minitest/grape_app/app/property/endpoint.rb
|
|
109
|
-
- integration_tests/minitest/grape_app/app/property/service.rb
|
|
110
|
-
- integration_tests/minitest/grape_app/app/trackable_object/endpoint.rb
|
|
111
|
-
- integration_tests/minitest/grape_app/app/trackable_object/service.rb
|
|
112
|
-
- integration_tests/minitest/grape_app/app/trackable_object/validator.rb
|
|
113
|
-
- integration_tests/minitest/grape_app/app/tracking_spec/endpoint.rb
|
|
114
|
-
- integration_tests/minitest/grape_app/app/tracking_spec/expand_tracking_spec_events.rb
|
|
115
|
-
- integration_tests/minitest/grape_app/app/tracking_spec/service.rb
|
|
116
|
-
- integration_tests/minitest/grape_app/app/tracking_spec/validator.rb
|
|
117
|
-
- integration_tests/minitest/grape_app/app/utils/errors/api_exceptions.rb
|
|
118
|
-
- integration_tests/minitest/grape_app/app/utils/errors/service_exceptions.rb
|
|
119
|
-
- integration_tests/minitest/grape_app/app/versioned_entity/entity.rb
|
|
120
|
-
- integration_tests/minitest/grape_app/app/versioned_entity/service.rb
|
|
121
|
-
- integration_tests/minitest/grape_app/app/versioned_entity/validator.rb
|
|
122
|
-
- integration_tests/minitest/grape_app/app/versioned_entity_snapshot/entity.rb
|
|
123
|
-
- integration_tests/minitest/grape_app/config.ru
|
|
124
|
-
- integration_tests/minitest/grape_app/config/boot.rb
|
|
125
|
-
- integration_tests/minitest/grape_app/db/proto/change_request.rb
|
|
126
|
-
- integration_tests/minitest/grape_app/db/proto/common/doc.rb
|
|
127
|
-
- integration_tests/minitest/grape_app/db/proto/event.rb
|
|
128
|
-
- integration_tests/minitest/grape_app/db/proto/event_snapshot.rb
|
|
129
|
-
- integration_tests/minitest/grape_app/db/proto/project.rb
|
|
130
|
-
- integration_tests/minitest/grape_app/db/proto/property.rb
|
|
131
|
-
- integration_tests/minitest/grape_app/db/proto/property_snapshot.rb
|
|
132
|
-
- integration_tests/minitest/grape_app/db/proto/trackable_object.rb
|
|
133
|
-
- integration_tests/minitest/grape_app/db/proto/trackable_object_snapshot.rb
|
|
134
|
-
- integration_tests/minitest/grape_app/db/proto/tracking_spec.rb
|
|
135
|
-
- integration_tests/minitest/grape_app/test/api/functional/event_test.rb
|
|
136
|
-
- integration_tests/minitest/grape_app/test/api/functional/property_test.rb
|
|
137
|
-
- integration_tests/minitest/grape_app/test/api/functional/trackable_object_test.rb
|
|
138
|
-
- integration_tests/minitest/grape_app/test/api/functional/tracking_spec_test.rb
|
|
139
|
-
- integration_tests/minitest/grape_app/test/api/functional/user_test.rb
|
|
140
|
-
- integration_tests/minitest/grape_app/test/api/functional/versioned_entity_helper.rb
|
|
141
|
-
- integration_tests/minitest/grape_app/test/fixtures/change_requests.rb
|
|
142
|
-
- integration_tests/minitest/grape_app/test/fixtures/event_snapshots.rb
|
|
143
|
-
- integration_tests/minitest/grape_app/test/fixtures/events.rb
|
|
144
|
-
- integration_tests/minitest/grape_app/test/fixtures/properties.rb
|
|
145
|
-
- integration_tests/minitest/grape_app/test/fixtures/property_snapshots.rb
|
|
146
|
-
- integration_tests/minitest/grape_app/test/fixtures/sample_tracking_spec.json
|
|
147
|
-
- integration_tests/minitest/grape_app/test/fixtures/trackable_objects.rb
|
|
148
|
-
- integration_tests/minitest/grape_app/test/fixtures/trackable_objects_snapshots.rb
|
|
149
|
-
- integration_tests/minitest/grape_app/test/fixtures/tracking_specs.rb
|
|
150
|
-
- integration_tests/minitest/grape_app/test/test_helper.rb
|
|
151
76
|
- lib/flutter.rb
|
|
152
77
|
- lib/flutter/config.rb
|
|
153
78
|
- lib/flutter/minitest.rb
|
|
@@ -173,14 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
173
98
|
requirements:
|
|
174
99
|
- - ">="
|
|
175
100
|
- !ruby/object:Gem::Version
|
|
176
|
-
version: 2.
|
|
101
|
+
version: 2.7.0
|
|
177
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
103
|
requirements:
|
|
179
104
|
- - ">"
|
|
180
105
|
- !ruby/object:Gem::Version
|
|
181
106
|
version: 1.3.1
|
|
182
107
|
requirements: []
|
|
183
|
-
rubygems_version: 3.
|
|
108
|
+
rubygems_version: 3.2.33
|
|
184
109
|
signing_key:
|
|
185
110
|
specification_version: 4
|
|
186
111
|
summary: Intelligent test selection based on incremental code changes
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
*.gem
|
|
2
|
-
*.rbc
|
|
3
|
-
/.config
|
|
4
|
-
/coverage/
|
|
5
|
-
/InstalledFiles
|
|
6
|
-
/pkg/
|
|
7
|
-
/spec/reports/
|
|
8
|
-
/spec/examples.txt
|
|
9
|
-
/test/tmp/
|
|
10
|
-
/test/version_tmp/
|
|
11
|
-
/tmp/
|
|
12
|
-
|
|
13
|
-
# Used by dotenv library to load environment variables.
|
|
14
|
-
# .env
|
|
15
|
-
|
|
16
|
-
# Ignore Byebug command history file.
|
|
17
|
-
.byebug_history
|
|
18
|
-
|
|
19
|
-
## Specific to RubyMotion:
|
|
20
|
-
.dat*
|
|
21
|
-
.repl_history
|
|
22
|
-
build/
|
|
23
|
-
*.bridgesupport
|
|
24
|
-
build-iPhoneOS/
|
|
25
|
-
build-iPhoneSimulator/
|
|
26
|
-
|
|
27
|
-
## Specific to RubyMotion (use of CocoaPods):
|
|
28
|
-
#
|
|
29
|
-
# We recommend against adding the Pods directory to your .gitignore. However
|
|
30
|
-
# you should judge for yourself, the pros and cons are mentioned at:
|
|
31
|
-
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
|
32
|
-
#
|
|
33
|
-
# vendor/Pods/
|
|
34
|
-
|
|
35
|
-
## Documentation cache and generated files:
|
|
36
|
-
/.yardoc/
|
|
37
|
-
/_yardoc/
|
|
38
|
-
/doc/
|
|
39
|
-
/rdoc/
|
|
40
|
-
|
|
41
|
-
## Environment normalization:
|
|
42
|
-
/.bundle/
|
|
43
|
-
/vendor/bundle
|
|
44
|
-
/lib/bundler/man/
|
|
45
|
-
|
|
46
|
-
# for a library or gem, you might want to ignore these files since the code is
|
|
47
|
-
# intended to run in multiple environments; otherwise, check them in:
|
|
48
|
-
# Gemfile.lock
|
|
49
|
-
# .ruby-version
|
|
50
|
-
# .ruby-gemset
|
|
51
|
-
|
|
52
|
-
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
|
53
|
-
.rvmrc
|
|
54
|
-
|
|
55
|
-
# Used by RuboCop. Remote config files pulled in from inherit_from directive.
|
|
56
|
-
# .rubocop-https?--*
|
|
57
|
-
|
|
58
|
-
### VisualStudioCode ###
|
|
59
|
-
.vscode/
|
|
60
|
-
|
|
61
|
-
### VisualStudioCode Patch ###
|
|
62
|
-
# Ignore all local history of files
|
|
63
|
-
.history
|
|
64
|
-
|
|
65
|
-
.idea/
|
|
66
|
-
|
|
67
|
-
# End of https://www.gitignore.io/api/visualstudiocode
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.7.1
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
source 'https://rubygems.org'
|
|
3
|
-
gem 'dotenv'
|
|
4
|
-
# api definitions
|
|
5
|
-
gem 'grape'
|
|
6
|
-
gem 'grape-entity'
|
|
7
|
-
gem 'grape-swagger'
|
|
8
|
-
# web server
|
|
9
|
-
gem 'puma'
|
|
10
|
-
# task runner for ruby
|
|
11
|
-
gem 'rake'
|
|
12
|
-
gem 'flutter', path: '../../../'
|
|
13
|
-
|
|
14
|
-
group :development, :test do
|
|
15
|
-
gem 'minitest' #, require: false
|
|
16
|
-
gem 'rack-test', require: 'rack/test'
|
|
17
|
-
end
|