mutant 0.11.14 → 0.11.15
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/bin/mutant +40 -35
- data/lib/mutant/cli/command/environment/run.rb +0 -7
- data/lib/mutant/cli/command/environment.rb +4 -5
- data/lib/mutant/cli/command.rb +24 -22
- data/lib/mutant/cli.rb +2 -4
- data/lib/mutant/config.rb +3 -15
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant.rb +2 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f0fc5ddcee197485af9a005a41938eb5c056fe7112747e1ed5cefd7860e0d27
|
4
|
+
data.tar.gz: eed2005705a2ff4a58c18390d7f59cf4eff85aa67b6c3846cb44b014e9f3fba9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff9b7d961960b339405eda6b0bf16bbcc7ad0527d52787f7fe402c0689afea3f0e344697af9a87e5331c766b8002ccc03c34b517f47b3edea385948336889634
|
7
|
+
data.tar.gz: bfe080deae82a8b5aae5a281515344ecfd526e8fafc1350727608b989404cf34c821fedd42e1e8c04b8bca744a28d0ad66f2d273871cc044197556eec8ebad48
|
data/bin/mutant
CHANGED
@@ -8,43 +8,48 @@ end
|
|
8
8
|
|
9
9
|
require 'mutant'
|
10
10
|
|
11
|
-
|
11
|
+
Mutant::CLI.parse(
|
12
12
|
arguments: ARGV,
|
13
13
|
world: Mutant::WORLD
|
14
|
-
)
|
14
|
+
).either(
|
15
|
+
->(message) { Mutant::WORLD.stderr.puts(message); Kernel.exit(false) },
|
16
|
+
# rubocop:disable Metrics/BlockLength
|
17
|
+
lambda do |command|
|
18
|
+
status =
|
19
|
+
if command.zombie?
|
20
|
+
$stderr.puts('Running mutant zombified!')
|
21
|
+
Mutant::Zombifier.call(
|
22
|
+
namespace: :Zombie,
|
23
|
+
load_path: $LOAD_PATH,
|
24
|
+
kernel: Kernel,
|
25
|
+
pathname: Pathname,
|
26
|
+
require_highjack: Mutant::RequireHighjack
|
27
|
+
.public_method(:call)
|
28
|
+
.to_proc
|
29
|
+
.curry
|
30
|
+
.call(Kernel),
|
31
|
+
root_require: 'mutant',
|
32
|
+
includes: %w[
|
33
|
+
adamantium
|
34
|
+
anima
|
35
|
+
concord
|
36
|
+
equalizer
|
37
|
+
mprelude
|
38
|
+
mutant
|
39
|
+
unparser
|
40
|
+
variable
|
41
|
+
]
|
42
|
+
)
|
15
43
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
pathname: Pathname,
|
24
|
-
require_highjack: Mutant::RequireHighjack
|
25
|
-
.public_method(:call)
|
26
|
-
.to_proc
|
27
|
-
.curry
|
28
|
-
.call(Kernel),
|
29
|
-
root_require: 'mutant',
|
30
|
-
includes: %w[
|
31
|
-
adamantium
|
32
|
-
anima
|
33
|
-
concord
|
34
|
-
equalizer
|
35
|
-
mprelude
|
36
|
-
mutant
|
37
|
-
unparser
|
38
|
-
variable
|
39
|
-
]
|
40
|
-
)
|
44
|
+
Zombie::Mutant::CLI.parse(
|
45
|
+
arguments: ARGV,
|
46
|
+
world: Zombie::Mutant::WORLD
|
47
|
+
).from_right.call
|
48
|
+
else
|
49
|
+
command.call
|
50
|
+
end
|
41
51
|
|
42
|
-
|
43
|
-
arguments: ARGV,
|
44
|
-
world: Zombie::Mutant::WORLD
|
45
|
-
).call
|
46
|
-
else
|
47
|
-
command.call
|
52
|
+
Kernel.exit(status)
|
48
53
|
end
|
49
|
-
|
50
|
-
|
54
|
+
# rubocop:enable Metrics/BlockLength
|
55
|
+
)
|
@@ -19,7 +19,9 @@ module Mutant
|
|
19
19
|
|
20
20
|
def initialize(attributes)
|
21
21
|
super(attributes)
|
22
|
-
@config = Config::DEFAULT
|
22
|
+
@config = Config::DEFAULT.with(
|
23
|
+
coverage_criteria: Config::CoverageCriteria::EMPTY
|
24
|
+
)
|
23
25
|
end
|
24
26
|
|
25
27
|
def bootstrap
|
@@ -37,7 +39,7 @@ module Mutant
|
|
37
39
|
)
|
38
40
|
end
|
39
41
|
|
40
|
-
@config = Config.env.merge(file_config).merge(@config)
|
42
|
+
@config = Config.env.merge(file_config).merge(@config)
|
41
43
|
end
|
42
44
|
|
43
45
|
def parse_remaining_arguments(arguments)
|
@@ -67,9 +69,6 @@ module Mutant
|
|
67
69
|
# rubocop:disable Metrics/MethodLength
|
68
70
|
def add_environment_options(parser)
|
69
71
|
parser.separator('Environment:')
|
70
|
-
parser.on('--zombie', 'Run mutant zombified') do
|
71
|
-
set(zombie: true)
|
72
|
-
end
|
73
72
|
parser.on('-I', '--include DIRECTORY', 'Add DIRECTORY to $LOAD_PATH') do |directory|
|
74
73
|
add(:includes, directory)
|
75
74
|
end
|
data/lib/mutant/cli/command.rb
CHANGED
@@ -4,9 +4,7 @@ module Mutant
|
|
4
4
|
module CLI
|
5
5
|
# rubocop:disable Metrics/ClassLength
|
6
6
|
class Command
|
7
|
-
include AbstractType, Anima.new(:world, :main, :parent, :
|
8
|
-
|
9
|
-
include Equalizer.new(:parent, :arguments)
|
7
|
+
include AbstractType, Anima.new(:world, :main, :parent, :zombie)
|
10
8
|
|
11
9
|
OPTIONS = [].freeze
|
12
10
|
SUBCOMMANDS = [].freeze
|
@@ -18,21 +16,20 @@ module Mutant
|
|
18
16
|
define_method(:add_officious) {}
|
19
17
|
end # OptionParser
|
20
18
|
|
21
|
-
class FailParse < self
|
22
|
-
include Concord.new(:world, :message)
|
23
|
-
|
24
|
-
def call
|
25
|
-
world.stderr.puts(message)
|
26
|
-
false
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
19
|
# Parse command
|
31
20
|
#
|
32
21
|
# @return [Command]
|
33
|
-
|
34
|
-
|
22
|
+
#
|
23
|
+
# rubocop:disable Metrics/ParameterLists
|
24
|
+
def self.parse(arguments:, parent: nil, world:, zombie: false)
|
25
|
+
new(
|
26
|
+
main: nil,
|
27
|
+
parent: parent,
|
28
|
+
world: world,
|
29
|
+
zombie: zombie
|
30
|
+
).__send__(:parse, arguments)
|
35
31
|
end
|
32
|
+
# rubocop:enable Metrics/ParameterLists
|
36
33
|
|
37
34
|
# Command name
|
38
35
|
#
|
@@ -62,12 +59,7 @@ module Mutant
|
|
62
59
|
[*parent&.full_name, self.class.command_name].join(' ')
|
63
60
|
end
|
64
61
|
|
65
|
-
|
66
|
-
#
|
67
|
-
# @return [Bool]
|
68
|
-
def zombie?
|
69
|
-
false
|
70
|
-
end
|
62
|
+
alias_method :zombie?, :zombie
|
71
63
|
|
72
64
|
abstract_method :action
|
73
65
|
|
@@ -116,7 +108,7 @@ module Mutant
|
|
116
108
|
end
|
117
109
|
end
|
118
110
|
|
119
|
-
def parse
|
111
|
+
def parse(arguments)
|
120
112
|
Either
|
121
113
|
.wrap_error(OptionParser::InvalidOption) { parser.order(arguments) }
|
122
114
|
.lmap(&method(:with_help))
|
@@ -129,6 +121,7 @@ module Mutant
|
|
129
121
|
parser.separator(nil)
|
130
122
|
end
|
131
123
|
|
124
|
+
# rubocop:disable Metrics/MethodLength
|
132
125
|
def add_global_options(parser)
|
133
126
|
parser.separator("mutant version: #{VERSION}")
|
134
127
|
parser.separator(nil)
|
@@ -142,6 +135,10 @@ module Mutant
|
|
142
135
|
parser.on('--version', 'Print mutants version') do
|
143
136
|
capture_main { world.stdout.puts("mutant-#{VERSION}"); true }
|
144
137
|
end
|
138
|
+
|
139
|
+
parser.on('--zombie', 'Run mutant zombified') do
|
140
|
+
@zombie = true
|
141
|
+
end
|
145
142
|
end
|
146
143
|
|
147
144
|
def add_subcommands(parser)
|
@@ -178,7 +175,12 @@ module Mutant
|
|
178
175
|
Either::Left.new(with_help('Missing required subcommand!'))
|
179
176
|
else
|
180
177
|
find_command(command_name).bind do |command|
|
181
|
-
command.parse(
|
178
|
+
command.parse(
|
179
|
+
arguments: arguments,
|
180
|
+
parent: self,
|
181
|
+
world: world,
|
182
|
+
zombie: zombie
|
183
|
+
)
|
182
184
|
end
|
183
185
|
end
|
184
186
|
end
|
data/lib/mutant/cli.rb
CHANGED
@@ -6,10 +6,8 @@ module Mutant
|
|
6
6
|
# Parse command
|
7
7
|
#
|
8
8
|
# @return [Command]
|
9
|
-
def self.parse(
|
10
|
-
Command::Root
|
11
|
-
.parse(world: world, **attributes)
|
12
|
-
.from_right { |message| Command::FailParse.new(world, message) }
|
9
|
+
def self.parse(arguments:, world:)
|
10
|
+
Command::Root.parse(arguments: arguments, world: world)
|
13
11
|
end
|
14
12
|
end # CLI
|
15
13
|
end # Mutant
|
data/lib/mutant/config.rb
CHANGED
@@ -21,11 +21,10 @@ module Mutant
|
|
21
21
|
:matcher,
|
22
22
|
:mutation,
|
23
23
|
:reporter,
|
24
|
-
:requires
|
25
|
-
:zombie
|
24
|
+
:requires
|
26
25
|
)
|
27
26
|
|
28
|
-
%i[fail_fast
|
27
|
+
%i[fail_fast].each do |name|
|
29
28
|
define_method(:"#{name}?") { public_send(name) }
|
30
29
|
end
|
31
30
|
|
@@ -74,8 +73,7 @@ module Mutant
|
|
74
73
|
jobs: other.jobs || jobs,
|
75
74
|
matcher: matcher.merge(other.matcher),
|
76
75
|
mutation: mutation.merge(other.mutation),
|
77
|
-
requires: requires + other.requires
|
78
|
-
zombie: zombie || other.zombie
|
76
|
+
requires: requires + other.requires
|
79
77
|
)
|
80
78
|
end
|
81
79
|
# rubocop:enable Metrics/AbcSize
|
@@ -100,16 +98,6 @@ module Mutant
|
|
100
98
|
end
|
101
99
|
end
|
102
100
|
|
103
|
-
# Expand config with defaults
|
104
|
-
#
|
105
|
-
# @return [Config]
|
106
|
-
def expand_defaults
|
107
|
-
with(
|
108
|
-
coverage_criteria: CoverageCriteria::DEFAULT.merge(coverage_criteria),
|
109
|
-
jobs: jobs || 1
|
110
|
-
)
|
111
|
-
end
|
112
|
-
|
113
101
|
def self.load_contents(env, path)
|
114
102
|
Transform::Named
|
115
103
|
.new(
|
data/lib/mutant/version.rb
CHANGED
data/lib/mutant.rb
CHANGED
@@ -273,7 +273,7 @@ module Mutant
|
|
273
273
|
# Reopen class to initialize constant to avoid dep circle
|
274
274
|
class Config
|
275
275
|
DEFAULT = new(
|
276
|
-
coverage_criteria: Config::CoverageCriteria::
|
276
|
+
coverage_criteria: Config::CoverageCriteria::DEFAULT,
|
277
277
|
expression_parser: Expression::Parser.new([
|
278
278
|
Expression::Descendants,
|
279
279
|
Expression::Method,
|
@@ -291,8 +291,7 @@ module Mutant
|
|
291
291
|
matcher: Matcher::Config::DEFAULT,
|
292
292
|
mutation: Mutation::Config::DEFAULT,
|
293
293
|
reporter: Reporter::CLI.build(WORLD.stdout),
|
294
|
-
requires: EMPTY_ARRAY
|
295
|
-
zombie: false
|
294
|
+
requires: EMPTY_ARRAY
|
296
295
|
)
|
297
296
|
end # Config
|
298
297
|
|
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.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diff-lcs
|
@@ -393,7 +393,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
393
393
|
- !ruby/object:Gem::Version
|
394
394
|
version: '0'
|
395
395
|
requirements: []
|
396
|
-
rubygems_version: 3.
|
396
|
+
rubygems_version: 3.3.7
|
397
397
|
signing_key:
|
398
398
|
specification_version: 4
|
399
399
|
summary: ''
|