mutant 0.9.9 → 0.9.10

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: 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