658 lines
16 KiB
Markdown
658 lines
16 KiB
Markdown
# v0.8.20 2018-11-27
|
|
|
|
* Replace internal timers with monotonic ones.
|
|
|
|
# v0.8.19 2018-11-06
|
|
|
|
* Drop support for Ruby < 2.5
|
|
* Fix bug when mutating a module that includes Memoizable
|
|
|
|
# v0.8.18 2018-10-24
|
|
|
|
* Add support for regexp unicode print nodes https://github.com/mbj/mutant/pull/749
|
|
|
|
# v0.8.17 2018-09-12
|
|
|
|
* Drop support for Ruby < 2.3
|
|
* Use frozen string literals globally
|
|
* Update to parser ~> 2.5
|
|
|
|
# v0.8.16 2018-08-03
|
|
|
|
* Support for rspec-3.x
|
|
|
|
# v0.8.15 2018-07-17
|
|
|
|
* Fix boot time issue
|
|
* Support for rspec-3.7
|
|
|
|
# v0.8.14 2017-07-06
|
|
|
|
* Support ruby 2.4 #719
|
|
|
|
# v0.8.13 2017-06-01
|
|
|
|
* Allow empty match expressions on CLI
|
|
* Add support for rspec-3.6 by @krzysiek150
|
|
* Add support for configurable corpus glob exprssions by @jekuta
|
|
|
|
# v0.8.12 2016-10-17
|
|
|
|
* Add mutation from `/foo|bar/` to `/foo/` and `/bar/`
|
|
* Add mutation from `/$/` to `/\z/`
|
|
* Add mutation from `/\h/` to `/\H/`
|
|
* Add mutation from `/\H/` to `/\h/`
|
|
* Add mutation from `/\Z/` to `/\z/`
|
|
* Add mutation from `flat_map` to `map`
|
|
* Add mutation from `/(foo)/` to `/(?:foo)/`
|
|
* Add mutation from `/a*/` to `/a+/`
|
|
* Add mutation from `/a*/` to `/a/`
|
|
* Add mutation from `!!foo` to `foo`
|
|
* Add mutation from `proc { }` to `lambda { }`
|
|
|
|
# v0.8.11 2016-08-01
|
|
|
|
* Add support for rspec-3.5
|
|
* Remove misleading `--debug` option
|
|
* Remove misleading `--expect-coverage` option
|
|
* Add basic support for regexp mutations (machinery and simple anchor mutations)
|
|
* Add support for mutating csend (duck tape operator) into regular sends
|
|
* Add mutation from `foo&.bar` to `foo.bar`
|
|
* Add mutation from `#to_a` to `#to_set`
|
|
* Add mutation from `foo.dig(a, b)` to `foo.fetch(a).dig(b)`
|
|
* Add mutation from `def foo(bar:); end` to `def foo(_bar:); end`
|
|
* Add mutation from `def foo(bar: baz); end` to `def foo(_bar: baz); end`
|
|
* Add mutation from `/regex/i` to `/regex/`
|
|
* Add mutation from `foo[n..-1]` to `foo.drop(n)`
|
|
* Add mutation from `/^/` to `/\A/`
|
|
* Add mutation from `#first` to `#last`
|
|
* Add mutation from `#last` to `#first`
|
|
* Add mutation from `#sample` to `#first` and `#last`
|
|
* Remove mutations from `1..n` to `1..(0.0 / 0.0)` and `1..(1.0 / 0.0)`
|
|
|
|
# v0.8.10 2016-01-24
|
|
|
|
* Add support for parser 2.3 (via unparser 0.2.5)
|
|
|
|
# v0.8.9 2016-01-05
|
|
|
|
* Add mutation from `Hash#[]` to `Hash#key?` (#511)
|
|
* Add mutation from `Hash#fetch` to `Hash#key?` (#511)
|
|
* Add mutation from `#at` to `#key?` (#511)
|
|
* Add mutation from `Hash#values_at` to `Hash#fetch_values` (#510)
|
|
|
|
# v0.8.8 2015-11-15
|
|
|
|
* Drop support for rspec-3.2
|
|
* Remove CI specific job number default
|
|
* Add support for rspec-3.3.4
|
|
* Add mutations/s performance metric to report
|
|
|
|
# v0.8.7 2015-10-30
|
|
|
|
* Fix blackliting regexp to correctly match the String `(eval)` absolutely.
|
|
|
|
# v0.8.6. 2015-10-27
|
|
|
|
* Add mutation from `Date.parse` to more strict parsing methods #448
|
|
* Add mutation from `foo.to_i` to `Integer(foo)` #455
|
|
* Add mutation from `@foo` to `foo` #454
|
|
|
|
# v0.8.5 2015-09-11
|
|
|
|
* Fix misimplementation of block gluing operator that
|
|
as side effect could also cause invalid AST crashes
|
|
|
|
# v0.8.4 2015-09-10
|
|
|
|
* Add mutation from `a != b` to `!a.eql?(b)` and `!a.equal?(b)` #417
|
|
* Add mutation `A.const_get(:B)` -> `A::B` #426
|
|
* Add mutation `def foo(*args); end` into `def foo(*args); args = []; end` #423
|
|
* Add mutation from `foo.baz { bar }` to `foo.bar` #416
|
|
* Update anima dependency to 0.3.0
|
|
|
|
# v0.8.3 2015-09-01
|
|
|
|
* Remove invalid mutation `super(...)` to `super`
|
|
* Add mutation from `def foo(a = true); end` to `def foo(a = true); a = true; end` #419
|
|
* Add mutation from `def foo; end` to `remove_method :foo` #413
|
|
|
|
# v0.8.2 2015-08-11
|
|
|
|
* Remove invalid mutation `foo or bar` to `!(foo or bar)` see #287
|
|
* Add mutation from `#to_h` to `#to_hash` #218
|
|
* Add mutation from `super` to `super()` #309
|
|
* Add mutation from `#defined?` to `true` / `false` #399
|
|
* Reduce framed (multiline) progress reporter noise
|
|
* Fix a bug where killfork pipes where not properly closed
|
|
|
|
# v0.8.1 2015-07-24
|
|
|
|
* Add --since flag to constrain mutated subjects based on
|
|
repository diff from HEAD to other REVISON.
|
|
* Add mutation from #[] to #at / #fetch
|
|
* Some internal improvements
|
|
|
|
# v0.8.0 2015-06-15
|
|
|
|
* Drop support for ruby < 2.1
|
|
* Remove broken `--code` option
|
|
* Remove deprecated `--score` option
|
|
* Add support for rspec-3.3
|
|
* End support for rspec-3.{0,1}
|
|
* Internal quality improvements
|
|
|
|
# v0.7.9 2015-05-30
|
|
|
|
* Deprecate `--score` flag replace with `--expected-coverage`
|
|
* Set default job count to 4 under CI environments.
|
|
* Relax parser dependency to ~>2.2.2
|
|
|
|
# v0.7.8 2015-03-8
|
|
|
|
* Kill imperfect float rounding for exact coverage expectations.
|
|
|
|
# v0.7.7 2015-02-15
|
|
|
|
* Add support for rspec-3.2
|
|
|
|
# v0.7.6 2015-01-25
|
|
|
|
* Fix crash on using the null integration.
|
|
|
|
# v0.7.5 2015-01-14
|
|
|
|
* Bump deps to support MRI 2.2.
|
|
|
|
# v0.7.4 2014-12-22
|
|
|
|
* Fix rspec example visibility on duplicate metadata examples [#279](https://github.com/mbj/mutant/issues/279).
|
|
* Add naked if/else body emitter [#280](https://github.com/mbj/mutant/issues/280).
|
|
|
|
# v0.7.3 2014-12-09
|
|
|
|
* Fix communication between workers and killforks to work for all binaries.
|
|
|
|
# v0.7.2 2014-12-08
|
|
|
|
* Fix synthetic race conditon in actor implementation
|
|
* Fix progressive reporter slowdown
|
|
|
|
# v0.7.1 2014-12-04
|
|
|
|
* Fix invalid dependencies on rspec for mutant-rspec
|
|
|
|
# v0.7.0 2014-12-04
|
|
|
|
* Use homegrown actor based parallelization
|
|
* Fix redundant spec execution in rspec integration
|
|
* Add mutation from `#send` to `#__send__` (the canonical form).
|
|
|
|
# v0.6.7 2014-11-17
|
|
|
|
* Fix duplicate neutral emit for memoized instance method subjects
|
|
* Fix neutral error detection edge cases
|
|
|
|
# v0.6.6 2014-11-11
|
|
|
|
* Fix emitter to recurse into left and right of binary nodes.
|
|
|
|
# v0.6.5 2014-10-28
|
|
|
|
* Fix killforks not to leak zombies.
|
|
|
|
# v0.6.4 2014-10-27
|
|
|
|
* Do not buffer report prints, speedup large report generation.
|
|
* Fix some cases where --fail-fast semantics stopped far to late.
|
|
* Fix crashing / stuckage from using parallel in a nested way.
|
|
|
|
# v0.6.3 2014-09-22
|
|
|
|
* Add support for rspec-3.1.
|
|
|
|
# v0.6.2 2014-09-16
|
|
|
|
* Fix matcher to ignore metaprogrammed defines [#254](https://github.com/mbj/mutant/issues/254)
|
|
* Add rescue resbody body concat-promotion mutation
|
|
* Add rescue else body concat-promotion mutation #245
|
|
|
|
# v0.6.1 2014-09-16
|
|
|
|
* Incorrectly released on partial state. Yanked.
|
|
|
|
# v0.6.0 2014-08-11
|
|
|
|
* Parallel execution / reporting.
|
|
* Add -j, --jobs flag to control concurrency.
|
|
* Fix blind spots on send with block.
|
|
* Add mutation from `foo { bar }` to `bar`
|
|
* Add mutation from `#reverse_merge` to `#merge`
|
|
* Add mutation from `#<=` to `#<`, `#==`, `#eql?`, `#equal?`
|
|
* Add mutation from `#>=` to `#>`, `#==`, `#eql?`, `#equal?`
|
|
* Add mutation from `#>` to `#==`, `#eql?`, `#equal?`
|
|
* Add mutation from `#<` to `#==`, `#eql?`, `#equal?`
|
|
* Fix reporting of diff errors to include context [tjchambers]
|
|
|
|
# v0.5.26 2014-07-07
|
|
|
|
* Fix exceptions generation matcher errors
|
|
* Fix report generation with formatted string as payload of diffs.
|
|
|
|
# v0.5.25 2014-07-07
|
|
|
|
* Make ordering of subjects and tests deterministic
|
|
* Fix performance of subject selection
|
|
* Improve noop and neutral reporting.
|
|
* Rename noop mutations to neutral mutations
|
|
* Simplify code nuked around 1kloc.
|
|
|
|
# v0.5.24 2014-06-30
|
|
|
|
* Fix invalid AST on op_assign mutations
|
|
* Make subject matching result order deterministic
|
|
* Improve internals a bit for more consistency.
|
|
* Add instance methods expression 'Foo#'
|
|
* Add singleton methods expression 'Foo.'
|
|
* Split rspec2 and rspec3 integration with minimal duplication
|
|
* Move test matching outside of integrations.
|
|
|
|
# v0.5.23 2014-06-15
|
|
|
|
* Propagate exceptions from child-isolation-killforks to master
|
|
|
|
# v0.5.22 2014-06-15
|
|
|
|
* Fix invalid AST generation on operator method mutation with self as receiver.
|
|
|
|
# v0.5.21 2014-06-15
|
|
|
|
* Readd mutation of index assignments
|
|
* Remove a bunch of useless mutations to nil.something
|
|
* Readd mutation of index reference arguments
|
|
|
|
# v0.5.20 2014-06-14
|
|
|
|
* Remove support for matchers prefixed with ::
|
|
* Fix cases where mutated source diff was empty #198
|
|
* Fix mutate to simpler primitive violation break to next #203
|
|
* Improve integration / corpus tests to spot highlevel regressions on CI level.
|
|
|
|
* Remove support for matchers prefixed with ::
|
|
|
|
# v0.5.19 2014-06-06
|
|
|
|
Changes:
|
|
|
|
* Do not emit more powerful rescue matchers #183
|
|
* Do not emit more powerful loop control #201
|
|
|
|
# v0.5.18 2014-06-04
|
|
|
|
Changes:
|
|
|
|
* Do not rename lhs of or assigns when lhs is a ivasgn. Closes #150
|
|
|
|
# v0.5.17 2014-05-27
|
|
|
|
Changes:
|
|
|
|
* Report selected tests in progress runner
|
|
* Fix scope of rspec selections to include meaningful parents.
|
|
* Add short circuits on already dead mutations under multiple test selections.
|
|
|
|
# v0.5.16 2014-05-27
|
|
|
|
Changes:
|
|
|
|
* Fix granularity of test selection under rspec
|
|
* Add mutation from [item] to item
|
|
* Add mutation from #reverse_each to #each
|
|
* Add mutation from #reverse_map to #each, #map
|
|
* Add mutation from #map to #each
|
|
|
|
# v0.5.15 2014-05-24
|
|
|
|
Changes:
|
|
|
|
* Put isolation pipe into binmode
|
|
|
|
Changes:
|
|
|
|
* Add support for rspec-3.0.0.rc1
|
|
* Remove some senseless rescue mutations
|
|
|
|
# v0.5.13 2014-05-23
|
|
|
|
Changes:
|
|
|
|
* Improve reporting of isolation problems
|
|
* Centralize test selection
|
|
* Report selected tests
|
|
* Report rspec output on noop failures
|
|
* Silence warnings on methods without source location
|
|
|
|
# v0.5.12 2014-05-09
|
|
|
|
Changes:
|
|
|
|
* Remove pointless mutation nil => Object.new
|
|
|
|
# v0.5.11 2014-04-22
|
|
|
|
Changes:
|
|
|
|
* Fix crash on while and until without body
|
|
* Better require highjack based zombifier
|
|
* Do not mutate nthref $1 to gvar $0
|
|
* Use faster duplicate guarding hashing AST::Node instances
|
|
* Fix lots of shadowed invalid ASTs
|
|
* Fix undefine initialize warnings, Closes #175
|
|
|
|
# v0.5.10 2014-04-06
|
|
|
|
Changes:
|
|
|
|
* Fix crash on case without conditional
|
|
* Remove dependency to descendants tracker
|
|
* Add mutation #== => #eql?, #equal?
|
|
* Add mutation #eql? => #equal?
|
|
|
|
# v0.5.9 2014-03-28
|
|
|
|
Changes:
|
|
|
|
* Fix mutation of memoized methods with the memoizable gem.
|
|
|
|
# v0.5.8 2014-03-26
|
|
|
|
Changes:
|
|
|
|
* Fix crash on Module#name and Class#name returning non Strings
|
|
|
|
# v0.5.7 2014-03-23
|
|
|
|
Changes:
|
|
|
|
* Fix crash on invalid partial AST unparsing, closes: #164
|
|
|
|
# v0.5.6 2014-03-09
|
|
|
|
Changes:
|
|
|
|
* Correctly specifiy diff-lcs dependency
|
|
|
|
# v0.5.5 2014-03-09
|
|
|
|
Changes:
|
|
|
|
* Morpher dependency bump
|
|
|
|
# v0.5.4 2014-03-08
|
|
|
|
Changes:
|
|
|
|
* Morpher dependency bump
|
|
|
|
# v0.5.3 2014-03-05
|
|
|
|
Changes:
|
|
|
|
* mutant-rspec now supports rspec3 beta
|
|
|
|
# v0.5.2 2014-03-04
|
|
|
|
Changes:
|
|
|
|
* Use parser 2.1.6 that has its own Parser::Meta::NODE_LIST
|
|
|
|
# v0.5.1 2014-03-03
|
|
|
|
Changes:
|
|
|
|
* Remove rspec dep from main mutant gem
|
|
|
|
# v0.5.0 2014-03-02
|
|
|
|
Changes:
|
|
|
|
* Add configurable coverage expectation via --coverage (default 100%)
|
|
* rspec integration was moved into a gem 'mutant-rspec'
|
|
* Replace filters implementation with morpher predicates
|
|
* Drop --rspec option use: --use rspec instead.
|
|
|
|
# v0.4.0 2014-02-16
|
|
|
|
Status: Yanked because of broken dependencies.
|
|
|
|
# v0.3.4 2014-01-11
|
|
|
|
Changes:
|
|
|
|
* Depend on anima-0.2.0
|
|
|
|
# v0.3.4 2014-01-11
|
|
|
|
Bugfixes:
|
|
|
|
* Correctly fix crash on attribute assignments nodes: https://github.com/mbj/mutant/issues/149
|
|
|
|
# v0.3.3 2014-01-11
|
|
|
|
Changes:
|
|
|
|
* Bump dependency to unparser-0.1.8 that fixes dozens of non reported issues.
|
|
|
|
Bugfixes:
|
|
|
|
* Fix crash on attribute assignments nodes: https://github.com/mbj/mutant/issues/149
|
|
|
|
# v0.3.2 2013-12-31
|
|
|
|
Bugfixes:
|
|
|
|
* Fix crash on until nodes: https://github.com/mbj/mutant/issues/143
|
|
* Fix missing requires: https://github.com/mbj/mutant/issues/141
|
|
* Fix crash on unknown nodes, fixes #143
|
|
* Use more durable unparser version 0.1.6
|
|
|
|
# v0.3.1 2013-12-19
|
|
|
|
Bugfixes:
|
|
|
|
* Add missing require of stringio, #141
|
|
|
|
# v0.3.0 2013-12-10
|
|
|
|
Feature:
|
|
|
|
* Rewrite all mutators on top of whitequark/parser (major!)
|
|
* Also mutate conditions in case statements
|
|
* Add tons of mutators I lost track about during development.
|
|
* Add --ignore-subject optoin supporting the same syntax as matchers
|
|
|
|
Bugfixes:
|
|
|
|
* Fix lots of crashes.
|
|
* Fix all known multiple diff errors
|
|
* Handle methods memoized with adamantium correctly
|
|
|
|
Bugfixes:
|
|
|
|
* Fix all bugs caused by mutant-melbourne
|
|
|
|
# v0.2.20 2013-03-01
|
|
|
|
* Update dependencies
|
|
|
|
[Compare v0.2.17..v0.2.20](https://github.com/mbj/mutant/compare/v0.2.17...v0.2.20)
|
|
|
|
# v0.2.17 2013-01-20
|
|
|
|
* Kill mutations in #initialize from class methods.
|
|
|
|
# v0.2.17 2013-01-20
|
|
|
|
Other:
|
|
|
|
* Update dependencies
|
|
|
|
[Compare v0.2.16..v0.2.17](https://github.com/mbj/mutant/compare/v0.2.16...v0.2.17)
|
|
|
|
# v0.2.16 2013-01-20
|
|
|
|
Bugfix:
|
|
|
|
* Handle Rubinius::AST::NthRef as noop
|
|
|
|
[Compare v0.2.15..v0.2.16](https://github.com/mbj/mutant/compare/v0.2.15...v0.2.16)
|
|
|
|
# v0.2.15 2013-01-10
|
|
|
|
Bugfix:
|
|
|
|
* Do not mutate super to super() anymore. This needs a context check in future.
|
|
|
|
[Compare v0.2.14..v0.2.15](https://github.com/mbj/mutant/compare/v0.2.14...v0.2.15)
|
|
|
|
# v0.2.14 2013-01-09
|
|
|
|
Bugfix:
|
|
|
|
* Do not emit mutation to { nil => nil } for hash literals
|
|
|
|
[Compare v0.2.13..v0.2.14](https://github.com/mbj/mutant/compare/v0.2.13...v0.2.14)
|
|
|
|
# v0.2.13 2013-01-09
|
|
|
|
Bugfix:
|
|
|
|
* Capture failures that occur in the window between mutation insertion and spec run as kills
|
|
|
|
[Compare v0.2.12..v0.2.13](https://github.com/mbj/mutant/compare/v0.2.12...v0.2.13)
|
|
|
|
# v0.2.12 2013-01-03
|
|
|
|
Bugfix:
|
|
|
|
* Do not crash when trying to load methods from precompiled ruby under rbx
|
|
|
|
[Compare v0.2.11..v0.2.12](https://github.com/mbj/mutant/compare/v0.2.11...v0.2.12)
|
|
|
|
# v0.2.11 2013-01-03
|
|
|
|
Feature:
|
|
|
|
* Handle binary operator methods in dedicated mutator
|
|
|
|
Bugfix:
|
|
|
|
* Do not crash when mutating binary operator method
|
|
|
|
[Compare v0.2.10..v0.2.11](https://github.com/mbj/mutant/compare/v0.2.10...v0.2.11)
|
|
|
|
# v0.2.10 2013-01-03
|
|
|
|
Bugfix:
|
|
|
|
* Do not mutate receivers away when message name is a keyword
|
|
|
|
[Compare v0.2.9..v0.2.10](https://github.com/mbj/mutant/compare/v0.2.9...v0.2.10)
|
|
|
|
# v0.2.9 2013-01-02
|
|
|
|
Feature:
|
|
|
|
* Mutate instance and global variable assignments
|
|
* Mutate super calls
|
|
|
|
[Compare v0.2.8..v0.2.9](https://github.com/mbj/mutant/compare/v0.2.8...v0.2.9)
|
|
|
|
# v0.2.8 2012-12-29
|
|
|
|
Feature:
|
|
|
|
* Do not mutate argument or local variable names beginning with an underscore
|
|
* Mutate unary calls ```coerce(object)``` => ```object```
|
|
* Mutate method call receivers ```foo.bar``` => ```foo```
|
|
|
|
[Compare v0.2.7..v0.2.8](https://github.com/mbj/mutant/compare/v0.2.7...v0.2.8)
|
|
|
|
# v0.2.7 2012-12-21
|
|
|
|
Feature:
|
|
|
|
* Use latest adamantium and ice_nine
|
|
|
|
[Compare v0.2.6..v0.2.7](https://github.com/mbj/mutant/compare/v0.2.6...v0.2.7)
|
|
|
|
# v0.2.6 2012-12-14
|
|
|
|
Bugfix:
|
|
|
|
* Correctly set file and line of injected mutants
|
|
|
|
[Compare v0.2.5..v0.2.6](https://github.com/mbj/mutant/compare/v0.2.5...v0.2.6)
|
|
|
|
# v0.2.5 2012-12-12
|
|
|
|
Feature:
|
|
|
|
* Add --debug flag for showing killer output and mutation
|
|
* Run noop mutation per subject to guard against initial failing specs
|
|
* Mutate default into required arguments
|
|
* Mutate default literals
|
|
* Mutate unwinding of pattern args ```|(a, b), c|``` => ```|a, b, c|```
|
|
* Mutate define and block arguments
|
|
* Mutate block arguments, inklusive pattern args
|
|
* Recurse into block bodies
|
|
* Unvendor inflector use mbj-inflector from rubygems
|
|
|
|
Bugfix:
|
|
|
|
* Insert mutations at correct constant scope
|
|
* Crash on mutating yield, added a noop for now
|
|
* Crash on singleton methods defined on other than constants or self
|
|
|
|
[Compare v0.2.4..v0.2.5](https://github.com/mbj/mutant/compare/v0.2.4...v0.2.5)
|
|
|
|
# v0.2.4 2012-12-12
|
|
|
|
Bugfix:
|
|
|
|
* Correctly vendor inflector
|
|
|
|
[Compare v0.2.3..v0.2.4](https://github.com/mbj/mutant/compare/v0.2.3...v0.2.4)
|
|
|
|
# v0.2.3 2012-12-08
|
|
|
|
Bugfix:
|
|
|
|
* Prepend extra elements to hash and array instead of append. This fixes unkillable mutators in parallel assignments!
|
|
|
|
[Compare v0.2.2..v0.2.3](https://github.com/mbj/mutant/compare/v0.2.2...v0.2.3)
|
|
|
|
# v0.2.2 2012-12-07
|
|
|
|
Feature:
|
|
|
|
* Add a shitload of operator expansions for dm2 strategy
|
|
|
|
[Compare v0.2.1..v0.2.2](https://github.com/mbj/mutant/compare/v0.2.1...v0.2.2)
|
|
|
|
# v0.2.1 2012-12-07
|
|
|
|
Bugfix:
|
|
|
|
* Crash on unavailable source location
|
|
* Incorrect handling of if and unless statements
|
|
* Expand Foo#initialize to spec/unit/foo in rspec dm2 strategy
|
|
* Correctly expand [] to element_reader_spec.rb in rspec dm2 strategy
|
|
* Correctly expand []= to element_writer_spec.rb in rspec dm2 strategy
|
|
* Correctly expand foo= to foo_writer_spec.rb in rspec dm2 strategy
|
|
|
|
[Compare v0.2.0..v0.2.1](https://github.com/mbj/mutant/compare/v0.2.0...v0.2.1)
|
|
|
|
# v0.2.0 2012-12-07
|
|
|
|
First public release!
|