mutant 0.9.9 → 0.9.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6e6e125d0e2736934ed481945e35eada9a1b8fffaf05641a5410a2ed25b9b20
4
- data.tar.gz: 13e2b48cbc500aab1ef792ccbaff86de593337f7213bdcf7d0d81afa21e7a641
3
+ metadata.gz: 45484c558fad8e5115eb2b4c45712b762eb1d13f12fe7e7a29d9ec0696a16e24
4
+ data.tar.gz: 5354afd8cf7491687dfef3af68157e37cc549a0190d09bb8755c8bcf33d24051
5
5
  SHA512:
6
- metadata.gz: 7a3bfbaffad39ee2bc7cf41a07c19031704c26c7d05ba9b3f07d59d3b82965311c0822aec10ab359570fc8c3d3235f36d461fbe39cddb6349997b2b8bd0fa5d3
7
- data.tar.gz: a1caa7e5f3318001137239c613ddd50bdeabe981fa132f4e9e5a383019a24a53075da121b290e98dcb61c93a1900f79f8e1207ce7ac282d049b2af0351b26e64
6
+ metadata.gz: 1546be8318d6135d2834120bcc3052b879d6568560a9ec5dd056448a46cdd240fede609a4336fb5e64937526aa2db64627285c70dc45b09aa0175d6abc471749
7
+ data.tar.gz: b8705cb2eb82b286d77ea87a17af903661747cfad61d3e51fcc70b1f906bcf47b07e33305810f1d59cc4f3d2e802b5eae20e0ce4ecf37b686c2fd73e1bc41933
@@ -17,7 +17,7 @@ jobs:
17
17
  strategy:
18
18
  fail-fast: false
19
19
  matrix:
20
- ruby: ['2.6', '2.7']
20
+ ruby: ['2.5', '2.6', '2.7']
21
21
  os: [ubuntu-latest]
22
22
  steps:
23
23
  - uses: actions/checkout@v2
@@ -55,7 +55,7 @@ jobs:
55
55
  strategy:
56
56
  fail-fast: false
57
57
  matrix:
58
- ruby: ['2.6', '2.7']
58
+ ruby: ['2.5', '2.6', '2.7']
59
59
  os: [ubuntu-latest]
60
60
  steps:
61
61
  - uses: actions/checkout@v2
@@ -74,7 +74,7 @@ jobs:
74
74
  strategy:
75
75
  fail-fast: false
76
76
  matrix:
77
- ruby: ['2.6', '2.7']
77
+ ruby: ['2.5', '2.6', '2.7']
78
78
  os: [ubuntu-latest]
79
79
  steps:
80
80
  - uses: actions/checkout@v2
@@ -92,7 +92,7 @@ jobs:
92
92
  strategy:
93
93
  fail-fast: false
94
94
  matrix:
95
- ruby: ['2.6', '2.7']
95
+ ruby: ['2.5', '2.6', '2.7']
96
96
  os: [ubuntu-latest]
97
97
  steps:
98
98
  - uses: actions/checkout@v2
@@ -118,4 +118,4 @@ jobs:
118
118
  with:
119
119
  ruby-version: ${{ matrix.ruby }}
120
120
  - run: bundle install
121
- - run: bundle exec rake metrics:rubocop
121
+ - run: bundle exec rubocop
@@ -5,3 +5,206 @@ AllCops:
5
5
  - 'tmp/**/*'
6
6
  - 'vendor/**/*'
7
7
  TargetRubyVersion: 2.5
8
+
9
+ # Avoid parameter lists longer than five parameters.
10
+ ParameterLists:
11
+ Max: 3
12
+ CountKeywordArgs: true
13
+
14
+ # Avoid more than `Max` levels of nesting.
15
+ BlockNesting:
16
+ Max: 3
17
+
18
+ # Align with the style guide.
19
+ CollectionMethods:
20
+ Enabled: true
21
+ PreferredMethods:
22
+ collect: 'map'
23
+ inject: 'reduce'
24
+ find: 'detect'
25
+ find_all: 'select'
26
+
27
+ AccessModifierIndentation:
28
+ Enabled: false
29
+
30
+ # Limit line length
31
+ LineLength:
32
+ Max: 120
33
+
34
+ # Disable documentation checking until a class needs to be documented once
35
+ Documentation:
36
+ Enabled: false
37
+
38
+ # Permit
39
+ #
40
+ # boolean_check? or fail
41
+ #
42
+ # Reject
43
+ #
44
+ # if foo or bar
45
+ # ...
46
+ # end
47
+ AndOr:
48
+ EnforcedStyle: conditionals
49
+
50
+ # Do not favor modifier if/unless usage when you have a single-line body
51
+ IfUnlessModifier:
52
+ Enabled: false
53
+
54
+ # Allow case equality operator (in limited use within the specs)
55
+ CaseEquality:
56
+ Enabled: false
57
+
58
+ # Constants do not always have to use SCREAMING_SNAKE_CASE
59
+ ConstantName:
60
+ Enabled: false
61
+
62
+ # Not all trivial readers/writers can be defined with attr_* methods
63
+ TrivialAccessors:
64
+ Enabled: false
65
+
66
+ # Allow empty lines around class body
67
+ EmptyLinesAroundClassBody:
68
+ Enabled: false
69
+
70
+ # Allow empty lines around module body
71
+ EmptyLinesAroundModuleBody:
72
+ Enabled: false
73
+
74
+ # Allow empty lines around block body
75
+ EmptyLinesAroundBlockBody:
76
+ Enabled: false
77
+
78
+ # Allow multiple line operations to not require indentation
79
+ MultilineOperationIndentation:
80
+ Enabled: false
81
+
82
+ # Prefer String#% over Kernel#sprintf
83
+ FormatString:
84
+ EnforcedStyle: percent
85
+
86
+ # Use square brackets for literal Array objects
87
+ PercentLiteralDelimiters:
88
+ PreferredDelimiters:
89
+ '%': '{}'
90
+ '%i': '[]'
91
+ '%q': ()
92
+ '%Q': ()
93
+ '%r': '{}'
94
+ '%s': ()
95
+ '%w': '[]'
96
+ '%W': '[]'
97
+ '%x': ()
98
+
99
+ # Use %i[...] for arrays of symbols
100
+ SymbolArray:
101
+ Enabled: true
102
+
103
+ # Prefer #kind_of? over #is_a?
104
+ ClassCheck:
105
+ EnforcedStyle: kind_of?
106
+
107
+ # Do not prefer double quotes to be used when %q or %Q is more appropriate
108
+ Style/RedundantPercentQ:
109
+ Enabled: false
110
+
111
+ # Allow a maximum ABC score
112
+ Metrics/AbcSize:
113
+ Max: 21.02
114
+
115
+ Metrics/BlockLength:
116
+ Exclude:
117
+ - 'spec/**/*.rb'
118
+ - 'mutant.gemspec'
119
+
120
+ # Buggy cop, returns false positive for our code base
121
+ NonLocalExitFromIterator:
122
+ Enabled: false
123
+
124
+ # To allow alignment of similar expressions we want to allow more than one
125
+ # space around operators:
126
+ #
127
+ # let(:a) { bar + something }
128
+ # let(:b) { foobar + something }
129
+ #
130
+ SpaceAroundOperators:
131
+ Enabled: false
132
+
133
+ # We use parallel assignments with great success
134
+ ParallelAssignment:
135
+ Enabled: false
136
+
137
+ # Allow additional specs
138
+ ExtraSpacing:
139
+ AllowForAlignment: true
140
+
141
+ # Buggy
142
+ FormatParameterMismatch:
143
+ Enabled: false
144
+
145
+ # Different preference
146
+ SignalException:
147
+ EnforcedStyle: semantic
148
+
149
+ # Do not use `alias`
150
+ Alias:
151
+ EnforcedStyle: prefer_alias_method
152
+
153
+ # Do not waste my horizontal or vertical space
154
+ Layout/FirstArrayElementIndentation:
155
+ Enabled: false
156
+
157
+ # Prefer
158
+ #
159
+ # some_receiver
160
+ # .foo
161
+ # .bar
162
+ # .baz
163
+ #
164
+ # Over
165
+ #
166
+ # some_receiver.foo
167
+ # .bar
168
+ # .baz
169
+ MultilineMethodCallIndentation:
170
+ EnforcedStyle: indented
171
+
172
+ # Prefer `public_send` and `__send__` over `send`
173
+ Send:
174
+ Enabled: true
175
+
176
+ Layout/HashAlignment:
177
+ EnforcedColonStyle: table
178
+ EnforcedHashRocketStyle: table
179
+ Layout/EmptyLineAfterGuardClause:
180
+ Enabled: false
181
+ Layout/SpaceInsideArrayLiteralBrackets:
182
+ Enabled: false
183
+ Lint/BooleanSymbol:
184
+ Enabled: false
185
+ Lint/InterpolationCheck:
186
+ Enabled: false
187
+ Lint/MissingCopEnableDirective:
188
+ Enabled: false
189
+ Lint/UnifiedInteger:
190
+ Enabled: false
191
+ Naming/FileName:
192
+ Enabled: false
193
+ Style/AccessModifierDeclarations:
194
+ Enabled: false
195
+ Style/CommentedKeyword:
196
+ Enabled: false
197
+ Style/MixinGrouping:
198
+ Enabled: false
199
+ Style/RaiseArgs:
200
+ Enabled: false
201
+ Style/RescueStandardError:
202
+ Enabled: false
203
+ Style/StderrPuts:
204
+ Enabled: false
205
+ # suggesting single letter variablesl bah
206
+ Naming/RescuedExceptionsVariableName:
207
+ Enabled: false
208
+ # false positive on private keywords
209
+ Layout/IndentationWidth:
210
+ Enabled: false
@@ -1,3 +1,9 @@
1
+ # v0.9.10 unreleased
2
+
3
+ * Remove bounds to allow `diff-lcs 1.4.x` [#1032](https://github.com/mbj/mutant/pull/1032).
4
+ * Fix crash on endless ranges [#1026](https://github.com/mbj/mutant/pull/1026).
5
+ * Fix memoized subjects to preserve freezer option [#973](https://github.com/mbj/mutant/pull/973).
6
+
1
7
  # v0.9.9 2020-09-25
2
8
 
3
9
  + Add support for mutating methods inside eigenclasses `class <<`. [#1009](https://github.com/mbj/mutant/pull/1009)
@@ -1,20 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mutant (0.9.8)
4
+ mutant (0.9.10)
5
5
  abstract_type (~> 0.0.7)
6
6
  adamantium (~> 0.2.0)
7
7
  anima (~> 0.3.1)
8
8
  ast (~> 2.2)
9
9
  concord (~> 0.1.5)
10
- diff-lcs (= 1.3)
10
+ diff-lcs (~> 1.3)
11
11
  equalizer (~> 0.0.9)
12
12
  ice_nine (~> 0.11.1)
13
13
  memoizable (~> 0.4.2)
14
14
  mprelude (~> 0.1.0)
15
15
  parser (~> 2.7.1)
16
16
  procto (~> 0.0.2)
17
- unparser (~> 0.4.6)
17
+ unparser (~> 0.4.8)
18
18
  variable (~> 0.0.1)
19
19
 
20
20
  GEM
@@ -30,53 +30,13 @@ GEM
30
30
  adamantium (~> 0.2)
31
31
  equalizer (~> 0.0.11)
32
32
  ast (2.4.1)
33
- axiom-types (0.1.1)
34
- descendants_tracker (~> 0.0.4)
35
- ice_nine (~> 0.11.0)
36
- thread_safe (~> 0.3, >= 0.3.1)
37
- codeclimate-engine-rb (0.4.1)
38
- virtus (~> 1.0)
39
- coercible (1.0.0)
40
- descendants_tracker (~> 0.0.1)
41
33
  concord (0.1.5)
42
34
  adamantium (~> 0.2.0)
43
35
  equalizer (~> 0.0.9)
44
- descendants_tracker (0.0.4)
45
- thread_safe (~> 0.3, >= 0.3.1)
46
- devtools (0.1.26)
47
- abstract_type (~> 0.0.7)
48
- adamantium (~> 0.2.0)
49
- anima (~> 0.3.0)
50
- concord (~> 0.1.5)
51
- flay (~> 2.12.0)
52
- flog (~> 4.6.2)
53
- procto (~> 0.0.3)
54
- rake (~> 12.3.0)
55
- reek (~> 5.6.0)
56
- rspec (~> 3.8.0)
57
- rspec-core (~> 3.8.0)
58
- rspec-its (~> 1.2.0)
59
- rubocop (~> 0.79.0)
60
- simplecov (~> 0.16.1)
61
- yard (~> 0.9.16)
62
- yardstick (~> 0.9.9)
63
- diff-lcs (1.3)
64
- docile (1.3.2)
36
+ diff-lcs (1.4.4)
65
37
  equalizer (0.0.11)
66
- erubis (2.7.0)
67
- flay (2.12.1)
68
- erubis (~> 2.7.0)
69
- path_expander (~> 1.0)
70
- ruby_parser (~> 3.0)
71
- sexp_processor (~> 4.0)
72
- flog (4.6.4)
73
- path_expander (~> 1.0)
74
- ruby_parser (~> 3.1, > 3.1.0)
75
- sexp_processor (~> 4.8)
76
38
  ice_nine (0.11.2)
77
39
  jaro_winkler (1.5.4)
78
- json (2.3.1)
79
- kwalify (0.7.2)
80
40
  memoizable (0.4.2)
81
41
  thread_safe (~> 0.3, >= 0.3.1)
82
42
  mprelude (0.1.0)
@@ -90,33 +50,24 @@ GEM
90
50
  parallel (1.19.2)
91
51
  parser (2.7.1.4)
92
52
  ast (~> 2.4.1)
93
- path_expander (1.1.0)
94
53
  procto (0.0.3)
95
- psych (3.1.0)
96
54
  rainbow (3.0.0)
97
- rake (12.3.3)
98
- reek (5.6.0)
99
- codeclimate-engine-rb (~> 0.4.0)
100
- kwalify (~> 0.7.0)
101
- parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
102
- psych (~> 3.1.0)
103
- rainbow (>= 2.0, < 4.0)
104
- rspec (3.8.0)
105
- rspec-core (~> 3.8.0)
106
- rspec-expectations (~> 3.8.0)
107
- rspec-mocks (~> 3.8.0)
108
- rspec-core (3.8.2)
109
- rspec-support (~> 3.8.0)
110
- rspec-expectations (3.8.6)
55
+ rspec (3.9.0)
56
+ rspec-core (~> 3.9.0)
57
+ rspec-expectations (~> 3.9.0)
58
+ rspec-mocks (~> 3.9.0)
59
+ rspec-core (3.9.2)
60
+ rspec-support (~> 3.9.3)
61
+ rspec-expectations (3.9.2)
111
62
  diff-lcs (>= 1.2.0, < 2.0)
112
- rspec-support (~> 3.8.0)
63
+ rspec-support (~> 3.9.0)
113
64
  rspec-its (1.2.0)
114
65
  rspec-core (>= 3.0.0)
115
66
  rspec-expectations (>= 3.0.0)
116
- rspec-mocks (3.8.2)
67
+ rspec-mocks (3.9.1)
117
68
  diff-lcs (>= 1.2.0, < 2.0)
118
- rspec-support (~> 3.8.0)
119
- rspec-support (3.8.3)
69
+ rspec-support (~> 3.9.0)
70
+ rspec-support (3.9.3)
120
71
  rubocop (0.79.0)
121
72
  jaro_winkler (~> 1.5.1)
122
73
  parallel (~> 1.10)
@@ -125,43 +76,32 @@ GEM
125
76
  ruby-progressbar (~> 1.7)
126
77
  unicode-display_width (>= 1.4.0, < 1.7)
127
78
  ruby-progressbar (1.10.1)
128
- ruby_parser (3.14.2)
129
- sexp_processor (~> 4.9)
130
- sexp_processor (4.15.0)
131
- simplecov (0.16.1)
132
- docile (~> 1.1)
133
- json (>= 1.8, < 3)
134
- simplecov-html (~> 0.10.0)
135
- simplecov-html (0.10.2)
136
79
  thread_safe (0.3.6)
137
80
  unicode-display_width (1.6.1)
138
- unparser (0.4.7)
81
+ unparser (0.4.8)
139
82
  abstract_type (~> 0.0.7)
140
83
  adamantium (~> 0.2.0)
84
+ anima (~> 0.3.1)
141
85
  concord (~> 0.1.5)
142
86
  diff-lcs (~> 1.3)
143
87
  equalizer (~> 0.0.9)
88
+ mprelude (~> 0.1.0)
144
89
  parser (>= 2.6.5)
145
90
  procto (~> 0.0.2)
146
91
  variable (0.0.1)
147
92
  equalizer (~> 0.0.11)
148
- virtus (1.0.5)
149
- axiom-types (~> 0.1)
150
- coercible (~> 1.0)
151
- descendants_tracker (~> 0.0, >= 0.0.3)
152
- equalizer (~> 0.0, >= 0.0.9)
153
- yard (0.9.25)
154
- yardstick (0.9.9)
155
- yard (~> 0.8, >= 0.8.7.2)
156
93
 
157
94
  PLATFORMS
158
95
  ruby
159
96
 
160
97
  DEPENDENCIES
161
- devtools (~> 0.1.25)
162
98
  mutant!
163
99
  mutant-license!
164
100
  parallel (~> 1.3)
101
+ rspec (~> 3.9)
102
+ rspec-core (~> 3.9)
103
+ rspec-its (~> 1.2.0)
104
+ rubocop (~> 0.79.0)
165
105
 
166
106
  BUNDLED WITH
167
- 2.1.2
107
+ 2.1.4
data/README.md CHANGED
@@ -41,12 +41,33 @@ would be.
41
41
 
42
42
  ## Ruby Versions
43
43
 
44
- Mutant currently only works on cRuby/MRI. Starting with version 2.5.x. It supports all syntax features up to and
45
- including Ruby 2.6.
44
+ Mutant supports multiple ruby versions at different levels. The levels arge staged:
46
45
 
47
- Support for 2.7 syntax features is pending, see unparser issue: https://github.com/mbj/unparser/issues/129.
46
+ * Runtime, indicates mutant can execute on a specific Ruby Version / implementation.
47
+ * Syntax, depends on Runtime support, and indicates syntax new to that Ruby version can be used.
48
+ * Mutations, depends on Syntax support, and indicates syntax new to that Ruby verison is being analysed.
48
49
 
49
- Mutant will work under Ruby 2.7 just fine, unless a 2.7 syntax feature is used. This will be resolved shortly.
50
+ Supported indicates if a specific Ruby version / Implementation is actively supported. Which means:
51
+
52
+ * New releases will only be done if all tests pass on supported Ruby versions / implementations.
53
+ * New features will be available.
54
+
55
+ | Implementation | Version | Runtime | Syntax | Mutations | Supported |
56
+ | -------------- | -------------- | ------- | ------------------ | ------------------ | ------------------ |
57
+ | cRUBY/MRI | 2.5 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
58
+ | cRUBY/MRI | 2.6 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
59
+ | cRUBY/MRI | 2.7 | :heavy_check_mark: | :soon: | :soon: | :heavy_check_mark: |
60
+ | jruby | TBD | :email: | :email: | :email: | :email: |
61
+ | mruby | TBD | :email: | :email: | :email: | :email: |
62
+ | cRUBY/MRI | < 2.5 | :no_entry: | :no_entry: | :no_entry: | :no_entry: |
63
+
64
+
65
+ Labels:
66
+
67
+ * :heavy_check_mark: Supported.
68
+ * :soon: Active work in progress.
69
+ * :email: Planned, please contact me on interest.
70
+ * :no_entry: Not being planned, or considered, still contact me on interest.
50
71
 
51
72
  ## Licensing
52
73