mutant 0.9.13 → 0.10.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|