mutant 0.9.13 → 0.10.5
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 +14 -11
- data/lib/mutant.rb +10 -6
- data/lib/mutant/cli.rb +8 -167
- data/lib/mutant/cli/command.rb +196 -0
- data/lib/mutant/cli/command/root.rb +13 -0
- data/lib/mutant/cli/command/run.rb +161 -0
- data/lib/mutant/cli/command/subscription.rb +54 -0
- data/lib/mutant/config.rb +28 -52
- data/lib/mutant/expression.rb +0 -1
- data/lib/mutant/license.rb +9 -35
- data/lib/mutant/license/subscription.rb +31 -9
- data/lib/mutant/license/subscription/commercial.rb +2 -4
- data/lib/mutant/license/subscription/opensource.rb +8 -7
- data/lib/mutant/matcher/config.rb +13 -0
- data/lib/mutant/meta/example.rb +16 -4
- data/lib/mutant/meta/example/dsl.rb +33 -16
- data/lib/mutant/meta/example/verification.rb +70 -28
- data/lib/mutant/mutator/node.rb +2 -2
- data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
- data/lib/mutant/mutator/node/index.rb +4 -4
- data/lib/mutant/mutator/node/named_value/variable_assignment.rb +1 -1
- data/lib/mutant/mutator/node/op_asgn.rb +15 -1
- data/lib/mutant/mutator/node/send.rb +1 -1
- data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
- data/lib/mutant/reporter/cli/printer/config.rb +2 -2
- data/lib/mutant/selector/expression.rb +3 -1
- data/lib/mutant/subject/method/instance.rb +1 -1
- data/lib/mutant/test.rb +1 -1
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant/world.rb +52 -0
- metadata +16 -13
- data/lib/mutant/minitest/coverage.rb +0 -53
- data/lib/mutant/mutator/node/dsym.rb +0 -22
@@ -14,8 +14,8 @@ module Mutant
|
|
14
14
|
# @return [undefined]
|
15
15
|
def run
|
16
16
|
info 'Matcher: %s', object.matcher.inspect
|
17
|
-
info 'Integration: %s', object.integration
|
18
|
-
info 'Jobs: %
|
17
|
+
info 'Integration: %s', object.integration || 'null'
|
18
|
+
info 'Jobs: %s', object.jobs || 'auto'
|
19
19
|
info 'Includes: %s', object.includes
|
20
20
|
info 'Requires: %s', object.requires
|
21
21
|
end
|
@@ -14,7 +14,9 @@ module Mutant
|
|
14
14
|
def call(subject)
|
15
15
|
subject.match_expressions.each do |match_expression|
|
16
16
|
subject_tests = integration.all_tests.select do |test|
|
17
|
-
|
17
|
+
test.expressions.any? do |test_expression|
|
18
|
+
match_expression.prefix?(test_expression)
|
19
|
+
end
|
18
20
|
end
|
19
21
|
return subject_tests if subject_tests.any?
|
20
22
|
end
|
@@ -42,7 +42,7 @@ module Mutant
|
|
42
42
|
private
|
43
43
|
|
44
44
|
def wrap_node(mutant)
|
45
|
-
s(:begin, mutant, s(:send, nil, :memoize, s(:
|
45
|
+
s(:begin, mutant, s(:send, nil, :memoize, s(:sym, name), *options))
|
46
46
|
end
|
47
47
|
|
48
48
|
# The optional AST node for adamantium memoization options
|
data/lib/mutant/test.rb
CHANGED
data/lib/mutant/version.rb
CHANGED
data/lib/mutant/world.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mutant
|
4
|
+
# The outer world IO objects mutant does interact with
|
5
|
+
class World
|
6
|
+
include Adamantium::Flat, Anima.new(
|
7
|
+
:condition_variable,
|
8
|
+
:gem,
|
9
|
+
:gem_method,
|
10
|
+
:io,
|
11
|
+
:json,
|
12
|
+
:kernel,
|
13
|
+
:load_path,
|
14
|
+
:marshal,
|
15
|
+
:mutex,
|
16
|
+
:object_space,
|
17
|
+
:open3,
|
18
|
+
:pathname,
|
19
|
+
:process,
|
20
|
+
:stderr,
|
21
|
+
:stdout,
|
22
|
+
:thread,
|
23
|
+
:warnings
|
24
|
+
)
|
25
|
+
|
26
|
+
INSPECT = '#<Mutant::World>'
|
27
|
+
|
28
|
+
private_constant(*constants(false))
|
29
|
+
|
30
|
+
# Object inspection
|
31
|
+
#
|
32
|
+
# @return [String]
|
33
|
+
def inspect
|
34
|
+
INSPECT
|
35
|
+
end
|
36
|
+
|
37
|
+
# Capture stdout of a command
|
38
|
+
#
|
39
|
+
# @param [Array<String>] command
|
40
|
+
#
|
41
|
+
# @return [Either<String,String>]
|
42
|
+
def capture_stdout(command)
|
43
|
+
stdout, status = open3.capture2(*command, binmode: true)
|
44
|
+
|
45
|
+
if status.success?
|
46
|
+
Either::Right.new(stdout)
|
47
|
+
else
|
48
|
+
Either::Left.new("Command #{command} failed!")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end # World
|
52
|
+
end # Mutant
|
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.
|
4
|
+
version: 0.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: abstract_type
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.
|
187
|
+
version: 0.5.3
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
194
|
+
version: 0.5.3
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: variable
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,28 +254,28 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: 1.
|
257
|
+
version: 1.3.0
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: 1.
|
264
|
+
version: 1.3.0
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: rubocop
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
268
268
|
requirements:
|
269
269
|
- - "~>"
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
271
|
+
version: '1.0'
|
272
272
|
type: :development
|
273
273
|
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
276
|
- - "~>"
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
278
|
+
version: '1.0'
|
279
279
|
description: Mutation Testing for Ruby.
|
280
280
|
email:
|
281
281
|
- mbj@schirp-dso.com
|
@@ -303,6 +303,10 @@ files:
|
|
303
303
|
- lib/mutant/ast/types.rb
|
304
304
|
- lib/mutant/bootstrap.rb
|
305
305
|
- lib/mutant/cli.rb
|
306
|
+
- lib/mutant/cli/command.rb
|
307
|
+
- lib/mutant/cli/command/root.rb
|
308
|
+
- lib/mutant/cli/command/run.rb
|
309
|
+
- lib/mutant/cli/command/subscription.rb
|
306
310
|
- lib/mutant/config.rb
|
307
311
|
- lib/mutant/context.rb
|
308
312
|
- lib/mutant/env.rb
|
@@ -338,7 +342,6 @@ files:
|
|
338
342
|
- lib/mutant/meta/example.rb
|
339
343
|
- lib/mutant/meta/example/dsl.rb
|
340
344
|
- lib/mutant/meta/example/verification.rb
|
341
|
-
- lib/mutant/minitest/coverage.rb
|
342
345
|
- lib/mutant/mutation.rb
|
343
346
|
- lib/mutant/mutator.rb
|
344
347
|
- lib/mutant/mutator/node.rb
|
@@ -356,8 +359,7 @@ files:
|
|
356
359
|
- lib/mutant/mutator/node/const.rb
|
357
360
|
- lib/mutant/mutator/node/define.rb
|
358
361
|
- lib/mutant/mutator/node/defined.rb
|
359
|
-
- lib/mutant/mutator/node/
|
360
|
-
- lib/mutant/mutator/node/dsym.rb
|
362
|
+
- lib/mutant/mutator/node/dynamic_literal.rb
|
361
363
|
- lib/mutant/mutator/node/generic.rb
|
362
364
|
- lib/mutant/mutator/node/if.rb
|
363
365
|
- lib/mutant/mutator/node/index.rb
|
@@ -448,6 +450,7 @@ files:
|
|
448
450
|
- lib/mutant/util.rb
|
449
451
|
- lib/mutant/version.rb
|
450
452
|
- lib/mutant/warnings.rb
|
453
|
+
- lib/mutant/world.rb
|
451
454
|
- lib/mutant/zombifier.rb
|
452
455
|
homepage: https://github.com/mbj/mutant
|
453
456
|
licenses:
|
@@ -461,14 +464,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
461
464
|
requirements:
|
462
465
|
- - ">="
|
463
466
|
- !ruby/object:Gem::Version
|
464
|
-
version: '
|
467
|
+
version: '2.5'
|
465
468
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
466
469
|
requirements:
|
467
470
|
- - ">="
|
468
471
|
- !ruby/object:Gem::Version
|
469
472
|
version: '0'
|
470
473
|
requirements: []
|
471
|
-
rubygems_version: 3.1.
|
474
|
+
rubygems_version: 3.1.4
|
472
475
|
signing_key:
|
473
476
|
specification_version: 4
|
474
477
|
summary: ''
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'minitest'
|
4
|
-
|
5
|
-
module Mutant
|
6
|
-
module Minitest
|
7
|
-
module Coverage
|
8
|
-
# Setup coverage declaration for current class
|
9
|
-
#
|
10
|
-
# @param [String]
|
11
|
-
#
|
12
|
-
# @example
|
13
|
-
#
|
14
|
-
# class MyTest < MiniTest::Test
|
15
|
-
# cover 'MyCode*'
|
16
|
-
#
|
17
|
-
# def test_some_stuff
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
# @api public
|
22
|
-
def cover(expression)
|
23
|
-
if defined?(@cover_expression)
|
24
|
-
fail "#{self} already declares to cover: #{@cover_expression.inspect}"
|
25
|
-
end
|
26
|
-
|
27
|
-
@cover_expression = expression
|
28
|
-
end
|
29
|
-
|
30
|
-
# Effective coverage expression
|
31
|
-
#
|
32
|
-
# @return [String, nil]
|
33
|
-
#
|
34
|
-
# @api private
|
35
|
-
def resolve_cover_expression
|
36
|
-
return @cover_expression if defined?(@cover_expression)
|
37
|
-
|
38
|
-
try_superclass_cover_expression
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def try_superclass_cover_expression
|
44
|
-
return if superclass.equal?(::Minitest::Runnable)
|
45
|
-
|
46
|
-
superclass.resolve_cover_expression
|
47
|
-
end
|
48
|
-
|
49
|
-
end # Coverage
|
50
|
-
end # Minitest
|
51
|
-
end # Mutant
|
52
|
-
|
53
|
-
Minitest::Test.extend(Mutant::Minitest::Coverage)
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Mutant
|
4
|
-
class Mutator
|
5
|
-
class Node
|
6
|
-
|
7
|
-
# Dsym mutator
|
8
|
-
class Dsym < Generic
|
9
|
-
|
10
|
-
handle(:dsym)
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def dispatch
|
15
|
-
super()
|
16
|
-
emit_singletons
|
17
|
-
end
|
18
|
-
|
19
|
-
end # Dsym
|
20
|
-
end # Node
|
21
|
-
end # Mutator
|
22
|
-
end # Mutant
|