mutant 0.8.24 → 0.9.0

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.
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)