mutant 0.11.1 → 0.11.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 +4 -4
- data/lib/mutant/expression/descendants.rb +19 -0
- data/lib/mutant/matcher/chain.rb +1 -1
- data/lib/mutant/matcher/descendants.rb +26 -0
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant/world.rb +13 -0
- data/lib/mutant.rb +9 -6
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b75a7265756d1903cb93a5937959a7fca2a38d157eedf9287d1004b7bd5a05a4
|
4
|
+
data.tar.gz: 96c7945d43c9ba8dd5c9ef362b4bccc5a536eddf91526a9cb1bce4333df542cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53bf6c9d0de1fb8305fa7e7fce7e2072e381c6a088b0f6e08049222f46de4f908466d498c104f72fd19ddcf1cd7fa2f1cbc2beff099bd5529e880b3bf6a4c2ae
|
7
|
+
data.tar.gz: 3cc43c8eefce22bceb8465c4b475d4e0cc5b1e2c01a29997713e137605483d33ff792e368a37afd66316113f0495ae2ac265ec22af638cb112785da95f2261f9
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mutant
|
4
|
+
class Expression
|
5
|
+
class Descendants < self
|
6
|
+
include Anima.new(:const_name)
|
7
|
+
|
8
|
+
REGEXP = /\Adescendants:(?<const_name>.+)\z/.freeze
|
9
|
+
|
10
|
+
def syntax
|
11
|
+
"descendants:#{const_name}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def matcher
|
15
|
+
Matcher::Descendants.new(const_name: const_name)
|
16
|
+
end
|
17
|
+
end # Descendants
|
18
|
+
end # Expression
|
19
|
+
end # Mutant
|
data/lib/mutant/matcher/chain.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mutant
|
4
|
+
class Matcher
|
5
|
+
# Matcher for all descendants by constant name
|
6
|
+
class Descendants < self
|
7
|
+
include Anima.new(:const_name)
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
const = env.world.try_const_get(const_name) or return EMPTY_ARRAY
|
11
|
+
|
12
|
+
Chain.new(
|
13
|
+
matched_scopes(env, const).map { |scope| Scope.new(scope.raw) }
|
14
|
+
).call(env)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def matched_scopes(env, const)
|
20
|
+
env.matchable_scopes.select do |scope|
|
21
|
+
scope.raw.equal?(const) || const > scope.raw
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end # Descendant
|
25
|
+
end # Matcher
|
26
|
+
end # Mutant
|
data/lib/mutant/version.rb
CHANGED
data/lib/mutant/world.rb
CHANGED
@@ -50,6 +50,19 @@ module Mutant
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
# Try const get
|
54
|
+
#
|
55
|
+
# @param [String]
|
56
|
+
#
|
57
|
+
# @return [Class|Module|nil]
|
58
|
+
#
|
59
|
+
# rubocop:disable Lint/SuppressedException
|
60
|
+
def try_const_get(name)
|
61
|
+
kernel.const_get(name)
|
62
|
+
rescue NameError
|
63
|
+
end
|
64
|
+
# rubocop:enable Lint/SuppressedException
|
65
|
+
|
53
66
|
# Deadline
|
54
67
|
#
|
55
68
|
# @param [Float, nil] allowed_time
|
data/lib/mutant.rb
CHANGED
@@ -169,23 +169,25 @@ require 'mutant/subject/method/instance'
|
|
169
169
|
require 'mutant/subject/method/singleton'
|
170
170
|
require 'mutant/subject/method/metaclass'
|
171
171
|
require 'mutant/matcher'
|
172
|
-
require 'mutant/matcher/config'
|
173
172
|
require 'mutant/matcher/chain'
|
173
|
+
require 'mutant/matcher/config'
|
174
|
+
require 'mutant/matcher/descendants'
|
175
|
+
require 'mutant/matcher/filter'
|
174
176
|
require 'mutant/matcher/method'
|
175
|
-
require 'mutant/matcher/method/singleton'
|
176
|
-
require 'mutant/matcher/method/metaclass'
|
177
177
|
require 'mutant/matcher/method/instance'
|
178
|
+
require 'mutant/matcher/method/metaclass'
|
179
|
+
require 'mutant/matcher/method/singleton'
|
178
180
|
require 'mutant/matcher/methods'
|
179
181
|
require 'mutant/matcher/namespace'
|
180
|
-
require 'mutant/matcher/scope'
|
181
|
-
require 'mutant/matcher/filter'
|
182
182
|
require 'mutant/matcher/null'
|
183
|
+
require 'mutant/matcher/scope'
|
183
184
|
require 'mutant/matcher/static'
|
184
185
|
require 'mutant/expression'
|
185
|
-
require 'mutant/expression/
|
186
|
+
require 'mutant/expression/descendants'
|
186
187
|
require 'mutant/expression/method'
|
187
188
|
require 'mutant/expression/methods'
|
188
189
|
require 'mutant/expression/namespace'
|
190
|
+
require 'mutant/expression/parser'
|
189
191
|
require 'mutant/test'
|
190
192
|
require 'mutant/timer'
|
191
193
|
require 'mutant/integration'
|
@@ -264,6 +266,7 @@ module Mutant
|
|
264
266
|
DEFAULT = new(
|
265
267
|
coverage_criteria: Config::CoverageCriteria::EMPTY,
|
266
268
|
expression_parser: Expression::Parser.new([
|
269
|
+
Expression::Descendants,
|
267
270
|
Expression::Method,
|
268
271
|
Expression::Methods,
|
269
272
|
Expression::Namespace::Exact,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mutant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diff-lcs
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.6.
|
81
|
+
version: 0.6.2
|
82
82
|
type: :runtime
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.6.
|
88
|
+
version: 0.6.2
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: parallel
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,6 +207,7 @@ files:
|
|
207
207
|
- lib/mutant/context.rb
|
208
208
|
- lib/mutant/env.rb
|
209
209
|
- lib/mutant/expression.rb
|
210
|
+
- lib/mutant/expression/descendants.rb
|
210
211
|
- lib/mutant/expression/method.rb
|
211
212
|
- lib/mutant/expression/methods.rb
|
212
213
|
- lib/mutant/expression/namespace.rb
|
@@ -226,6 +227,7 @@ files:
|
|
226
227
|
- lib/mutant/matcher.rb
|
227
228
|
- lib/mutant/matcher/chain.rb
|
228
229
|
- lib/mutant/matcher/config.rb
|
230
|
+
- lib/mutant/matcher/descendants.rb
|
229
231
|
- lib/mutant/matcher/filter.rb
|
230
232
|
- lib/mutant/matcher/method.rb
|
231
233
|
- lib/mutant/matcher/method/instance.rb
|