mutant 0.8.24 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +3 -3
  3. data/Changelog.md +14 -654
  4. data/Gemfile +13 -0
  5. data/Gemfile.lock +59 -64
  6. data/LICENSE +271 -20
  7. data/README.md +73 -140
  8. data/Rakefile +0 -21
  9. data/bin/mutant +7 -2
  10. data/config/reek.yml +2 -1
  11. data/config/rubocop.yml +5 -9
  12. data/docs/incremental.md +76 -0
  13. data/docs/known-problems.md +0 -14
  14. data/docs/mutant-minitest.md +1 -1
  15. data/docs/mutant-rspec.md +2 -24
  16. data/lib/mutant.rb +45 -53
  17. data/lib/mutant/ast/nodes.rb +0 -2
  18. data/lib/mutant/ast/types.rb +1 -117
  19. data/lib/mutant/base.rb +192 -0
  20. data/lib/mutant/bootstrap.rb +145 -0
  21. data/lib/mutant/cli.rb +68 -54
  22. data/lib/mutant/config.rb +119 -6
  23. data/lib/mutant/env.rb +94 -8
  24. data/lib/mutant/expression.rb +6 -1
  25. data/lib/mutant/expression/parser.rb +9 -31
  26. data/lib/mutant/integration.rb +64 -36
  27. data/lib/mutant/isolation.rb +16 -1
  28. data/lib/mutant/isolation/fork.rb +105 -40
  29. data/lib/mutant/license.rb +34 -0
  30. data/lib/mutant/license/subscription.rb +47 -0
  31. data/lib/mutant/license/subscription/commercial.rb +57 -0
  32. data/lib/mutant/license/subscription/opensource.rb +77 -0
  33. data/lib/mutant/loader.rb +27 -4
  34. data/lib/mutant/matcher.rb +48 -1
  35. data/lib/mutant/matcher/chain.rb +1 -1
  36. data/lib/mutant/matcher/config.rb +0 -2
  37. data/lib/mutant/matcher/filter.rb +1 -1
  38. data/lib/mutant/matcher/method.rb +11 -7
  39. data/lib/mutant/matcher/methods.rb +1 -1
  40. data/lib/mutant/matcher/namespace.rb +1 -1
  41. data/lib/mutant/matcher/null.rb +1 -1
  42. data/lib/mutant/matcher/scope.rb +1 -1
  43. data/lib/mutant/meta/example/dsl.rb +0 -8
  44. data/lib/mutant/mutation.rb +1 -2
  45. data/lib/mutant/mutator/node.rb +2 -9
  46. data/lib/mutant/mutator/node/arguments.rb +1 -1
  47. data/lib/mutant/mutator/node/class.rb +0 -8
  48. data/lib/mutant/mutator/node/define.rb +0 -12
  49. data/lib/mutant/mutator/node/generic.rb +30 -44
  50. data/lib/mutant/mutator/node/index.rb +4 -4
  51. data/lib/mutant/mutator/node/literal/regex.rb +0 -39
  52. data/lib/mutant/mutator/node/send.rb +13 -12
  53. data/lib/mutant/parallel.rb +61 -40
  54. data/lib/mutant/parallel/driver.rb +59 -0
  55. data/lib/mutant/parallel/source.rb +6 -2
  56. data/lib/mutant/parallel/worker.rb +63 -45
  57. data/lib/mutant/range.rb +15 -0
  58. data/lib/mutant/reporter/cli.rb +5 -11
  59. data/lib/mutant/reporter/cli/format.rb +3 -46
  60. data/lib/mutant/reporter/cli/printer/config.rb +5 -6
  61. data/lib/mutant/reporter/cli/printer/env.rb +40 -0
  62. data/lib/mutant/reporter/cli/printer/env_progress.rb +13 -17
  63. data/lib/mutant/reporter/cli/printer/isolation_result.rb +17 -3
  64. data/lib/mutant/reporter/cli/printer/mutation_result.rb +2 -3
  65. data/lib/mutant/reporter/cli/printer/status_progressive.rb +19 -10
  66. data/lib/mutant/repository.rb +0 -65
  67. data/lib/mutant/repository/diff.rb +104 -0
  68. data/lib/mutant/repository/diff/ranges.rb +52 -0
  69. data/lib/mutant/result.rb +16 -7
  70. data/lib/mutant/runner.rb +38 -47
  71. data/lib/mutant/runner/sink.rb +1 -1
  72. data/lib/mutant/selector/null.rb +19 -0
  73. data/lib/mutant/subject.rb +3 -1
  74. data/lib/mutant/subject/method/instance.rb +3 -1
  75. data/lib/mutant/transform.rb +511 -0
  76. data/lib/mutant/variable.rb +282 -0
  77. data/lib/mutant/version.rb +1 -1
  78. data/lib/mutant/warnings.rb +113 -0
  79. data/meta/case.rb +1 -0
  80. data/meta/class.rb +0 -9
  81. data/meta/def.rb +1 -26
  82. data/meta/regexp.rb +10 -20
  83. data/meta/send.rb +14 -46
  84. data/mutant-minitest.gemspec +1 -1
  85. data/mutant-rspec.gemspec +2 -2
  86. data/mutant.gemspec +15 -16
  87. data/mutant.yml +6 -0
  88. data/spec/integration/mutant/isolation/fork_spec.rb +22 -5
  89. data/spec/integration/mutant/minitest_spec.rb +3 -2
  90. data/spec/integration/mutant/rspec_spec.rb +4 -3
  91. data/spec/integrations.yml +16 -13
  92. data/spec/shared/base_behavior.rb +45 -0
  93. data/spec/shared/framework_integration_behavior.rb +43 -14
  94. data/spec/spec_helper.rb +21 -17
  95. data/spec/support/corpus.rb +56 -95
  96. data/spec/support/shared_context.rb +37 -14
  97. data/spec/support/xspec.rb +7 -3
  98. data/spec/unit/mutant/bootstrap_spec.rb +216 -0
  99. data/spec/unit/mutant/cli_spec.rb +173 -117
  100. data/spec/unit/mutant/config_spec.rb +126 -0
  101. data/spec/unit/mutant/either_spec.rb +247 -0
  102. data/spec/unit/mutant/env_spec.rb +162 -40
  103. data/spec/unit/mutant/expression/method_spec.rb +16 -0
  104. data/spec/unit/mutant/expression/parser_spec.rb +29 -33
  105. data/spec/unit/mutant/expression_spec.rb +5 -7
  106. data/spec/unit/mutant/integration_spec.rb +100 -9
  107. data/spec/unit/mutant/isolation/fork_spec.rb +125 -67
  108. data/spec/unit/mutant/isolation/result_spec.rb +33 -1
  109. data/spec/unit/mutant/license_spec.rb +257 -0
  110. data/spec/unit/mutant/loader_spec.rb +50 -11
  111. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -78
  112. data/spec/unit/mutant/matcher/method/instance_spec.rb +55 -11
  113. data/spec/unit/mutant/matcher/method/singleton_spec.rb +12 -2
  114. data/spec/unit/mutant/matcher_spec.rb +102 -0
  115. data/spec/unit/mutant/maybe_spec.rb +60 -0
  116. data/spec/unit/mutant/meta/example/dsl_spec.rb +1 -17
  117. data/spec/unit/mutant/mutation_spec.rb +13 -6
  118. data/spec/unit/mutant/parallel/driver_spec.rb +112 -14
  119. data/spec/unit/mutant/parallel/source/array_spec.rb +25 -17
  120. data/spec/unit/mutant/parallel/worker_spec.rb +182 -44
  121. data/spec/unit/mutant/parallel_spec.rb +105 -8
  122. data/spec/unit/mutant/range_spec.rb +141 -0
  123. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +7 -21
  124. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +15 -6
  125. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +10 -2
  126. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +12 -4
  127. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +31 -2
  128. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +4 -4
  129. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +5 -0
  130. data/spec/unit/mutant/reporter/cli_spec.rb +46 -123
  131. data/spec/unit/mutant/repository/diff/ranges_spec.rb +180 -0
  132. data/spec/unit/mutant/repository/diff_spec.rb +84 -71
  133. data/spec/unit/mutant/require_highjack_spec.rb +1 -1
  134. data/spec/unit/mutant/result/env_spec.rb +39 -9
  135. data/spec/unit/mutant/result/test_spec.rb +14 -0
  136. data/spec/unit/mutant/runner_spec.rb +88 -41
  137. data/spec/unit/mutant/selector/expression_spec.rb +11 -10
  138. data/spec/unit/mutant/selector/null_spec.rb +17 -0
  139. data/spec/unit/mutant/subject/method/instance_spec.rb +44 -5
  140. data/spec/unit/mutant/subject/method/singleton_spec.rb +9 -2
  141. data/spec/unit/mutant/subject_spec.rb +9 -1
  142. data/spec/unit/mutant/transform/array_spec.rb +92 -0
  143. data/spec/unit/mutant/transform/bool_spec.rb +63 -0
  144. data/spec/unit/mutant/transform/error_spec.rb +132 -0
  145. data/spec/unit/mutant/transform/exception_spec.rb +44 -0
  146. data/spec/unit/mutant/transform/hash_spec.rb +236 -0
  147. data/spec/unit/mutant/transform/index_spec.rb +92 -0
  148. data/spec/unit/mutant/transform/named_spec.rb +49 -0
  149. data/spec/unit/mutant/transform/primitive_spec.rb +56 -0
  150. data/spec/unit/mutant/transform/sequence_spec.rb +98 -0
  151. data/spec/unit/mutant/variable_spec.rb +618 -0
  152. data/spec/unit/mutant/warnings_spec.rb +89 -0
  153. data/spec/unit/mutant/world_spec.rb +63 -0
  154. data/test_app/Gemfile.minitest +0 -2
  155. metadata +79 -113
  156. data/.gitattributes +0 -1
  157. data/.ruby-gemset +0 -1
  158. data/config/triage.yml +0 -2
  159. data/lib/mutant/actor.rb +0 -57
  160. data/lib/mutant/actor/env.rb +0 -31
  161. data/lib/mutant/actor/mailbox.rb +0 -34
  162. data/lib/mutant/actor/receiver.rb +0 -42
  163. data/lib/mutant/actor/sender.rb +0 -26
  164. data/lib/mutant/ast/meta/restarg.rb +0 -19
  165. data/lib/mutant/ast/regexp.rb +0 -42
  166. data/lib/mutant/ast/regexp/transformer.rb +0 -187
  167. data/lib/mutant/ast/regexp/transformer/direct.rb +0 -123
  168. data/lib/mutant/ast/regexp/transformer/named_group.rb +0 -59
  169. data/lib/mutant/ast/regexp/transformer/options_group.rb +0 -83
  170. data/lib/mutant/ast/regexp/transformer/quantifier.rb +0 -114
  171. data/lib/mutant/ast/regexp/transformer/recursive.rb +0 -58
  172. data/lib/mutant/ast/regexp/transformer/root.rb +0 -31
  173. data/lib/mutant/ast/regexp/transformer/text.rb +0 -60
  174. data/lib/mutant/env/bootstrap.rb +0 -160
  175. data/lib/mutant/matcher/compiler.rb +0 -60
  176. data/lib/mutant/mutator/node/regexp.rb +0 -35
  177. data/lib/mutant/mutator/node/regexp/alternation_meta.rb +0 -23
  178. data/lib/mutant/mutator/node/regexp/capture_group.rb +0 -28
  179. data/lib/mutant/mutator/node/regexp/character_type.rb +0 -32
  180. data/lib/mutant/mutator/node/regexp/end_of_line_anchor.rb +0 -23
  181. data/lib/mutant/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb +0 -23
  182. data/lib/mutant/mutator/node/regexp/greedy_zero_or_more.rb +0 -27
  183. data/lib/mutant/parallel/master.rb +0 -181
  184. data/lib/mutant/reporter/cli/printer/status.rb +0 -53
  185. data/lib/mutant/reporter/cli/tput.rb +0 -46
  186. data/lib/mutant/warning_filter.rb +0 -61
  187. data/meta/regexp/character_types.rb +0 -23
  188. data/meta/regexp/regexp_alternation_meta.rb +0 -13
  189. data/meta/regexp/regexp_bol_anchor.rb +0 -10
  190. data/meta/regexp/regexp_bos_anchor.rb +0 -18
  191. data/meta/regexp/regexp_capture_group.rb +0 -19
  192. data/meta/regexp/regexp_eol_anchor.rb +0 -10
  193. data/meta/regexp/regexp_eos_anchor.rb +0 -8
  194. data/meta/regexp/regexp_eos_ob_eol_anchor.rb +0 -10
  195. data/meta/regexp/regexp_greedy_zero_or_more.rb +0 -12
  196. data/meta/regexp/regexp_root_expression.rb +0 -10
  197. data/meta/restarg.rb +0 -10
  198. data/spec/support/fake_actor.rb +0 -111
  199. data/spec/support/warning.rb +0 -66
  200. data/spec/unit/mutant/actor/binding_spec.rb +0 -34
  201. data/spec/unit/mutant/actor/env_spec.rb +0 -31
  202. data/spec/unit/mutant/actor/mailbox_spec.rb +0 -28
  203. data/spec/unit/mutant/actor/message_spec.rb +0 -25
  204. data/spec/unit/mutant/actor/receiver_spec.rb +0 -58
  205. data/spec/unit/mutant/actor/sender_spec.rb +0 -24
  206. data/spec/unit/mutant/ast/regexp/parse_spec.rb +0 -19
  207. data/spec/unit/mutant/ast/regexp/transformer/lookup_table/table_spec.rb +0 -21
  208. data/spec/unit/mutant/ast/regexp/transformer/lookup_table_spec.rb +0 -35
  209. data/spec/unit/mutant/ast/regexp/transformer_spec.rb +0 -21
  210. data/spec/unit/mutant/ast/regexp_spec.rb +0 -704
  211. data/spec/unit/mutant/env/bootstrap_spec.rb +0 -188
  212. data/spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb +0 -26
  213. data/spec/unit/mutant/parallel/master_spec.rb +0 -338
  214. data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +0 -121
  215. data/spec/unit/mutant/reporter/cli/tput_spec.rb +0 -50
  216. data/spec/unit/mutant/warning_filter_spec.rb +0 -106
  217. data/spec/unit/mutant_spec.rb +0 -17
  218. data/test_app/Gemfile.rspec3.7 +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd93463f0b9eb83512dc15c039e8fd58d7bba5715bbdffc2a39a8a8ad380d317
4
- data.tar.gz: b0ed77d675e680fffdf7d90a7c5b8656aa4ba139226d45d3a728d468e5c3c92a
3
+ metadata.gz: 6e9289e21c711435b21d02a17ed24ccdd084eea6ff1562c2f96fc7ed898c6af1
4
+ data.tar.gz: 930f03c76551cdd0887aeb661835c8b5ec4597344132a57b48ce21f426892999
5
5
  SHA512:
6
- metadata.gz: aaa7a56cc2dbdcab8748d7eb07bf7b64c8ad616bff18d51b89018812a88bcb43fb99487e8241ed52fb96ae3a3ed61c0e67b39ec559863f265b66cbf933189dbf
7
- data.tar.gz: 0c6884921c5cf564d7155e0e3a8edf6163f637200540ab51fe044d4b5a14e783f083ddcdcd8aafbc71278f737e78a95ea0728389b6162d35e3db24a499d5ca46
6
+ metadata.gz: 4d744106f328779f86c7ee3b49e08a83510c400345bb41c9f22b989fe4b7c74afa9b246b768bc8356d760cb091c96f91e6d97bcfdf074df4fb4265597c827332
7
+ data.tar.gz: f9e252adfb3edd063de29ee628bd044c359dc7ebb441b3f4f31a6d1751281f52689a7360e06b14bd0db9b71d242c0973b723844649e5f7d6785c542ea53811ea
@@ -1,7 +1,7 @@
1
1
  defaults: &defaults
2
2
  working_directory: ~/mutant
3
3
  docker:
4
- - image: circleci/ruby:2.5.3
4
+ - image: circleci/ruby:2.6.0
5
5
  version: 2
6
6
  jobs:
7
7
  unit_specs:
@@ -9,7 +9,7 @@ jobs:
9
9
  steps:
10
10
  - checkout
11
11
  - run: bundle install
12
- - run: bundle exec rspec spec/unit
12
+ - run: bundle exec rspec spec/unit spec/integration/mutant/test_mutator_handles_types_spec.rb
13
13
  integration_minitest:
14
14
  <<: *defaults
15
15
  steps:
@@ -40,7 +40,7 @@ jobs:
40
40
  steps:
41
41
  - checkout
42
42
  - run: bundle install
43
- - run: bundle exec rake metrics:mutant
43
+ - run: bundle exec mutant --jobs 4 --since HEAD~1 --zombie -- 'Mutant*'
44
44
  workflows:
45
45
  version: 2
46
46
  test:
@@ -1,3 +1,16 @@
1
+ # v0.9.0
2
+
3
+ * New license.
4
+ * Fix mutations to void value expressions to not be reported as integration error.
5
+ * Remove regexp body mutations
6
+ * Remove restarg mutations
7
+ * Remove support for rspec-3.{4,5,6}
8
+
9
+ # v0.8.25 2018-12-31
10
+
11
+ * Change to {I,M}Var based concurrency
12
+ * Remove actors
13
+
1
14
  # v0.8.24 2018-12-29
2
15
 
3
16
  * Change to always insert mutations with frozen string literals
@@ -21,657 +34,4 @@
21
34
 
22
35
  * Replace internal timers with monotonic ones.
23
36
 
24
- # v0.8.19 2018-11-06
25
-
26
- * Drop support for Ruby < 2.5
27
- * Fix bug when mutating a module that includes Memoizable
28
-
29
- # v0.8.18 2018-10-24
30
-
31
- * Add support for regexp unicode print nodes https://github.com/mbj/mutant/pull/749
32
-
33
- # v0.8.17 2018-09-12
34
-
35
- * Drop support for Ruby < 2.3
36
- * Use frozen string literals globally
37
- * Update to parser ~> 2.5
38
-
39
- # v0.8.16 2018-08-03
40
-
41
- * Support for rspec-3.x
42
-
43
- # v0.8.15 2018-07-17
44
-
45
- * Fix boot time issue
46
- * Support for rspec-3.7
47
-
48
- # v0.8.14 2017-07-06
49
-
50
- * Support ruby 2.4 #719
51
-
52
- # v0.8.13 2017-06-01
53
-
54
- * Allow empty match expressions on CLI
55
- * Add support for rspec-3.6 by @krzysiek150
56
- * Add support for configurable corpus glob exprssions by @jekuta
57
-
58
- # v0.8.12 2016-10-17
59
-
60
- * Add mutation from `/foo|bar/` to `/foo/` and `/bar/`
61
- * Add mutation from `/$/` to `/\z/`
62
- * Add mutation from `/\h/` to `/\H/`
63
- * Add mutation from `/\H/` to `/\h/`
64
- * Add mutation from `/\Z/` to `/\z/`
65
- * Add mutation from `flat_map` to `map`
66
- * Add mutation from `/(foo)/` to `/(?:foo)/`
67
- * Add mutation from `/a*/` to `/a+/`
68
- * Add mutation from `/a*/` to `/a/`
69
- * Add mutation from `!!foo` to `foo`
70
- * Add mutation from `proc { }` to `lambda { }`
71
-
72
- # v0.8.11 2016-08-01
73
-
74
- * Add support for rspec-3.5
75
- * Remove misleading `--debug` option
76
- * Remove misleading `--expect-coverage` option
77
- * Add basic support for regexp mutations (machinery and simple anchor mutations)
78
- * Add support for mutating csend (duck tape operator) into regular sends
79
- * Add mutation from `foo&.bar` to `foo.bar`
80
- * Add mutation from `#to_a` to `#to_set`
81
- * Add mutation from `foo.dig(a, b)` to `foo.fetch(a).dig(b)`
82
- * Add mutation from `def foo(bar:); end` to `def foo(_bar:); end`
83
- * Add mutation from `def foo(bar: baz); end` to `def foo(_bar: baz); end`
84
- * Add mutation from `/regex/i` to `/regex/`
85
- * Add mutation from `foo[n..-1]` to `foo.drop(n)`
86
- * Add mutation from `/^/` to `/\A/`
87
- * Add mutation from `#first` to `#last`
88
- * Add mutation from `#last` to `#first`
89
- * Add mutation from `#sample` to `#first` and `#last`
90
- * Remove mutations from `1..n` to `1..(0.0 / 0.0)` and `1..(1.0 / 0.0)`
91
-
92
- # v0.8.10 2016-01-24
93
-
94
- * Add support for parser 2.3 (via unparser 0.2.5)
95
-
96
- # v0.8.9 2016-01-05
97
-
98
- * Add mutation from `Hash#[]` to `Hash#key?` (#511)
99
- * Add mutation from `Hash#fetch` to `Hash#key?` (#511)
100
- * Add mutation from `#at` to `#key?` (#511)
101
- * Add mutation from `Hash#values_at` to `Hash#fetch_values` (#510)
102
-
103
- # v0.8.8 2015-11-15
104
-
105
- * Drop support for rspec-3.2
106
- * Remove CI specific job number default
107
- * Add support for rspec-3.3.4
108
- * Add mutations/s performance metric to report
109
-
110
- # v0.8.7 2015-10-30
111
-
112
- * Fix blackliting regexp to correctly match the String `(eval)` absolutely.
113
-
114
- # v0.8.6. 2015-10-27
115
-
116
- * Add mutation from `Date.parse` to more strict parsing methods #448
117
- * Add mutation from `foo.to_i` to `Integer(foo)` #455
118
- * Add mutation from `@foo` to `foo` #454
119
-
120
- # v0.8.5 2015-09-11
121
-
122
- * Fix misimplementation of block gluing operator that
123
- as side effect could also cause invalid AST crashes
124
-
125
- # v0.8.4 2015-09-10
126
-
127
- * Add mutation from `a != b` to `!a.eql?(b)` and `!a.equal?(b)` #417
128
- * Add mutation `A.const_get(:B)` -> `A::B` #426
129
- * Add mutation `def foo(*args); end` into `def foo(*args); args = []; end` #423
130
- * Add mutation from `foo.baz { bar }` to `foo.bar` #416
131
- * Update anima dependency to 0.3.0
132
-
133
- # v0.8.3 2015-09-01
134
-
135
- * Remove invalid mutation `super(...)` to `super`
136
- * Add mutation from `def foo(a = true); end` to `def foo(a = true); a = true; end` #419
137
- * Add mutation from `def foo; end` to `remove_method :foo` #413
138
-
139
- # v0.8.2 2015-08-11
140
-
141
- * Remove invalid mutation `foo or bar` to `!(foo or bar)` see #287
142
- * Add mutation from `#to_h` to `#to_hash` #218
143
- * Add mutation from `super` to `super()` #309
144
- * Add mutation from `#defined?` to `true` / `false` #399
145
- * Reduce framed (multiline) progress reporter noise
146
- * Fix a bug where killfork pipes where not properly closed
147
-
148
- # v0.8.1 2015-07-24
149
-
150
- * Add --since flag to constrain mutated subjects based on
151
- repository diff from HEAD to other REVISON.
152
- * Add mutation from #[] to #at / #fetch
153
- * Some internal improvements
154
-
155
- # v0.8.0 2015-06-15
156
-
157
- * Drop support for ruby < 2.1
158
- * Remove broken `--code` option
159
- * Remove deprecated `--score` option
160
- * Add support for rspec-3.3
161
- * End support for rspec-3.{0,1}
162
- * Internal quality improvements
163
-
164
- # v0.7.9 2015-05-30
165
-
166
- * Deprecate `--score` flag replace with `--expected-coverage`
167
- * Set default job count to 4 under CI environments.
168
- * Relax parser dependency to ~>2.2.2
169
-
170
- # v0.7.8 2015-03-8
171
-
172
- * Kill imperfect float rounding for exact coverage expectations.
173
-
174
- # v0.7.7 2015-02-15
175
-
176
- * Add support for rspec-3.2
177
-
178
- # v0.7.6 2015-01-25
179
-
180
- * Fix crash on using the null integration.
181
-
182
- # v0.7.5 2015-01-14
183
-
184
- * Bump deps to support MRI 2.2.
185
-
186
- # v0.7.4 2014-12-22
187
-
188
- * Fix rspec example visibility on duplicate metadata examples [#279](https://github.com/mbj/mutant/issues/279).
189
- * Add naked if/else body emitter [#280](https://github.com/mbj/mutant/issues/280).
190
-
191
- # v0.7.3 2014-12-09
192
-
193
- * Fix communication between workers and killforks to work for all binaries.
194
-
195
- # v0.7.2 2014-12-08
196
-
197
- * Fix synthetic race conditon in actor implementation
198
- * Fix progressive reporter slowdown
199
-
200
- # v0.7.1 2014-12-04
201
-
202
- * Fix invalid dependencies on rspec for mutant-rspec
203
-
204
- # v0.7.0 2014-12-04
205
-
206
- * Use homegrown actor based parallelization
207
- * Fix redundant spec execution in rspec integration
208
- * Add mutation from `#send` to `#__send__` (the canonical form).
209
-
210
- # v0.6.7 2014-11-17
211
-
212
- * Fix duplicate neutral emit for memoized instance method subjects
213
- * Fix neutral error detection edge cases
214
-
215
- # v0.6.6 2014-11-11
216
-
217
- * Fix emitter to recurse into left and right of binary nodes.
218
-
219
- # v0.6.5 2014-10-28
220
-
221
- * Fix killforks not to leak zombies.
222
-
223
- # v0.6.4 2014-10-27
224
-
225
- * Do not buffer report prints, speedup large report generation.
226
- * Fix some cases where --fail-fast semantics stopped far to late.
227
- * Fix crashing / stuckage from using parallel in a nested way.
228
-
229
- # v0.6.3 2014-09-22
230
-
231
- * Add support for rspec-3.1.
232
-
233
- # v0.6.2 2014-09-16
234
-
235
- * Fix matcher to ignore metaprogrammed defines [#254](https://github.com/mbj/mutant/issues/254)
236
- * Add rescue resbody body concat-promotion mutation
237
- * Add rescue else body concat-promotion mutation #245
238
-
239
- # v0.6.1 2014-09-16
240
-
241
- * Incorrectly released on partial state. Yanked.
242
-
243
- # v0.6.0 2014-08-11
244
-
245
- * Parallel execution / reporting.
246
- * Add -j, --jobs flag to control concurrency.
247
- * Fix blind spots on send with block.
248
- * Add mutation from `foo { bar }` to `bar`
249
- * Add mutation from `#reverse_merge` to `#merge`
250
- * Add mutation from `#<=` to `#<`, `#==`, `#eql?`, `#equal?`
251
- * Add mutation from `#>=` to `#>`, `#==`, `#eql?`, `#equal?`
252
- * Add mutation from `#>` to `#==`, `#eql?`, `#equal?`
253
- * Add mutation from `#<` to `#==`, `#eql?`, `#equal?`
254
- * Fix reporting of diff errors to include context [tjchambers]
255
-
256
- # v0.5.26 2014-07-07
257
-
258
- * Fix exceptions generation matcher errors
259
- * Fix report generation with formatted string as payload of diffs.
260
-
261
- # v0.5.25 2014-07-07
262
-
263
- * Make ordering of subjects and tests deterministic
264
- * Fix performance of subject selection
265
- * Improve noop and neutral reporting.
266
- * Rename noop mutations to neutral mutations
267
- * Simplify code nuked around 1kloc.
268
-
269
- # v0.5.24 2014-06-30
270
-
271
- * Fix invalid AST on op_assign mutations
272
- * Make subject matching result order deterministic
273
- * Improve internals a bit for more consistency.
274
- * Add instance methods expression 'Foo#'
275
- * Add singleton methods expression 'Foo.'
276
- * Split rspec2 and rspec3 integration with minimal duplication
277
- * Move test matching outside of integrations.
278
-
279
- # v0.5.23 2014-06-15
280
-
281
- * Propagate exceptions from child-isolation-killforks to master
282
-
283
- # v0.5.22 2014-06-15
284
-
285
- * Fix invalid AST generation on operator method mutation with self as receiver.
286
-
287
- # v0.5.21 2014-06-15
288
-
289
- * Readd mutation of index assignments
290
- * Remove a bunch of useless mutations to nil.something
291
- * Readd mutation of index reference arguments
292
-
293
- # v0.5.20 2014-06-14
294
-
295
- * Remove support for matchers prefixed with ::
296
- * Fix cases where mutated source diff was empty #198
297
- * Fix mutate to simpler primitive violation break to next #203
298
- * Improve integration / corpus tests to spot highlevel regressions on CI level.
299
-
300
- * Remove support for matchers prefixed with ::
301
-
302
- # v0.5.19 2014-06-06
303
-
304
- Changes:
305
-
306
- * Do not emit more powerful rescue matchers #183
307
- * Do not emit more powerful loop control #201
308
-
309
- # v0.5.18 2014-06-04
310
-
311
- Changes:
312
-
313
- * Do not rename lhs of or assigns when lhs is a ivasgn. Closes #150
314
-
315
- # v0.5.17 2014-05-27
316
-
317
- Changes:
318
-
319
- * Report selected tests in progress runner
320
- * Fix scope of rspec selections to include meaningful parents.
321
- * Add short circuits on already dead mutations under multiple test selections.
322
-
323
- # v0.5.16 2014-05-27
324
-
325
- Changes:
326
-
327
- * Fix granularity of test selection under rspec
328
- * Add mutation from [item] to item
329
- * Add mutation from #reverse_each to #each
330
- * Add mutation from #reverse_map to #each, #map
331
- * Add mutation from #map to #each
332
-
333
- # v0.5.15 2014-05-24
334
-
335
- Changes:
336
-
337
- * Put isolation pipe into binmode
338
-
339
- Changes:
340
-
341
- * Add support for rspec-3.0.0.rc1
342
- * Remove some senseless rescue mutations
343
-
344
- # v0.5.13 2014-05-23
345
-
346
- Changes:
347
-
348
- * Improve reporting of isolation problems
349
- * Centralize test selection
350
- * Report selected tests
351
- * Report rspec output on noop failures
352
- * Silence warnings on methods without source location
353
-
354
- # v0.5.12 2014-05-09
355
-
356
- Changes:
357
-
358
- * Remove pointless mutation nil => Object.new
359
-
360
- # v0.5.11 2014-04-22
361
-
362
- Changes:
363
-
364
- * Fix crash on while and until without body
365
- * Better require highjack based zombifier
366
- * Do not mutate nthref $1 to gvar $0
367
- * Use faster duplicate guarding hashing AST::Node instances
368
- * Fix lots of shadowed invalid ASTs
369
- * Fix undefine initialize warnings, Closes #175
370
-
371
- # v0.5.10 2014-04-06
372
-
373
- Changes:
374
-
375
- * Fix crash on case without conditional
376
- * Remove dependency to descendants tracker
377
- * Add mutation #== => #eql?, #equal?
378
- * Add mutation #eql? => #equal?
379
-
380
- # v0.5.9 2014-03-28
381
-
382
- Changes:
383
-
384
- * Fix mutation of memoized methods with the memoizable gem.
385
-
386
- # v0.5.8 2014-03-26
387
-
388
- Changes:
389
-
390
- * Fix crash on Module#name and Class#name returning non Strings
391
-
392
- # v0.5.7 2014-03-23
393
-
394
- Changes:
395
-
396
- * Fix crash on invalid partial AST unparsing, closes: #164
397
-
398
- # v0.5.6 2014-03-09
399
-
400
- Changes:
401
-
402
- * Correctly specifiy diff-lcs dependency
403
-
404
- # v0.5.5 2014-03-09
405
-
406
- Changes:
407
-
408
- * Morpher dependency bump
409
-
410
- # v0.5.4 2014-03-08
411
-
412
- Changes:
413
-
414
- * Morpher dependency bump
415
-
416
- # v0.5.3 2014-03-05
417
-
418
- Changes:
419
-
420
- * mutant-rspec now supports rspec3 beta
421
-
422
- # v0.5.2 2014-03-04
423
-
424
- Changes:
425
-
426
- * Use parser 2.1.6 that has its own Parser::Meta::NODE_LIST
427
-
428
- # v0.5.1 2014-03-03
429
-
430
- Changes:
431
-
432
- * Remove rspec dep from main mutant gem
433
-
434
- # v0.5.0 2014-03-02
435
-
436
- Changes:
437
-
438
- * Add configurable coverage expectation via --coverage (default 100%)
439
- * rspec integration was moved into a gem 'mutant-rspec'
440
- * Replace filters implementation with morpher predicates
441
- * Drop --rspec option use: --use rspec instead.
442
-
443
- # v0.4.0 2014-02-16
444
-
445
- Status: Yanked because of broken dependencies.
446
-
447
- # v0.3.4 2014-01-11
448
-
449
- Changes:
450
-
451
- * Depend on anima-0.2.0
452
-
453
- # v0.3.4 2014-01-11
454
-
455
- Bugfixes:
456
-
457
- * Correctly fix crash on attribute assignments nodes: https://github.com/mbj/mutant/issues/149
458
-
459
- # v0.3.3 2014-01-11
460
-
461
- Changes:
462
-
463
- * Bump dependency to unparser-0.1.8 that fixes dozens of non reported issues.
464
-
465
- Bugfixes:
466
-
467
- * Fix crash on attribute assignments nodes: https://github.com/mbj/mutant/issues/149
468
-
469
- # v0.3.2 2013-12-31
470
-
471
- Bugfixes:
472
-
473
- * Fix crash on until nodes: https://github.com/mbj/mutant/issues/143
474
- * Fix missing requires: https://github.com/mbj/mutant/issues/141
475
- * Fix crash on unknown nodes, fixes #143
476
- * Use more durable unparser version 0.1.6
477
-
478
- # v0.3.1 2013-12-19
479
-
480
- Bugfixes:
481
-
482
- * Add missing require of stringio, #141
483
-
484
- # v0.3.0 2013-12-10
485
-
486
- Feature:
487
-
488
- * Rewrite all mutators on top of whitequark/parser (major!)
489
- * Also mutate conditions in case statements
490
- * Add tons of mutators I lost track about during development.
491
- * Add --ignore-subject optoin supporting the same syntax as matchers
492
-
493
- Bugfixes:
494
-
495
- * Fix lots of crashes.
496
- * Fix all known multiple diff errors
497
- * Handle methods memoized with adamantium correctly
498
-
499
- Bugfixes:
500
-
501
- * Fix all bugs caused by mutant-melbourne
502
-
503
- # v0.2.20 2013-03-01
504
-
505
- * Update dependencies
506
-
507
- [Compare v0.2.17..v0.2.20](https://github.com/mbj/mutant/compare/v0.2.17...v0.2.20)
508
-
509
- # v0.2.17 2013-01-20
510
-
511
- * Kill mutations in #initialize from class methods.
512
-
513
- # v0.2.17 2013-01-20
514
-
515
- Other:
516
-
517
- * Update dependencies
518
-
519
- [Compare v0.2.16..v0.2.17](https://github.com/mbj/mutant/compare/v0.2.16...v0.2.17)
520
-
521
- # v0.2.16 2013-01-20
522
-
523
- Bugfix:
524
-
525
- * Handle Rubinius::AST::NthRef as noop
526
-
527
- [Compare v0.2.15..v0.2.16](https://github.com/mbj/mutant/compare/v0.2.15...v0.2.16)
528
-
529
- # v0.2.15 2013-01-10
530
-
531
- Bugfix:
532
-
533
- * Do not mutate super to super() anymore. This needs a context check in future.
534
-
535
- [Compare v0.2.14..v0.2.15](https://github.com/mbj/mutant/compare/v0.2.14...v0.2.15)
536
-
537
- # v0.2.14 2013-01-09
538
-
539
- Bugfix:
540
-
541
- * Do not emit mutation to { nil => nil } for hash literals
542
-
543
- [Compare v0.2.13..v0.2.14](https://github.com/mbj/mutant/compare/v0.2.13...v0.2.14)
544
-
545
- # v0.2.13 2013-01-09
546
-
547
- Bugfix:
548
-
549
- * Capture failures that occur in the window between mutation insertion and spec run as kills
550
-
551
- [Compare v0.2.12..v0.2.13](https://github.com/mbj/mutant/compare/v0.2.12...v0.2.13)
552
-
553
- # v0.2.12 2013-01-03
554
-
555
- Bugfix:
556
-
557
- * Do not crash when trying to load methods from precompiled ruby under rbx
558
-
559
- [Compare v0.2.11..v0.2.12](https://github.com/mbj/mutant/compare/v0.2.11...v0.2.12)
560
-
561
- # v0.2.11 2013-01-03
562
-
563
- Feature:
564
-
565
- * Handle binary operator methods in dedicated mutator
566
-
567
- Bugfix:
568
-
569
- * Do not crash when mutating binary operator method
570
-
571
- [Compare v0.2.10..v0.2.11](https://github.com/mbj/mutant/compare/v0.2.10...v0.2.11)
572
-
573
- # v0.2.10 2013-01-03
574
-
575
- Bugfix:
576
-
577
- * Do not mutate receivers away when message name is a keyword
578
-
579
- [Compare v0.2.9..v0.2.10](https://github.com/mbj/mutant/compare/v0.2.9...v0.2.10)
580
-
581
- # v0.2.9 2013-01-02
582
-
583
- Feature:
584
-
585
- * Mutate instance and global variable assignments
586
- * Mutate super calls
587
-
588
- [Compare v0.2.8..v0.2.9](https://github.com/mbj/mutant/compare/v0.2.8...v0.2.9)
589
-
590
- # v0.2.8 2012-12-29
591
-
592
- Feature:
593
-
594
- * Do not mutate argument or local variable names beginning with an underscore
595
- * Mutate unary calls ```coerce(object)``` => ```object```
596
- * Mutate method call receivers ```foo.bar``` => ```foo```
597
-
598
- [Compare v0.2.7..v0.2.8](https://github.com/mbj/mutant/compare/v0.2.7...v0.2.8)
599
-
600
- # v0.2.7 2012-12-21
601
-
602
- Feature:
603
-
604
- * Use latest adamantium and ice_nine
605
-
606
- [Compare v0.2.6..v0.2.7](https://github.com/mbj/mutant/compare/v0.2.6...v0.2.7)
607
-
608
- # v0.2.6 2012-12-14
609
-
610
- Bugfix:
611
-
612
- * Correctly set file and line of injected mutants
613
-
614
- [Compare v0.2.5..v0.2.6](https://github.com/mbj/mutant/compare/v0.2.5...v0.2.6)
615
-
616
- # v0.2.5 2012-12-12
617
-
618
- Feature:
619
-
620
- * Add --debug flag for showing killer output and mutation
621
- * Run noop mutation per subject to guard against initial failing specs
622
- * Mutate default into required arguments
623
- * Mutate default literals
624
- * Mutate unwinding of pattern args ```|(a, b), c|``` => ```|a, b, c|```
625
- * Mutate define and block arguments
626
- * Mutate block arguments, inklusive pattern args
627
- * Recurse into block bodies
628
- * Unvendor inflector use mbj-inflector from rubygems
629
-
630
- Bugfix:
631
-
632
- * Insert mutations at correct constant scope
633
- * Crash on mutating yield, added a noop for now
634
- * Crash on singleton methods defined on other than constants or self
635
-
636
- [Compare v0.2.4..v0.2.5](https://github.com/mbj/mutant/compare/v0.2.4...v0.2.5)
637
-
638
- # v0.2.4 2012-12-12
639
-
640
- Bugfix:
641
-
642
- * Correctly vendor inflector
643
-
644
- [Compare v0.2.3..v0.2.4](https://github.com/mbj/mutant/compare/v0.2.3...v0.2.4)
645
-
646
- # v0.2.3 2012-12-08
647
-
648
- Bugfix:
649
-
650
- * Prepend extra elements to hash and array instead of append. This fixes unkillable mutators in parallel assignments!
651
-
652
- [Compare v0.2.2..v0.2.3](https://github.com/mbj/mutant/compare/v0.2.2...v0.2.3)
653
-
654
- # v0.2.2 2012-12-07
655
-
656
- Feature:
657
-
658
- * Add a shitload of operator expansions for dm2 strategy
659
-
660
- [Compare v0.2.1..v0.2.2](https://github.com/mbj/mutant/compare/v0.2.1...v0.2.2)
661
-
662
- # v0.2.1 2012-12-07
663
-
664
- Bugfix:
665
-
666
- * Crash on unavailable source location
667
- * Incorrect handling of if and unless statements
668
- * Expand Foo#initialize to spec/unit/foo in rspec dm2 strategy
669
- * Correctly expand [] to element_reader_spec.rb in rspec dm2 strategy
670
- * Correctly expand []= to element_writer_spec.rb in rspec dm2 strategy
671
- * Correctly expand foo= to foo_writer_spec.rb in rspec dm2 strategy
672
-
673
- [Compare v0.2.0..v0.2.1](https://github.com/mbj/mutant/compare/v0.2.0...v0.2.1)
674
-
675
- # v0.2.0 2012-12-07
676
-
677
- First public release!
37
+ Find older changelogs in the project [history](https://github.com/mbj/mutant/blob/84d119fe49ebad51b213cb08285b95e6e7c4fab6/Changelog.md#v0821-2018-12-03)