mutant 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5194ccc2d7c83d425c53dc7339242277010dcac6715248380417f936d88f7eda
4
- data.tar.gz: ba35d0efea5be46b335947acd7452d72df6917deba2e6ccad96d8e0b60bdb2e4
3
+ metadata.gz: da54128dceeae02111b3708c3b3bdc80d49d926661069bb1e852468ceaad0502
4
+ data.tar.gz: 3a925f8be1f50b4fa767047324e06a268a8ba3f6b2b5797b795bd1581c69a84f
5
5
  SHA512:
6
- metadata.gz: a63b99d244b957e3b3664243ed8a37704b2bdc596be0020de7f5665351958d941ec1be81584af798f7c0b63011d5cd689b4d3b77686469d869670592bffdecf4
7
- data.tar.gz: 76c702695a6e04f874a73952fb153065bb0f76ebd098b50b6bb6e7b670568ca842aa78b70c71abb8728248eacf0e28ef123c02eab4c443d4a896fe3939ff453b
6
+ metadata.gz: bd0520621ef6fb51b2e31ca9232d1d56226a867a8684e7246a83b20382e506ac0e86457f8ac7a1d9d602f70f7459207153464e3c1cabb63144f3634a85f1a73f
7
+ data.tar.gz: 7293cb707fee3343a7e089b4c7ba35487262c35740a3caf3392fad5ec7f3d956a2fd54c43f5925deb1cb6e99e2f0b146fc2af4ab2a16ad5e339206e5d71c178e
@@ -1,3 +1,8 @@
1
+ # v0.9.5 2020-02-02
2
+
3
+ * Change to 2.7 parser series.
4
+ This does not drop support for < 2.7 but enables to in the future add full Ruby 2.7 support.
5
+
1
6
  # v0.9.4 2020-01-03
2
7
 
3
8
  * Bump unparser dependency
data/Gemfile CHANGED
@@ -6,14 +6,6 @@ gemspec name: 'mutant'
6
6
 
7
7
  eval_gemfile File.expand_path('Gemfile.shared', __dir__)
8
8
 
9
- gem 'unparser', git: 'https://github.com/mbj/unparser.git'
10
-
11
- gem(
12
- 'devtools',
13
- git: 'https://github.com/mbj/devtools.git',
14
- ref: '26ba0a1053e6cf7b79fc72d513a73457f9a38ead'
15
- )
16
-
17
9
  # Mutant itself uses an opensource license key.
18
10
  # Scoped to https://github.com/mbj/mutant it'll
19
11
  # not be useful elsewhere.
@@ -1,39 +1,3 @@
1
- GIT
2
- remote: https://github.com/mbj/devtools.git
3
- revision: 26ba0a1053e6cf7b79fc72d513a73457f9a38ead
4
- ref: 26ba0a1053e6cf7b79fc72d513a73457f9a38ead
5
- specs:
6
- devtools (0.1.23)
7
- abstract_type (~> 0.0.7)
8
- adamantium (~> 0.2.0)
9
- anima (~> 0.3.0)
10
- concord (~> 0.1.5)
11
- flay (~> 2.12.0)
12
- flog (~> 4.6.2)
13
- procto (~> 0.0.3)
14
- rake (~> 12.3.0)
15
- reek (~> 5.3.0)
16
- rspec (~> 3.8.0)
17
- rspec-core (~> 3.8.0)
18
- rspec-its (~> 1.2.0)
19
- rubocop (~> 0.61.1)
20
- simplecov (~> 0.16.1)
21
- yard (~> 0.9.16)
22
- yardstick (~> 0.9.9)
23
-
24
- GIT
25
- remote: https://github.com/mbj/unparser.git
26
- revision: 157a5b3b43e9f1d540da74b1751dc2b6f7601c3b
27
- specs:
28
- unparser (0.4.6)
29
- abstract_type (~> 0.0.7)
30
- adamantium (~> 0.2.0)
31
- concord (~> 0.1.5)
32
- diff-lcs (~> 1.3)
33
- equalizer (~> 0.0.9)
34
- parser (~> 2.6.5)
35
- procto (~> 0.0.2)
36
-
37
1
  PATH
38
2
  remote: .
39
3
  specs:
@@ -48,7 +12,7 @@ PATH
48
12
  ice_nine (~> 0.11.1)
49
13
  memoizable (~> 0.4.2)
50
14
  mprelude (~> 0.1.0)
51
- parser (~> 2.6.5)
15
+ parser (~> 2.7.0.2)
52
16
  procto (~> 0.0.2)
53
17
  unparser (~> 0.4.6)
54
18
 
@@ -78,6 +42,23 @@ GEM
78
42
  equalizer (~> 0.0.9)
79
43
  descendants_tracker (0.0.4)
80
44
  thread_safe (~> 0.3, >= 0.3.1)
45
+ devtools (0.1.25)
46
+ abstract_type (~> 0.0.7)
47
+ adamantium (~> 0.2.0)
48
+ anima (~> 0.3.0)
49
+ concord (~> 0.1.5)
50
+ flay (~> 2.12.0)
51
+ flog (~> 4.6.2)
52
+ procto (~> 0.0.3)
53
+ rake (~> 12.3.0)
54
+ reek (~> 5.6.0)
55
+ rspec (~> 3.8.0)
56
+ rspec-core (~> 3.8.0)
57
+ rspec-its (~> 1.2.0)
58
+ rubocop (~> 0.79.0)
59
+ simplecov (~> 0.16.1)
60
+ yard (~> 0.9.16)
61
+ yardstick (~> 0.9.9)
81
62
  diff-lcs (1.3)
82
63
  docile (1.3.2)
83
64
  equalizer (0.0.11)
@@ -106,18 +87,17 @@ GEM
106
87
  procto (~> 0.0.2)
107
88
  mutant-license (0.1.0)
108
89
  parallel (1.19.1)
109
- parser (2.6.5.0)
90
+ parser (2.7.0.2)
110
91
  ast (~> 2.4.0)
111
92
  path_expander (1.1.0)
112
- powerpack (0.1.2)
113
93
  procto (0.0.3)
114
94
  psych (3.1.0)
115
95
  rainbow (3.0.0)
116
96
  rake (12.3.3)
117
- reek (5.3.2)
97
+ reek (5.6.0)
118
98
  codeclimate-engine-rb (~> 0.4.0)
119
99
  kwalify (~> 0.7.0)
120
- parser (>= 2.5.0.0, < 2.7, != 2.5.1.1)
100
+ parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
121
101
  psych (~> 3.1.0)
122
102
  rainbow (>= 2.0, < 4.0)
123
103
  rspec (3.8.0)
@@ -136,14 +116,13 @@ GEM
136
116
  diff-lcs (>= 1.2.0, < 2.0)
137
117
  rspec-support (~> 3.8.0)
138
118
  rspec-support (3.8.3)
139
- rubocop (0.61.1)
119
+ rubocop (0.79.0)
140
120
  jaro_winkler (~> 1.5.1)
141
121
  parallel (~> 1.10)
142
- parser (>= 2.5, != 2.5.1.1)
143
- powerpack (~> 0.1)
122
+ parser (>= 2.7.0.1)
144
123
  rainbow (>= 2.2.2, < 4.0)
145
124
  ruby-progressbar (~> 1.7)
146
- unicode-display_width (~> 1.4.0)
125
+ unicode-display_width (>= 1.4.0, < 1.7)
147
126
  ruby-progressbar (1.10.1)
148
127
  ruby_parser (3.14.1)
149
128
  sexp_processor (~> 4.9)
@@ -154,13 +133,21 @@ GEM
154
133
  simplecov-html (~> 0.10.0)
155
134
  simplecov-html (0.10.2)
156
135
  thread_safe (0.3.6)
157
- unicode-display_width (1.4.1)
136
+ unicode-display_width (1.6.1)
137
+ unparser (0.4.7)
138
+ abstract_type (~> 0.0.7)
139
+ adamantium (~> 0.2.0)
140
+ concord (~> 0.1.5)
141
+ diff-lcs (~> 1.3)
142
+ equalizer (~> 0.0.9)
143
+ parser (>= 2.6.5)
144
+ procto (~> 0.0.2)
158
145
  virtus (1.0.5)
159
146
  axiom-types (~> 0.1)
160
147
  coercible (~> 1.0)
161
148
  descendants_tracker (~> 0.0, >= 0.0.3)
162
149
  equalizer (~> 0.0, >= 0.0.9)
163
- yard (0.9.22)
150
+ yard (0.9.24)
164
151
  yardstick (0.9.9)
165
152
  yard (~> 0.8, >= 0.8.7.2)
166
153
 
@@ -168,11 +155,10 @@ PLATFORMS
168
155
  ruby
169
156
 
170
157
  DEPENDENCIES
171
- devtools!
158
+ devtools (~> 0.1.25)
172
159
  mutant!
173
160
  mutant-license!
174
161
  parallel (~> 1.3)
175
- unparser!
176
162
 
177
163
  BUNDLED WITH
178
164
  1.17.3
data/LICENSE CHANGED
@@ -116,7 +116,7 @@ the net income of Schirp DSO LTD).
116
116
 
117
117
  6. Support, Maintenance and Services. Subject to the terms and conditions of
118
118
  this Agreement, as set forth in your invoice, and as set forth on the Mutant
119
- support page (https://github.com/mbj/mutant/wiki/Commercial-Support),
119
+ support page (https://github.com/mbj/mutant/blob/master/docs/commercial-support.md)
120
120
  support and maintenance services may be included with the purchase of your
121
121
  license subscription.
122
122
 
data/README.md CHANGED
@@ -29,6 +29,15 @@ On each detection of uncovered semantics you have the opportunity to:
29
29
  to test only the code you had been touching. See the [incremental](#only-mutating-changed-code)
30
30
  mutation testing documentation.
31
31
 
32
+ ## Ruby Versions
33
+
34
+ Mutant currently only works on cRuby/MRI. Starting with version 2.5.x. It supports all syntax features upto and
35
+ including Ruby 2.6.
36
+
37
+ Support for 2.7 syntax features is pending, see unparser issue: https://github.com/mbj/unparser/issues/129.
38
+
39
+ Mutant will work under Ruby 2.7 just fine, unless a 2.7 syntax feature is used. This will be resolved shortly.
40
+
32
41
  ## Licensing
33
42
 
34
43
  Mutant was recently transitioned commercial software, with a free usage plan for opensource projects.
@@ -99,7 +99,7 @@ ClassCheck:
99
99
  EnforcedStyle: kind_of?
100
100
 
101
101
  # Do not prefer double quotes to be used when %q or %Q is more appropriate
102
- UnneededPercentQ:
102
+ Style/RedundantPercentQ:
103
103
  Enabled: false
104
104
 
105
105
  # Allow a maximum ABC score
@@ -145,7 +145,7 @@ Alias:
145
145
  EnforcedStyle: prefer_alias_method
146
146
 
147
147
  # Do not waste my horizontal or vertical space
148
- IndentArray:
148
+ Layout/FirstArrayElementIndentation:
149
149
  Enabled: false
150
150
 
151
151
  # Prefer
@@ -167,7 +167,7 @@ MultilineMethodCallIndentation:
167
167
  Send:
168
168
  Enabled: true
169
169
 
170
- Layout/AlignHash:
170
+ Layout/HashAlignment:
171
171
  EnforcedColonStyle: table
172
172
  EnforcedHashRocketStyle: table
173
173
  Layout/EmptyLineAfterGuardClause:
@@ -196,3 +196,10 @@ Style/RescueStandardError:
196
196
  Enabled: false
197
197
  Style/StderrPuts:
198
198
  Enabled: false
199
+ # suggesting single letter variablesl bah
200
+ Naming/RescuedExceptionsVariableName:
201
+ Enabled: false
202
+ # false positive on private keywords
203
+ Layout/IndentationWidth:
204
+ Enabled: false
205
+
@@ -0,0 +1,14 @@
1
+ # Commercial Support
2
+
3
+ Mutant offers only community support.
4
+
5
+ Commercial license customers are entited to priority support via email.
6
+
7
+ ## Priority Support
8
+
9
+ Covers 1 incident per quarter, with a max response time of 7 days.
10
+ Scope is limited to mutant not the application or infrastructure.
11
+
12
+ For support email [Markus Schirp](mailto:mbj@schirp-dso.com?subject=Mutant%20Support).
13
+ Please email using the same domain as the roiginal license email or explain
14
+ your connection to the license.
@@ -105,7 +105,7 @@ module Mutant
105
105
  #
106
106
  # @return [undefined]
107
107
  #
108
- # rubocop:disable MethodLength
108
+ # rubocop:disable Metrics/MethodLength
109
109
  def add_environment_options(opts)
110
110
  opts.separator('Environment:')
111
111
  opts.on('--zombie', 'Run mutant zombified') do
@@ -10,14 +10,12 @@ module Mutant
10
10
  # Mutation example
11
11
  class Example
12
12
 
13
- # rubocop:disable MutableConstant
13
+ # rubocop:disable Style/MutableConstant
14
14
  ALL = []
15
15
 
16
16
  # Add example
17
17
  #
18
18
  # @return [undefined]
19
- #
20
- # rubocop:disable Performance/Caller
21
19
  def self.add(*types, &block)
22
20
  file = caller.first.split(':in', 2).first
23
21
  ALL << DSL.call(file, Set.new(types), block)
@@ -61,7 +61,7 @@ module Mutant
61
61
  def invalid_syntax
62
62
  mutations.reject do |mutation|
63
63
  ::Parser::CurrentRuby.parse(mutation.source)
64
- rescue ::Parser::SyntaxError # rubocop:disable Lint/HandleExceptions
64
+ rescue ::Parser::SyntaxError # rubocop:disable Lint/SuppressedException
65
65
  end
66
66
  end
67
67
  memoize :invalid_syntax
@@ -12,28 +12,43 @@ module Mutant
12
12
  __LINE__
13
13
  alias
14
14
  arg_expr
15
+ array_pattern
16
+ array_pattern_with_tail
15
17
  back_ref
16
18
  blockarg
17
19
  blockarg_expr
20
+ case_match
18
21
  complex
22
+ const_pattern
19
23
  eflipflop
20
24
  empty
21
25
  ensure
22
26
  for
27
+ forward_args
28
+ forwarded_args
29
+ hash_pattern
23
30
  ident
31
+ if_guard
24
32
  iflipflop
33
+ in_match
34
+ in_pattern
25
35
  kwnilarg
26
36
  kwrestarg
27
37
  kwsplat
38
+ match_alt
39
+ match_as
40
+ match_nil_pattern
41
+ match_rest
42
+ match_var
28
43
  match_with_lvasgn
29
- meth_ref
44
+ match_with_trailing_comma
30
45
  module
31
46
  numargs
32
47
  numblock
33
- numparam
34
48
  objc_kwarg
35
49
  objc_restarg
36
50
  objc_varargs
51
+ pin
37
52
  postexe
38
53
  preexe
39
54
  rational
@@ -45,6 +60,7 @@ module Mutant
45
60
  sclass
46
61
  shadowarg
47
62
  undef
63
+ unless_guard
48
64
  until_post
49
65
  while_post
50
66
  xstr
@@ -5,7 +5,7 @@ module Mutant
5
5
  class Node
6
6
 
7
7
  # Namespace for send mutators
8
- # rubocop:disable ClassLength
8
+ # rubocop:disable Metrics/ClassLength
9
9
  class Send < self
10
10
  include AST::Types
11
11
 
@@ -5,7 +5,7 @@ module Mutant
5
5
  class CLI
6
6
  # CLI output format
7
7
  #
8
- # rubocop:disable FormatString
8
+ # rubocop:disable Style/FormatString
9
9
  class Format
10
10
  include AbstractType, Concord.new(:tty)
11
11
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Mutant
4
4
  # Current mutant version
5
- VERSION = '0.9.4'
5
+ VERSION = '0.9.5'
6
6
  end # Mutant
@@ -17,7 +17,9 @@ module Mutant
17
17
 
18
18
  include AST::Sexp
19
19
 
20
+ # rubocop:disable Lint/InheritException
20
21
  LoadError = Class.new(::LoadError)
22
+ # rubocop:enable Lint/InheritException
21
23
 
22
24
  # Initialize object
23
25
  #
@@ -31,10 +31,10 @@ Gem::Specification.new do |gem|
31
31
  gem.add_runtime_dependency('ice_nine', '~> 0.11.1')
32
32
  gem.add_runtime_dependency('memoizable', '~> 0.4.2')
33
33
  gem.add_runtime_dependency('mprelude', '~> 0.1.0')
34
- gem.add_runtime_dependency('parser', '~> 2.6.5')
34
+ gem.add_runtime_dependency('parser', '~> 2.7.0.2')
35
35
  gem.add_runtime_dependency('procto', '~> 0.0.2')
36
36
  gem.add_runtime_dependency('unparser', '~> 0.4.6')
37
37
 
38
- gem.add_development_dependency('devtools', '~> 0.1.23')
38
+ gem.add_development_dependency('devtools', '~> 0.1.25')
39
39
  gem.add_development_dependency('parallel', '~> 1.3')
40
40
  end
@@ -10,7 +10,7 @@ module MutantSpec
10
10
 
11
11
  # Namespace module for corpus testing
12
12
  #
13
- # rubocop:disable MethodLength
13
+ # rubocop:disable Metrics/MethodLength
14
14
  module Corpus
15
15
  TMP = ROOT.join('tmp').freeze
16
16
  EXCLUDE_GLOB_FORMAT = '{%s}'
@@ -22,7 +22,7 @@ module MutantSpec
22
22
  private_constant(*constants(false))
23
23
 
24
24
  # Project under corpus test
25
- # rubocop:disable ClassLength
25
+ # rubocop:disable Metrics/ClassLength
26
26
  class Project
27
27
  MUTEX = Mutex.new
28
28
 
@@ -259,7 +259,7 @@ module MutantSpec
259
259
  #
260
260
  # @param [Array<String>] arguments
261
261
  #
262
- # rubocop:disable GuardClause - guard clause without else does not make sense
262
+ # rubocop:disable Style/GuardClause - guard clause without else does not make sense
263
263
  def system(arguments)
264
264
  return if Kernel.system(*arguments)
265
265
 
@@ -26,8 +26,7 @@ module MutantSpec
26
26
  super(DEFAULTS.merge(attributes))
27
27
  end
28
28
 
29
- # rubocop:disable Naming/UncommunicativeMethodParamName
30
- def handle(vm, observation)
29
+ def handle(vm, observation) # rubocop:disable Naming/MethodParameterName
31
30
  unless match?(observation)
32
31
  fail "Unexpected event observation: #{observation.inspect}, expected #{inspect}"
33
32
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable ModuleLength
3
+ # rubocop:disable Metrics/ModuleLength
4
4
  module SharedContext
5
5
  # Prepend an anonymous module with the new `with` method
6
6
  #
@@ -25,8 +25,8 @@ module SharedContext
25
25
  end
26
26
  end
27
27
 
28
- # rubocop:disable MethodLength
29
- # rubocop:disable AbcSize
28
+ # rubocop:disable Metrics/MethodLength
29
+ # rubocop:disable Metrics/AbcSize
30
30
  def setup_shared_context
31
31
  let(:mutation_a) { Mutant::Mutation::Evil.new(subject_a, mutation_a_node) }
32
32
  let(:mutation_a_node) { s(:false) }
@@ -93,7 +93,7 @@ module XSpec
93
93
  class MessageExpectation
94
94
  include Anima.new(:receiver, :selector, :arguments, :reaction)
95
95
 
96
- # rubocop:disable ParameterLists
96
+ # rubocop:disable Metrics/ParameterLists
97
97
  def self.parse(receiver:, selector:, arguments: [], reaction: nil)
98
98
  new(
99
99
  receiver: receiver,
@@ -152,7 +152,7 @@ module XSpec
152
152
  expectations.empty? or fail "unconsumed expectations:\n#{expectations.map(&:inspect).join("\n")}"
153
153
  end
154
154
 
155
- # rubocop:disable MethodLength
155
+ # rubocop:disable Metrics/MethodLength
156
156
  def self.verify(rspec_context, expectations)
157
157
  verifier = new(expectations)
158
158
 
@@ -13,7 +13,7 @@ describe Mutant::Repository::Diff::Ranges do
13
13
  Tempfile.open('new') do |new_file|
14
14
  new_file.write(new)
15
15
  new_file.flush
16
- # rubocop:disable Lint/UnneededSplatExpansion
16
+ # rubocop:disable Lint/RedundantSplatExpansion
17
17
  stdout, status = Open3.capture2(
18
18
  *%W[
19
19
  git
@@ -25,7 +25,7 @@ describe Mutant::Repository::Diff::Ranges do
25
25
  #{new_file.path}
26
26
  ]
27
27
  )
28
- # rubocop:enable Lint/UnneededSplatExpansion
28
+ # rubocop:enable Lint/RedundantSplatExpansion
29
29
 
30
30
  fail unless [0, 256].include?(status.to_i)
31
31
 
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.9.4
4
+ version: 0.9.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-01-04 00:00:00.000000000 Z
11
+ date: 2020-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: abstract_type
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 2.6.5
159
+ version: 2.7.0.2
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 2.6.5
166
+ version: 2.7.0.2
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: procto
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +198,14 @@ dependencies:
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: 0.1.23
201
+ version: 0.1.25
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: 0.1.23
208
+ version: 0.1.25
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: parallel
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +245,7 @@ files:
245
245
  - config/reek.yml
246
246
  - config/rubocop.yml
247
247
  - config/yardstick.yml
248
+ - docs/commercial-support.md
248
249
  - docs/concurrency.md
249
250
  - docs/incremental.md
250
251
  - docs/known-problems.md
@@ -624,7 +625,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
624
625
  - !ruby/object:Gem::Version
625
626
  version: '0'
626
627
  requirements: []
627
- rubygems_version: 3.0.6
628
+ rubygems_version: 3.0.3
628
629
  signing_key:
629
630
  specification_version: 4
630
631
  summary: ''