Added:
- [Mutator] Mutate
mb_str_split
tostr_split
#787 - [Mutator] Spread operator in Array Expression - leave only the first element #784
- [Mutator] Leave only one element in the non empty returned array #735
- Use xdebug-filter to reduce the time needed to collect coverage #781
- Add Symfony PHPUnitBridge #755
- Use codingmachine/safe #745
- Allow installation only with the most recent versions for dev dependencies #744
- Add PCOV to TravisCI #741
- Ensure the dev tools are up to date #725
Changed:
- Bump requirements up to PHP 7.2 #700
- Do not round down values in MetricsCalculator #701
- Dramatically reduce memory usage by using classes instead of object-like arrays #710
- Rework infection command #767
- Remove the self-update command #688
- Move coverage data to the mutation #733
- Deactivate
stderr
redirection in phpunit.xml #791 - Add missed profile and mutator keys to the validation schema.json #782
- Move
e2e
tests to the correct place. #780 - Remove Travis' phpunit binaries since they conflicts with vendor's phpunit #773
- Consume directly the InfectionContainer instead of a generic PSR-11 #761
- Bump the versions used where appropriate #743
- Update used memory detection for PHPUnit 8 #739
- Update E2E tests to use PHPUnit 8 #738
- Update xdebug-handler to 1.3.3, remove workarounds #737
- Upgrade to PHPUnit 8.2.3 #713
- Error out when 0 lines of code were covered #602
- Add
ignore
property for each Mutator in JSON schema. #699 - PhpProcess: Reset $_ENV if it is in use #693
- Update alt text of slack badge #707
Fixed:
- Multiple extra test framework options escape in the wrong way #615
- "Return value of MutatorConfig::getMutatorSettings() must be of the type array, object returned" with mutator that has settings #666
- Deal with object settings #772
- initialTestsPhpOptions does not get picked from infection.json[.dist] #672
- Sort & Remove duplicates entries in .gitignore #724
- ArrayItemRemoval configuration doesn't support the "ignore" property #698
- Error about missing phar pubkey file on self-update #684
- Target MSI on Travis with empty --filter #631
- Zero percent code coverage is not an issue for Infection #488
- Infection config generator fails to handle multiple ignored directories #580
- Fix Infection config builder: make sure it always creates an array for excluded dirs but not object #714
Full Changelog (2019-05-18)
Added:
- Log the InitialTestsRun command line when
--debug
is used #520 - Preliminary support for PCOV #667
- Adding Line Numbers To Mutator Ignore List #663
- Family bc*-functions mutators (bcmath support) #658
- Family mb_*-functions mutators #654
- Add a new unwrap mutator: ucwords #644
- New @unwrap mutator: lcfirst() #642
- Provide compact output for CI environments #613
- add unwrap array_pad mutator #680
- add unwrap array_intersect_assoc mutator #679
- #597 Array item removal mutator #649
- Enhancement: Implement UnwrapTrim mutator #638
- Enhancement: Implement UnwrapArrayUintersect mutator #637
- Enhancement: Implement UnwrapArrayUintersectUassoc mutator #633
- Enhancement: Implement UnwrapArrayUintersectAssoc mutator #628
- Enhancement: Implement UnwrapArrayUdiff mutator #624
- Mutator: AssignCoalesce. Upgrade PHPParser to 4.2.1 #641
- Mutator: UnwrapUcFirst (unwrap the first argument of ucfirst() function) #635
Fixed:
- Multi line arrays are not properly handled by code coverage #652
- Error when parsing method that creates anonymous class #616
- Infection gets stuck in the first execution after configuration file is created #576
- Wrong constructor ownership when returning an anonymous class #682
- Do not mutate * to / and vice versa if one of the operands is numeric ±1.0 #673
Changed:
- Stop traversal of interfaces and abstract methods #656
- Add a few more count esque functions to not decrement against #640
- Enhancement: Normalize composer.json #629
- Upgrade PHPUnit from ^6.5 to ^7.5 and all dependencies, including root differ #627
- Test against php 7.4 #625
0.12.0 (2019-01-24)
BC Breaks:
- Disabling mutating "true" -> "false" in TrueValue mutator for in_array/array_search #599
Added:
- Allow settings for Mutators #206
- Enhancement: Implement UnwrapArrayUdiffAssoc mutator #614
- Enhancement: Implement UnwrapArraySplice mutator #605
- Enhancement: Implement UnwrapArraySlice mutator #598
- Enhancement: Implement UnwrapArrayMergeRecursive mutator #594
- Enhancement: Implement UnwrapArrayIntersectUkey mutator #593
- Enhancement: Implement UnwrapArrayIntersectUassoc mutator #591
- Enhancement: Implement UnwrapArrayColumn mutator #590
- Enhancement: Implement UnwrapArrayIntersectKey mutator #584
- Enhancement: Implement UnwrapArrayDiffUkey mutator #583
Fixed:
- Schema does not include initialTestsPhpOptions #606
- Space in PHP interpreter path breaks Infection #600
- Starting infection via phing differs from commandline #592
- symfony/phpunit-bridge isn't supported #588
- Symfony flex should correctly detect phpunit executable #493
Changed:
- Running command with
--only-covered
should add in log only covered code. #581 - Add a test to check Infection works with PSR-0 compliant autoloader #579
- Update gitattributes file #532
0.11.0 (2018-11-11)
BC Breaks:
- Add counterparts to identical mutator and remove them from default #391 (BackEndTea)
Added:
- Add json-schema validation for
infection.json.dist
config file #451 (sidz) - Run project's tests in a random order for InitialTestRun process #519 (borNfreee)
- Validate phpunit.xml #487 (borNfreee)
- @codeCoverageIgnore annotations support #491 (borNfreee)
- [RFC] Yield mutations #450 (borNfreee)
- [Feature] Round Family #449 (deleugpn)
- Add counterparts to identical mutator and remove them from default #391 (BackEndTea)
- Adding Additional CLI Settings To Config #463 (Fenikkusu)
- [Mutator] Implement UnwrapArrayCombine mutator #550 (localheinz)
- [Mutator] Use default rules of ordered_class_elements fixer #530 (localheinz)
- [Mutator] Implement UnwrapArrayFlip mutator #529 (localheinz)
- [Mutator] Implement UnwrapArrayReverse mutator #527 (localheinz)
- [Mutator] Enable no_superfluous_phpdoc_tags fixer #525 (localheinz)
- [Mutator] Implement UnwrapStrRepeat mutator #539 (localheinz)
- [Mutator] Fail with a better assertion message #538 (localheinz)
- [Mutator] Implement UnwrapArrayReplace mutator #536 (localheinz)
- [Mutator] Implement UnwrapStrToLower mutator #534 (localheinz)
- [Mutator] Implement UnwrapArrayReduce mutator #533 (localheinz)
- [Mutator] Implement UnwrapArrayReplaceRecursive mutator #545 (localheinz)
- [Mutator] Implement UnwrapArrayDiff mutator #544 (localheinz)
- [Mutator] Implement UnwrapArrayIntersect mutator #543 (localheinz)
- [Mutator] Implement UnwrapArrayMerge mutator #542 (localheinz)
- [Mutator] Implement UnwrapArrayChunk mutator #558 (localheinz)
- [Mutator] Implement UnwrapArrayUnique mutator #556 (localheinz)
- [Mutator] Implement UnwrapArrayKeys mutator #555 (localheinz)
- [Mutator] Implement UnwrapArrayValues mutator #554 (localheinz)
- [Mutator] Unwrap all available arguments to array_map() #553 (localheinz)
- [Mutator] Created new UnwrapStrToUpper mutator #559 (zf2timo)
Fixed:
- Do not require dev packages on Deploy stage #445 (borNfreee)
- Batch file invoked with php - breaks test framework version #469
- Validate that infection.json contains valid (writable) file paths for loggers #458 (borNfreee)
- Fix .bat files being invoked with php #470 (johnstevenson)
- Exclude --testsuite from PhpUnit mutant options, but allow for initial process #480
- Extend TestFrameworkExtraOptions to cover more complex usages of options #483 (tomtomau)
- Restrict installation with broken versions of symfony/console #523 (sanmai)
- Fix Decrement integer #485 (BackEndTea)
- Update ProtectedVisibility/PublicVisibility to guard against missing reflection #502 (sanmai)
- Update TestFrameworkFinder to always look for a .bat first. #506 (sanmai)
- TestFrameworkFinderTest fails to run on Mac OS X #504
- PublicVisibility mutator failing due to missing reflection #501
- --initial-tests-php-options ignored on Windows #471
- Do not mutate the code inside plain functions #466
- Infection does not fail gracefully on an invalid phpunit.xml #409
- Do not mutate code that is ignored from code coverage #407
- Fix: Keep mutators in mutator profiles sorted by name #541 (localheinz)
Changed:
- Rename infection-log.txt -> infection.log #454 (borNfreee)
- Improve compatibility with framework based applications #440 (patrickfunke)
- Add some breathing space around our logo #509 (sanmai)
- Explicitly add the default profile to the list of mutators #507 (sanmai)
- Do not travers plain functions unless they are in the method or closures #508 (borNfreee)
- Do not mutate interfaces #548 (sanmai)
- Include the complete license in headers #528 (sanmai)
0.10.0 (2018-08-11)
BC Breaks:
- Drop PHP 7.0 support #414
Added:
- Function and method removal mutators #418 (BackEndTea)
- PregMatchMatches mutator #383 (BackEndTea)
- Add infection to PHIVE (PHAR Installation and Verification Environment) #134
- Show time and memory info to the console output #390 (borNfreee)
- Add GPG signing for PHAR #436 (borNfreee)
- Sort logs #424 (BackEndTea)
- Explicitly require the DOM extension #411 (BackEndTea)
Fixed:
- 100% MSI reported even if a small number of uncovered mutations is found #426
- Round MSI down to the smallest integer, instead of nearest #431 (sanmai)
- Space in directory path breaks Infection #413
- BadgeLogger now reports exact errors #405 (sanmai)
- Quiet mode is as quiet as one can expect it to be #403
- Fix exclude to excludes for generated config file #423 (BackEndTea)
- Brew installation isn't supported anymore or docs aren't updated #416
0.9.0 (2018-07-02)
BC Breaks:
- Use textual version of log verbosity \265infection#265)
Added:
- Feature: Profiles #220
- Mutation badge #207
- Feature:disable certain mutators #177
- Add reflection classes to mutators. Do no mutate public method visibility if parent has the same one #67
- [Mutator] IdenticalEqual and NotIdenticalNotEqual mutators #298
- [Mutator] Remove type cast operators #297
- [Mutator] Add mutator that removes finally {} block #261
- [Mutator] Yield Mutator #242
- [Mutator] ArrayItem Mutator #240
- [Mutator] Add a For Loop mutator & test #230
- [Mutator] Add Assignment Equal Mutator #229
- [Mutator] Add Assignment Mutator #228
- [Mutator] Add the first regex mutator #333 (BackEndTea)
- Use PHP-Parser 4 to preserve mutated code formatting #55
- [epic] Scope and deploy signed PHAR #338
- Add a per mutator logging option #346 (BackEndTea)
- Update travis config to deploy PHAR and pubkey on releases #353 (borNfreee)
Changed:
- Xdebug/ phpdbg check should be later in the infection process #325
- Stop mutation of abstract methods default parameters #361 (BackEndTea)
- Add a test to check whether classes are unit tested #360 (BackEndTea)
- Clean up after Mutation testing has been finished #357 (sidz)
- Simplify the EventDispatcher #348 (BackEndTea)
Fixed:
- infection ignores phpunit.xml bootstrap file #320
- False positive when calculation is in multiple lines #366
- Allow Absolute Path to phpunit.xml(.dist) #387 (adeptofvoltron)
- Account for statements spanning multiple lines #375 (sanmai)
- Look for .bat on all platforms #374 (sanmai)
- False positive: count(-1) (decrement integer mutator) #364
- Infection works incorrectly on Windows #351
- Weird behaviour in Docker container #332
- Initial test suite may fail to deliver coverage, e.g. under Docker #306
- Infection infects /tmp #356
- Infection does not correctly detect whether phpunit is php-executable #300
- Infection can't report on effectiveness of mutators #271
- Do not decrement integer 0 when it is being compared with the result of count() #365 (borNfreee)
0.8.0 (2018-02-27)
BC Breaks:
- Make paths in config file relative to config file #165 (BackEndTea)
- Remove
exclude
option from config #155 (sidz)
Implemented enhancements:
- Implement integer increment and decrement mutators #152 (localheinz)
- Implement Throw mutator #164 (BackEndTea)
- Use existing coverage reports #176 (borNfreee)
- Do not require Xdebug/phpdbg when existing coverage is provided #183 (sidz)
- Add an option to pass additional parameters to the PHP binary #185 (sidz)
- Allow relative path for
tmpDir
config setting. #151 (borNfreee) - Allow coverage of function signatures of traits #191 (BackEndTea)
Performance:
- Fix performance issue in SourceFilesFinder #186 (borNfreee)
- Reuse created mutant files to avoid traversing and pretty printing #184 (borNfreee)
Fixed bugs:
- Windows can't open this file when composer.phar is found #196
- Infection ignores coverage on trait(s) #189
- Existing coverage: "cannot load zend opcache" #182
- Phpunit "excludes" are not properly parsed #167
- Allow coverage of function signatures of traits #191 (BackEndTea)
- Fix: Don't mutate abstract methods #169 (BackEndTea)
- Don't try to expand directories with
\*
and\*\*
(glob pattern) #171 (sidz)
0.7.1 (2018-02-02)
Deprecated:
exclude
option ininfection.json
is Deprecated! and will be removed in0.8.0
. Useexcludes
instead
Implemented enhancements:
- PHPUnit ^7.0 support
- Remove tests/test folders when infection is run for root directory. W… #117 (borNfreee)
- Config setting for temp files #140 (sidz)
- Make Humbug's config to be compatible with Infection #120 (sidz)
- added new types of logs (debug, summary) #135 (BackEndTea)
Fixed bugs:
- PHP DOM Extension not working when explicitly enabled twice #125
- Infection not working if using custom printer #108
- Infection not working with phpdbg #106
- Startup problem #104
- Default values of functions not being found by coverage #101
- disable colors options #99
- Mutations not working well with function_exists #97
- Not covered mutant with
switch(true) -> switch(false)
mutation #34 - Fix: mutate methods but not functions #113 (BackEndTea)
Merged pull requests:
- Feature: e2e tests #135 (BackEndTea)
- Enhancement: Keep packages sorted #149 (localheinz)
- Enhancement: Allow to install sebastian/diff:^3.0 #148 (localheinz)
- Rework InfectionApplication class and remove 'application' service #146 (sidz)
- Skip XdebugHandlerTest when infection is running via phpdbg #145 (sidz)
- Fix: Disable xdebug before composer analyze on travis #136 (BackEndTea)
- Fix: Use actual name #133 (localheinz)
- Update IOException #132 (BackEndTea)
- Update symfony/process as it has an issue which introduced by 3.4.2 #131 (sidz)
- Give higher priority to custom config path #130 (BackEndTea)
- Ignore fixtures from cs fixer #128 (BackEndTea)
- Add tests #124 (BackEndTea)
- Fix: Change is function signature check #123 (BackEndTea)
- Add header comment to php-cs fixer #119 (BackEndTea)
- Move Files folder into the Fixtures folder #118 (BackEndTea)
- fix small typos #116 (teiling88)
- Update gitattributes #112 (BackEndTea)
- Fix: remove printer attributes from phpunit #110 (BackEndTea)
- Fix phpdbg issue caused by xdebug disabling feature #107 (sidz)
- Parse only PHP files by default #105 (borNfreee)
- Add credits #102 (theofidry)
- Fix issue with --no-ansi flag #100 (sidz)
- PHPSPEC - If you had a custom bootstrap file in the phpspec.yml it would generate the autoload without the semicolon. #98 (AliceIW)
0.7.0 (2017-12-22)
Performance:
- Disable xdebug for all php processes except code coverage generator #85 (sidz)
- Parse each source file just 1 time, cache original file AST #95 (borNfreee)
Merged pull requests:
Fixed bugs:
Closed issues:
- Add comma separated files filter #84 (Landerstraeten)
- Is Infection compatible with PHPUnit 5.x ? #83
- Feature Request: Add line numbers to diffs on Escaped mutants #72
- [WIP] Optimize PHP files parsing #86
0.6.2 (2017-11-18)
Implemented enhancements:
Fixed bugs:
Closed issues:
- Uncovered Mutations not logged? #78
Merged pull requests:
0.6.1 (2017-11-18)
Performance:
- Reuse Parser, Lexer, PrettyPrinter #76 (borNfreee)
- Skip
composer config bin-dir
check if custom path exists #66 (sidz)
Developer Experience (DX):
- Display test framework output when initial tests fail #65 (borNfreee)
- Show fatal errors in the console and file logs #64 (borNfreee)
- Add Log verbosity #56 (sidz)
- Infection can be installed via Homebrew on MacOS
Fixed bugs:
- Warning with empty PHPUnit bootstrap #74
- PublicVisibility mutator seen as escaped mutant for a class implementing an interface #60
- Source files outside the src folder always skipped #57
- Show correct type of error message for CI flags #68 (dmecke)
Closed issues:
- Tests do not pass. Error code 2. "Misuse of shell builtins". STDERR #61
- Hide killed mutants in output log? #54
- Tests do not pass. Error code 255. "Unknown error". STDERR: #43
- Coverage data missing #30
Other merged pull requests:
- PHPUnit bootstrap attribute fix #77 (borNfreee)
- Improve coding style #73 (Landerstraeten)
- Small code cleanup changes #70 (Landerstraeten)
- Add PHP 7.2 to Travis and AppVeyor matrix #69 (borNfreee)
- Mark test with Fatal Error as failed and such Mutant as killed. #62 (borNfreee)
- Fix PHPSpec initial yaml config generate logic #59 (borNfreee)
- Fix hardcoded framework name #58 (Landerstraeten)
0.6.0 (2017-10-09)
Closed issues:
- [New Mutator] Swap arguments in the Spaceship operator #47
Merged pull requests:
- Upgrade Mockery to ^1.0 #50 (borNfreee)
- Compatibility with PHPUnit 6.4 #49 (morozov)
- Add composer script for static analyzing tools #46 (borNfreee)
- Fix performance bottleneck by introducing a simple instance-level object cache #44 (borNfreee)
- Zero iteration mutator #52 (sidz)
- Add Break-Continue mutators #51 (sidz)
- Swap arguments on spaceship operator #48 (marcosh)
0.5.3 (2017-09-15)
Implemented enhancements:
- Display PHPUnit/PHPSpec version under what tests are run #31
- Provide meaningful feedback on failure #29
- Add exceptions handling with printing trace for verbose level. #39 (borNfreee)
Closed issues:
Merged pull requests:
- remove timeout from initial test run #41 (JanPietrzyk)
- Interface mutations fix #32 (oxidmod)
- Add option to pass test framework extra options #42 (borNfreee)
- Add Filesystem and add Directory Check for logs path. #40 (sidz)
- Support phpdbg #37 (keradus)
- Add test framework version to console #33 (borNfreee)
0.5.2 (2017-09-02)
Fixed bugs:
- SourceDirGuesser failure #23
Closed issues:
Merged pull requests:
- Add ISSUE_TEMPLATE.md to get all required info from users #26 (borNfreee)
- Added option '-c|--configuration' for custom configuration file path. #28 (corpsee)
- Fix autoload section from composer.json and allow to use multiple paths #25 (sidz)
- Fixed bootstrap.php for case with install by Composer as dependency and run from vendor/bin #22 (corpsee)
0.5.1 (2017-08-20)
Merged pull requests:
- Auto add coverage filter whitelist for phpunit.xml.dist to make it possible to analyze coverage #20 (borNfreee)
- Smart
ReturnValue
mutators #19 (borNfreee)
0.5.0 (2017-08-08)
Merged pull requests:
- Add whitelist for executed mutators. New option --mutators=X,Yy,Zzz #18 (borNfreee)
- Public->protected, protected->private Visibility Mutators #17 (borNfreee)
0.4.0 (2017-07-27)
Closed issues:
- Location of test framework #4
Merged pull requests:
- Add --min-msi and --min-covered-msi options to control MSI in CI and fail builds #16 (borNfreee)
- Allow to exclude files, not only dirs in the
infection.json
config file #15 (borNfreee) - Fix issues reported by PHPStan. Run it for each build #14 (borNfreee)
- Add php-cs-fixer config, apply fixes #13 (borNfreee)
- Add arithmetic tests #12 (borNfreee)
- Fix build on Windows. Integrate Appveyor #10 (borNfreee)
0.3.0 (2017-07-14)
Fixed bugs:
Merged pull requests:
- Add possibility to set custom PHPUnit executable path #9 (borNfreee)
- Pass timeout setting to Initial Process builder to control test suite #8 (borNfreee)
- Handle situation when PHPUnit <testsuite /> node is placed directly inside the root node #7 (borNfreee)
0.2.1 (2017-07-11)
Merged pull requests:
0.2.0 (2017-07-08)
Closed issues:
- Phar distribution #1
Merged pull requests:
0.1.0 (2017-07-01)
* This Change Log was automatically generated by github_changelog_generator