From 1b24ec04e8fcb3bea37a4a341c00b1a893703ba1 Mon Sep 17 00:00:00 2001 From: Oleg Zhulnev Date: Tue, 20 Nov 2018 23:22:13 +0300 Subject: [PATCH 1/4] Use new config data when Infection has been executed in a first time (without .json or json.dist) --- src/Command/BaseCommand.php | 2 -- src/Command/InfectionCommand.php | 3 +-- src/Config/InfectionConfig.php | 3 ++- .../e2e/Initial_Configuration/composer.json | 15 ++++++++++++ .../Initial_Configuration/do_configure.expect | 22 +++++++++++++++++ .../e2e/Initial_Configuration/expected.log | 8 +++++++ .../e2e/Initial_Configuration/phpunit.xml | 18 ++++++++++++++ .../e2e/Initial_Configuration/run_tests.bash | 24 +++++++++++++++++++ .../skipped_src/IgnoredSourceClass.php | 13 ++++++++++ .../Initial_Configuration/src/SourceClass.php | 11 +++++++++ .../tests/SourceClassTest.php | 15 ++++++++++++ 11 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 tests/Fixtures/e2e/Initial_Configuration/composer.json create mode 100755 tests/Fixtures/e2e/Initial_Configuration/do_configure.expect create mode 100644 tests/Fixtures/e2e/Initial_Configuration/expected.log create mode 100644 tests/Fixtures/e2e/Initial_Configuration/phpunit.xml create mode 100755 tests/Fixtures/e2e/Initial_Configuration/run_tests.bash create mode 100644 tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php create mode 100644 tests/Fixtures/e2e/Initial_Configuration/src/SourceClass.php create mode 100644 tests/Fixtures/e2e/Initial_Configuration/tests/SourceClassTest.php diff --git a/src/Command/BaseCommand.php b/src/Command/BaseCommand.php index efdbb3943..3e327e680 100644 --- a/src/Command/BaseCommand.php +++ b/src/Command/BaseCommand.php @@ -74,8 +74,6 @@ public function getContainer(): Container protected function initialize(InputInterface $input, OutputInterface $output): void { - parent::initialize($input, $output); - $this->input = $input; $this->output = $output; } diff --git a/src/Command/InfectionCommand.php b/src/Command/InfectionCommand.php index fcc82a668..2ac1cf8ae 100644 --- a/src/Command/InfectionCommand.php +++ b/src/Command/InfectionCommand.php @@ -362,10 +362,9 @@ private function runConfigurationCommand(Locator $locator): void $locator->locateOneOf(InfectionConfig::POSSIBLE_CONFIG_FILE_NAMES); } catch (\Exception $e) { $configureCommand = $this->getApplication()->find('configure'); - $config = $this->getContainer()->get('infection.config'); $args = [ - '--test-framework' => $this->input->getOption('test-framework') ?: $config->getTestFramework(), + '--test-framework' => $this->input->getOption('test-framework') ?: TestFrameworkTypes::PHPUNIT, ]; $newInput = new ArrayInput($args); diff --git a/src/Config/InfectionConfig.php b/src/Config/InfectionConfig.php index 91843a6b7..0d8519413 100644 --- a/src/Config/InfectionConfig.php +++ b/src/Config/InfectionConfig.php @@ -35,6 +35,7 @@ namespace Infection\Config; +use Infection\TestFramework\TestFrameworkTypes; use Symfony\Component\Filesystem\Filesystem; /** @@ -152,7 +153,7 @@ public function getBootstrap(): string public function getTestFramework(): string { - return $this->config->testFramework ?? 'phpunit'; + return $this->config->testFramework ?? TestFrameworkTypes::PHPUNIT; } public function getInitialTestsPhpOptions(): string diff --git a/tests/Fixtures/e2e/Initial_Configuration/composer.json b/tests/Fixtures/e2e/Initial_Configuration/composer.json new file mode 100644 index 000000000..d829e45ca --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/composer.json @@ -0,0 +1,15 @@ +{ + "require-dev": { + "phpunit/phpunit": "^6.5" + }, + "autoload": { + "psr-4": { + "Initial_Configuration\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Initial_Configuration\\Test\\": "tests/" + } + } +} diff --git a/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect b/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect new file mode 100755 index 000000000..7d9333c37 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect @@ -0,0 +1,22 @@ +#!/usr/bin/env expect +set timeout 20 +eval spawn $env(INFECTION) + +proc configure { input value } { + expect $input { + send $value + } timeout { + send_user "Test failed\n" + exit 1 + } +} + +configure "directories do you want to include" "2\r" +configure "Any directories to exclude from" "\r" +configure "timeout in seconds" "\r" +configure "text log file?" "\r" + +expect "Please note that some mutants will inevitably be harmless" + +send_user "Test succeeded!\n" +exit 0 diff --git a/tests/Fixtures/e2e/Initial_Configuration/expected.log b/tests/Fixtures/e2e/Initial_Configuration/expected.log new file mode 100644 index 000000000..6b0cea681 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/expected.log @@ -0,0 +1,8 @@ +Escaped mutants: +================ + +Timed Out mutants: +================== + +Not Covered mutants: +==================== diff --git a/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml b/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml new file mode 100644 index 000000000..9a836774d --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml @@ -0,0 +1,18 @@ + + + + + ./tests/ + + + + + + ./src/ + + + diff --git a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash new file mode 100755 index 000000000..2eb99c408 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if test ! -f "$(which expect)"; then + test -x $(which tput) && tput setaf 1 # red + echo "Please install expect; it is readily available from apt and brew" + exit 1; +fi + +cd $(dirname $0) +rm -f infection.json.dist infection.log + +set -e + +if [[ "$PHPDBG" = "1" ]] +then + INFECTION="phpdbg -qrr ../../../../bin/infection" +else + INFECTION="php ../../../../bin/infection" +fi +export INFECTION + +./do_configure.expect + +diff -u expected.log infection.log diff --git a/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php b/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php new file mode 100644 index 000000000..adbdd9230 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php @@ -0,0 +1,13 @@ +assertSame('hello', $sourceClass->hello()); + } +} From 639c02a43510591bffbdc2caaf7ca18e73df92a0 Mon Sep 17 00:00:00 2001 From: Oleg Zhulnev Date: Mon, 3 Dec 2018 23:44:43 +0300 Subject: [PATCH 2/4] drop test to check what is going on --- .../e2e/Initial_Configuration/composer.json | 15 ------------ .../Initial_Configuration/do_configure.expect | 22 ----------------- .../e2e/Initial_Configuration/expected.log | 8 ------- .../e2e/Initial_Configuration/phpunit.xml | 18 -------------- .../e2e/Initial_Configuration/run_tests.bash | 24 ------------------- .../skipped_src/IgnoredSourceClass.php | 13 ---------- .../Initial_Configuration/src/SourceClass.php | 11 --------- .../tests/SourceClassTest.php | 15 ------------ 8 files changed, 126 deletions(-) delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/composer.json delete mode 100755 tests/Fixtures/e2e/Initial_Configuration/do_configure.expect delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/expected.log delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/phpunit.xml delete mode 100755 tests/Fixtures/e2e/Initial_Configuration/run_tests.bash delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/src/SourceClass.php delete mode 100644 tests/Fixtures/e2e/Initial_Configuration/tests/SourceClassTest.php diff --git a/tests/Fixtures/e2e/Initial_Configuration/composer.json b/tests/Fixtures/e2e/Initial_Configuration/composer.json deleted file mode 100644 index d829e45ca..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/composer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "require-dev": { - "phpunit/phpunit": "^6.5" - }, - "autoload": { - "psr-4": { - "Initial_Configuration\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Initial_Configuration\\Test\\": "tests/" - } - } -} diff --git a/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect b/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect deleted file mode 100755 index 7d9333c37..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env expect -set timeout 20 -eval spawn $env(INFECTION) - -proc configure { input value } { - expect $input { - send $value - } timeout { - send_user "Test failed\n" - exit 1 - } -} - -configure "directories do you want to include" "2\r" -configure "Any directories to exclude from" "\r" -configure "timeout in seconds" "\r" -configure "text log file?" "\r" - -expect "Please note that some mutants will inevitably be harmless" - -send_user "Test succeeded!\n" -exit 0 diff --git a/tests/Fixtures/e2e/Initial_Configuration/expected.log b/tests/Fixtures/e2e/Initial_Configuration/expected.log deleted file mode 100644 index 6b0cea681..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/expected.log +++ /dev/null @@ -1,8 +0,0 @@ -Escaped mutants: -================ - -Timed Out mutants: -================== - -Not Covered mutants: -==================== diff --git a/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml b/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml deleted file mode 100644 index 9a836774d..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - ./tests/ - - - - - - ./src/ - - - diff --git a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash deleted file mode 100755 index 2eb99c408..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -if test ! -f "$(which expect)"; then - test -x $(which tput) && tput setaf 1 # red - echo "Please install expect; it is readily available from apt and brew" - exit 1; -fi - -cd $(dirname $0) -rm -f infection.json.dist infection.log - -set -e - -if [[ "$PHPDBG" = "1" ]] -then - INFECTION="phpdbg -qrr ../../../../bin/infection" -else - INFECTION="php ../../../../bin/infection" -fi -export INFECTION - -./do_configure.expect - -diff -u expected.log infection.log diff --git a/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php b/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php deleted file mode 100644 index adbdd9230..000000000 --- a/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php +++ /dev/null @@ -1,13 +0,0 @@ -assertSame('hello', $sourceClass->hello()); - } -} From c2a9a03c816e26ed8daf8ba7817397962f2c8567 Mon Sep 17 00:00:00 2001 From: Oleg Zhulnev Date: Thu, 6 Dec 2018 21:50:45 +0300 Subject: [PATCH 3/4] Revert e2e test with fix --- .../e2e/Initial_Configuration/composer.json | 15 +++++++++++ .../Initial_Configuration/do_configure.expect | 22 ++++++++++++++++ .../e2e/Initial_Configuration/expected.log | 8 ++++++ .../e2e/Initial_Configuration/phpunit.xml | 18 +++++++++++++ .../e2e/Initial_Configuration/run_tests.bash | 25 +++++++++++++++++++ .../skipped_src/IgnoredSourceClass.php | 13 ++++++++++ .../Initial_Configuration/src/SourceClass.php | 11 ++++++++ .../tests/SourceClassTest.php | 15 +++++++++++ 8 files changed, 127 insertions(+) create mode 100644 tests/Fixtures/e2e/Initial_Configuration/composer.json create mode 100755 tests/Fixtures/e2e/Initial_Configuration/do_configure.expect create mode 100644 tests/Fixtures/e2e/Initial_Configuration/expected.log create mode 100644 tests/Fixtures/e2e/Initial_Configuration/phpunit.xml create mode 100755 tests/Fixtures/e2e/Initial_Configuration/run_tests.bash create mode 100644 tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php create mode 100644 tests/Fixtures/e2e/Initial_Configuration/src/SourceClass.php create mode 100644 tests/Fixtures/e2e/Initial_Configuration/tests/SourceClassTest.php diff --git a/tests/Fixtures/e2e/Initial_Configuration/composer.json b/tests/Fixtures/e2e/Initial_Configuration/composer.json new file mode 100644 index 000000000..d829e45ca --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/composer.json @@ -0,0 +1,15 @@ +{ + "require-dev": { + "phpunit/phpunit": "^6.5" + }, + "autoload": { + "psr-4": { + "Initial_Configuration\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Initial_Configuration\\Test\\": "tests/" + } + } +} diff --git a/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect b/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect new file mode 100755 index 000000000..7d9333c37 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/do_configure.expect @@ -0,0 +1,22 @@ +#!/usr/bin/env expect +set timeout 20 +eval spawn $env(INFECTION) + +proc configure { input value } { + expect $input { + send $value + } timeout { + send_user "Test failed\n" + exit 1 + } +} + +configure "directories do you want to include" "2\r" +configure "Any directories to exclude from" "\r" +configure "timeout in seconds" "\r" +configure "text log file?" "\r" + +expect "Please note that some mutants will inevitably be harmless" + +send_user "Test succeeded!\n" +exit 0 diff --git a/tests/Fixtures/e2e/Initial_Configuration/expected.log b/tests/Fixtures/e2e/Initial_Configuration/expected.log new file mode 100644 index 000000000..6b0cea681 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/expected.log @@ -0,0 +1,8 @@ +Escaped mutants: +================ + +Timed Out mutants: +================== + +Not Covered mutants: +==================== diff --git a/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml b/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml new file mode 100644 index 000000000..9a836774d --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/phpunit.xml @@ -0,0 +1,18 @@ + + + + + ./tests/ + + + + + + ./src/ + + + diff --git a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash new file mode 100755 index 000000000..3c145a471 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +if test ! -f "$(which expect)"; then + test -x $(which tput) && tput setaf 1 # red + echo "Please install expect; it is readily available from apt and brew" + exit 1; +fi + +cd $(dirname $0) +rm -f infection.json.dist + +set -e + +if [ "$PHPDBG" = "1" ] +then + INFECTION="phpdbg -qrr ../../../../bin/infection" +else + INFECTION="php ../../../../bin/infection" +fi +export INFECTION + +./do_configure.expect + +test -f infection.json.dist +diff -u expected.log infection.log diff --git a/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php b/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php new file mode 100644 index 000000000..adbdd9230 --- /dev/null +++ b/tests/Fixtures/e2e/Initial_Configuration/skipped_src/IgnoredSourceClass.php @@ -0,0 +1,13 @@ +assertSame('hello', $sourceClass->hello()); + } +} From 39f9b2ff27a4000d392099dea1e4a86a12a17024 Mon Sep 17 00:00:00 2001 From: Oleg Zhulnev Date: Thu, 6 Dec 2018 23:06:25 +0300 Subject: [PATCH 4/4] fix bash --- tests/Fixtures/e2e/Initial_Configuration/run_tests.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100755 => 100644 tests/Fixtures/e2e/Initial_Configuration/run_tests.bash diff --git a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash old mode 100755 new mode 100644 index 3c145a471..763cbd8d4 --- a/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash +++ b/tests/Fixtures/e2e/Initial_Configuration/run_tests.bash @@ -7,7 +7,7 @@ if test ! -f "$(which expect)"; then fi cd $(dirname $0) -rm -f infection.json.dist +rm -f infection.json.dist infection.log set -e @@ -21,5 +21,5 @@ export INFECTION ./do_configure.expect -test -f infection.json.dist +test -f infection.log diff -u expected.log infection.log