From f5db32da72b4904c848582710f9c42987fe1e5c9 Mon Sep 17 00:00:00 2001 From: Pieter De Clercq Date: Mon, 23 Nov 2015 16:25:24 +0100 Subject: [PATCH 1/3] Make the repeat count available any other PHP code. Inspired by how Paratest exposes its test token. --- src/Extensions/RepeatedTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Extensions/RepeatedTest.php b/src/Extensions/RepeatedTest.php index c767f66bb2c..6d90c00cef4 100644 --- a/src/Extensions/RepeatedTest.php +++ b/src/Extensions/RepeatedTest.php @@ -93,6 +93,9 @@ public function run(PHPUnit_Framework_TestResult $result = null) //@codingStandardsIgnoreStart for ($i = 1; $i <= $this->timesRepeat && !$result->shouldStop(); $i++) { + // Make the repeat count widely available. + $_ENV['PHPUnit_RepeatedTest_RepeatCount'] = $i; + if ($this->onlyRepeatFailed && $i > 1 && $this->test instanceof PHPUnit_Framework_TestCase && From 49be7b81ee54a68c1ff7c717b73a5eba7232247d Mon Sep 17 00:00:00 2001 From: Pieter De Clercq Date: Mon, 23 Nov 2015 16:29:49 +0100 Subject: [PATCH 2/3] Add a test case that alternately succeeds and fails. --- .../DataProviderAlternateSuccessTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/_files/DataProviderAlternateSuccessTest.php diff --git a/tests/_files/DataProviderAlternateSuccessTest.php b/tests/_files/DataProviderAlternateSuccessTest.php new file mode 100644 index 00000000000..8049374d0dc --- /dev/null +++ b/tests/_files/DataProviderAlternateSuccessTest.php @@ -0,0 +1,28 @@ +fail('Failed at run ' . $repeatCount . '.'); + } + } + + public static function providerMethod() + { + return array( + array('even'), + array('odd') + ); + } +} From 43c401c52eb7b8ad26371531510fb8b27d4160ea Mon Sep 17 00:00:00 2001 From: Pieter De Clercq Date: Mon, 23 Nov 2015 16:32:34 +0100 Subject: [PATCH 3/3] Provide a test to cover a PHPUnit_TextUI_ResultPrinter bug when used with --only-repeat-failed on a test with a dataprovider that failed the first run but succeeds a next run. "F.SSS" shows instead of "F.S.SS". --- .../repeat-onlyfailed-dataprovider.phpt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 tests/TextUI/repeat-onlyfailed-dataprovider.phpt diff --git a/tests/TextUI/repeat-onlyfailed-dataprovider.phpt b/tests/TextUI/repeat-onlyfailed-dataprovider.phpt new file mode 100644 index 00000000000..f99bd57f798 --- /dev/null +++ b/tests/TextUI/repeat-onlyfailed-dataprovider.phpt @@ -0,0 +1,29 @@ +--TEST-- +phpunit --repeat 3 --only-repeat-failed ../_files/DataProviderAlternateSuccessTest.php +--FILE-- + +--EXPECTF-- +PHPUnit %s by Sebastian Bergmann and contributors. + +F.S.SS + +Time: %s, Memory: %sMb + +There was 1 failure: + +1) DataProviderAlternateSuccessTest::testAlternateSuccess with data set #0 ('even') +Failed at run 1. + +/Users/pieterdc/Sites/phpunit-kanooh/tests/_files/DataProviderAlternateSuccessTest.php:17 + +FAILURES! +Tests: 3, Assertions: 0, Failures: 1, Skipped: 3.