diff --git a/src/Framework/TestRunner.php b/src/Framework/TestRunner.php index e5f5b033bf8..c03647f0494 100644 --- a/src/Framework/TestRunner.php +++ b/src/Framework/TestRunner.php @@ -13,6 +13,7 @@ use function assert; use function class_exists; use function defined; +use function error_clear_last; use function extension_loaded; use function get_include_path; use function hrtime; @@ -84,6 +85,8 @@ public function run(TestCase $test): void $risky = false; $skipped = false; + error_clear_last(); + if ($this->shouldErrorHandlerBeUsed($test)) { ErrorHandler::instance()->enable(); } diff --git a/src/Runner/ErrorHandler.php b/src/Runner/ErrorHandler.php index 2b012fad2eb..6ae4a87c866 100644 --- a/src/Runner/ErrorHandler.php +++ b/src/Runner/ErrorHandler.php @@ -9,16 +9,25 @@ */ namespace PHPUnit\Runner; +use const E_COMPILE_ERROR; +use const E_COMPILE_WARNING; +use const E_CORE_ERROR; +use const E_CORE_WARNING; use const E_DEPRECATED; +use const E_ERROR; use const E_NOTICE; +use const E_PARSE; +use const E_RECOVERABLE_ERROR; use const E_STRICT; use const E_USER_DEPRECATED; +use const E_USER_ERROR; use const E_USER_NOTICE; use const E_USER_WARNING; use const E_WARNING; use function error_reporting; use function restore_error_handler; use function set_error_handler; +use ErrorException; use PHPUnit\Event; use PHPUnit\Event\Code\NoTestCaseObjectOnCallStackException; use PHPUnit\Runner\Baseline\Baseline; @@ -30,9 +39,12 @@ */ final class ErrorHandler { - private static ?self $instance = null; - private ?Baseline $baseline = null; - private bool $enabled = false; + private const UNHANDLEABLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING; + private const UNSUPPRESSEABLE_LEVELS = E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR; + private static ?self $instance = null; + private ?Baseline $baseline = null; + private bool $enabled = false; + private ?int $originalErrorReportingLevel = null; public static function instance(): self { @@ -44,7 +56,7 @@ public static function instance(): self */ public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine): bool { - $suppressed = !($errorNumber & error_reporting()); + $suppressed = (error_reporting() & ~self::UNSUPPRESSEABLE_LEVELS) === 0; if ($suppressed && (new ExcludeList)->isExcluded($errorFile)) { return false; @@ -140,13 +152,13 @@ public function __invoke(int $errorNumber, string $errorString, string $errorFil $suppressed, ); - break; + throw new ErrorException('Any E_*_ERROR must abort execution'); default: return false; } - return true; + return false; } public function enable(): void @@ -155,15 +167,12 @@ public function enable(): void return; } - $oldErrorHandler = set_error_handler($this); - - if ($oldErrorHandler !== null) { - restore_error_handler(); - - return; - } + set_error_handler($this); $this->enabled = true; + + $this->originalErrorReportingLevel = error_reporting(); + error_reporting($this->originalErrorReportingLevel & self::UNHANDLEABLE_LEVELS); } public function disable(): void @@ -175,6 +184,9 @@ public function disable(): void restore_error_handler(); $this->enabled = false; + + error_reporting(error_reporting() | $this->originalErrorReportingLevel); + $this->originalErrorReportingLevel = null; } public function use(Baseline $baseline): void diff --git a/tests/end-to-end/event/_files/DeprecatedFeatureTest.php b/tests/end-to-end/event/_files/DeprecatedFeatureTest.php index 6f8369829a3..8cdf64d4f7f 100644 --- a/tests/end-to-end/event/_files/DeprecatedFeatureTest.php +++ b/tests/end-to-end/event/_files/DeprecatedFeatureTest.php @@ -10,6 +10,7 @@ namespace PHPUnit\TestFixture\Event; use const E_USER_DEPRECATED; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\TestCase; @@ -22,4 +23,11 @@ public function testDeprecatedFeature(): void $this->assertTrue(true); } + + public function testDeprecatedSuppressedErrorGetLast(): void + { + $this->assertNull(error_get_last()); + @trigger_error('message', E_USER_DEPRECATED); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/IgnoreDeprecationsTest.php b/tests/end-to-end/event/_files/IgnoreDeprecationsTest.php index a44c5c82d62..23fed1fc09e 100644 --- a/tests/end-to-end/event/_files/IgnoreDeprecationsTest.php +++ b/tests/end-to-end/event/_files/IgnoreDeprecationsTest.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TestFixture\Event; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\Attributes\IgnoreDeprecations; use PHPUnit\Framework\TestCase; @@ -29,4 +30,19 @@ public function testTwo(): void $this->assertTrue(true); } + + #[IgnoreDeprecations] + public function testOneErrorGetLast(): void + { + $this->assertNull(error_get_last()); + trigger_error('message', E_USER_DEPRECATED); + $this->assertIsArray(error_get_last()); + } + + public function testTwoErrorGetLast(): void + { + $this->assertNull(error_get_last()); + trigger_error('message', E_USER_DEPRECATED); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/SuppressedUserNoticeTest.php b/tests/end-to-end/event/_files/SuppressedUserNoticeTest.php index 245ce980a4b..0202ce8fb4b 100644 --- a/tests/end-to-end/event/_files/SuppressedUserNoticeTest.php +++ b/tests/end-to-end/event/_files/SuppressedUserNoticeTest.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TestFixture\Event; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\TestCase; @@ -20,4 +21,11 @@ public function testSuppressedUserNotice(): void @trigger_error('message', E_USER_NOTICE); } + + public function testSuppressedUserNoticeErrorGetLast(): void + { + $this->assertNull(error_get_last()); + @trigger_error('message', E_USER_NOTICE); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/SuppressedUserWarningTest.php b/tests/end-to-end/event/_files/SuppressedUserWarningTest.php index 426746e03c2..f6bbbf93c02 100644 --- a/tests/end-to-end/event/_files/SuppressedUserWarningTest.php +++ b/tests/end-to-end/event/_files/SuppressedUserWarningTest.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TestFixture\Event; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\TestCase; @@ -20,4 +21,11 @@ public function testSuppressedUserWarning(): void @trigger_error('message', E_USER_WARNING); } + + public function testSuppressedUserWarningErrorGetLast(): void + { + $this->assertNull(error_get_last()); + @trigger_error('message', E_USER_WARNING); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/UserErrorTest.php b/tests/end-to-end/event/_files/UserErrorTest.php index 998a6dc7471..104418c4729 100644 --- a/tests/end-to-end/event/_files/UserErrorTest.php +++ b/tests/end-to-end/event/_files/UserErrorTest.php @@ -20,4 +20,10 @@ public function testUserError(): void trigger_error('message', E_USER_ERROR); } + + public function testUserErrorMustAbortExecution(): void + { + trigger_error('message', E_USER_ERROR); + $this->assertTrue(false); + } } diff --git a/tests/end-to-end/event/_files/UserNoticeTest.php b/tests/end-to-end/event/_files/UserNoticeTest.php index 86fed62b7db..9f310547be1 100644 --- a/tests/end-to-end/event/_files/UserNoticeTest.php +++ b/tests/end-to-end/event/_files/UserNoticeTest.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TestFixture\Event; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\TestCase; @@ -20,4 +21,11 @@ public function testUserNotice(): void trigger_error('message', E_USER_NOTICE); } + + public function testUserNoticeErrorGetLast(): void + { + $this->assertNull(error_get_last()); + trigger_error('message', E_USER_NOTICE); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/UserWarningTest.php b/tests/end-to-end/event/_files/UserWarningTest.php index 4e75bcbef80..a534e1e18d4 100644 --- a/tests/end-to-end/event/_files/UserWarningTest.php +++ b/tests/end-to-end/event/_files/UserWarningTest.php @@ -9,6 +9,7 @@ */ namespace PHPUnit\TestFixture\Event; +use function error_get_last; use function trigger_error; use PHPUnit\Framework\TestCase; @@ -20,4 +21,11 @@ public function testUserWarning(): void trigger_error('message', E_USER_WARNING); } + + public function testUserWarningErrorGetLast(): void + { + $this->assertNull(error_get_last()); + trigger_error('message', E_USER_WARNING); + $this->assertIsArray(error_get_last()); + } } diff --git a/tests/end-to-end/event/_files/error-handler-can-be-disabled/tests/FooTest.php b/tests/end-to-end/event/_files/error-handler-can-be-disabled/tests/FooTest.php index 655c225a100..79222867423 100644 --- a/tests/end-to-end/event/_files/error-handler-can-be-disabled/tests/FooTest.php +++ b/tests/end-to-end/event/_files/error-handler-can-be-disabled/tests/FooTest.php @@ -9,6 +9,8 @@ */ namespace PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled; +use function restore_error_handler; +use function set_error_handler; use function sys_get_temp_dir; use function tempnam; use Exception; @@ -33,4 +35,26 @@ public function testMethodB(): void { $this->assertSame('Triggering', (new Foo)->methodB()['message']); } + + public function testErrorHandlerSet(): void + { + $this->assertIsCallable($this->getErrorHandler()); + } + + #[WithoutErrorHandler] + public function testErrorHandlerIsNotSet(): void + { + $this->assertNull($this->getErrorHandler()); + } + + /** + * @return null|callable + */ + private function getErrorHandler() + { + $res = set_error_handler(static fn () => false); + restore_error_handler(); + + return $res; + } } diff --git a/tests/end-to-end/event/deprecations-can-be-ignored-using-attribute.phpt b/tests/end-to-end/event/deprecations-can-be-ignored-using-attribute.phpt index 5b773174ab4..6aafadb6794 100644 --- a/tests/end-to-end/event/deprecations-can-be-ignored-using-attribute.phpt +++ b/tests/end-to-end/event/deprecations-can-be-ignored-using-attribute.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (2 tests) +Test Suite Loaded (4 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (2 tests) -Test Suite Started (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest, 2 tests) +Test Runner Execution Started (4 tests) +Test Suite Started (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest, 4 tests) Test Preparation Started (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOne) Test Prepared (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOne) Test Triggered Test-Ignored Deprecation (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOne) @@ -41,7 +41,33 @@ message Assertion Succeeded (Constraint: is true, Value: true) Test Passed (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwo) Test Finished (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwo) -Test Suite Finished (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest, 2 tests) +Test Preparation Started (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOneErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOneErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Test-Ignored Deprecation (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOneErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 16384, + 'message' => 'message', + 'file' => '%s%e_files%eIgnoreDeprecationsTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOneErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testOneErrorGetLast) +Test Preparation Started (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Deprecation (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 16384, + 'message' => 'message', + 'file' => '%s%e_files%eIgnoreDeprecationsTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\IgnoreDeprecationsTest, 4 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/error-handler-can-be-disabled.phpt b/tests/end-to-end/event/error-handler-can-be-disabled.phpt index 9ebf5a8d14d..6b11f6fd320 100644 --- a/tests/end-to-end/event/error-handler-can-be-disabled.phpt +++ b/tests/end-to-end/event/error-handler-can-be-disabled.phpt @@ -23,14 +23,14 @@ unlink($traceFile); PHPUnit Started (PHPUnit %s using %s) Test Runner Configured Bootstrap Finished (%s%esrc/Foo.php) -Test Suite Loaded (2 tests) +Test Suite Loaded (4 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (2 tests) -Test Suite Started (%s%ephpunit.xml, 2 tests) -Test Suite Started (default, 2 tests) -Test Suite Started (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest, 2 tests) +Test Runner Execution Started (4 tests) +Test Suite Started (%s%ephpunit.xml, 4 tests) +Test Suite Started (default, 4 tests) +Test Suite Started (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest, 4 tests) Test Preparation Started (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testMethodA) Test Prepared (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testMethodA) Assertion Succeeded (Constraint: exception of type "Exception", Value: {enable export of objects to see this value}) @@ -42,9 +42,19 @@ Test Prepared (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::test Assertion Succeeded (Constraint: is identical to 'Triggering', Value: 'Triggering') Test Passed (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testMethodB) Test Finished (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testMethodB) -Test Suite Finished (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest, 2 tests) -Test Suite Finished (default, 2 tests) -Test Suite Finished (%s%ephpunit.xml, 2 tests) +Test Preparation Started (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerSet) +Test Prepared (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerSet) +Assertion Succeeded (Constraint: is of type callable, Value: {enable export of objects to see this value}) +Test Passed (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerSet) +Test Finished (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerSet) +Test Preparation Started (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerIsNotSet) +Test Prepared (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerIsNotSet) +Assertion Succeeded (Constraint: is null, Value: null) +Test Passed (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerIsNotSet) +Test Finished (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest::testErrorHandlerIsNotSet) +Test Suite Finished (PHPUnit\TestFixture\Event\ErrorHandlerCanBeDisabled\FooTest, 4 tests) +Test Suite Finished (default, 4 tests) +Test Suite Finished (%s%ephpunit.xml, 4 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/suppressed-user-notice.phpt b/tests/end-to-end/event/suppressed-user-notice.phpt index 9fd5ec3e275..8d73c0b6471 100644 --- a/tests/end-to-end/event/suppressed-user-notice.phpt +++ b/tests/end-to-end/event/suppressed-user-notice.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNotice) Test Prepared (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNotice) Assertion Succeeded (Constraint: is true, Value: true) @@ -34,7 +34,20 @@ Test Triggered Suppressed Notice (PHPUnit\TestFixture\Event\SuppressedUserNotice message Test Passed (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNotice) Test Finished (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNotice) -Test Suite Finished (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNoticeErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNoticeErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Suppressed Notice (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNoticeErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 1024, + 'message' => 'message', + 'file' => '%s%e_files%eSuppressedUserNoticeTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNoticeErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest::testSuppressedUserNoticeErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\SuppressedUserNoticeTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/suppressed-user-warning.phpt b/tests/end-to-end/event/suppressed-user-warning.phpt index 0e7669d939b..29f834d07c2 100644 --- a/tests/end-to-end/event/suppressed-user-warning.phpt +++ b/tests/end-to-end/event/suppressed-user-warning.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\SuppressedUserWarningTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\SuppressedUserWarningTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarning) Test Prepared (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarning) Assertion Succeeded (Constraint: is true, Value: true) @@ -34,7 +34,20 @@ Test Triggered Suppressed Warning (PHPUnit\TestFixture\Event\SuppressedUserWarni message Test Passed (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarning) Test Finished (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarning) -Test Suite Finished (PHPUnit\TestFixture\Event\SuppressedUserWarningTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarningErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarningErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Suppressed Warning (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarningErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 512, + 'message' => 'message', + 'file' => '%s%e_files%eSuppressedUserWarningTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarningErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\SuppressedUserWarningTest::testSuppressedUserWarningErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\SuppressedUserWarningTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/user-deprecated.phpt b/tests/end-to-end/event/user-deprecated.phpt index 039bde2e4d0..e20f8423c5e 100644 --- a/tests/end-to-end/event/user-deprecated.phpt +++ b/tests/end-to-end/event/user-deprecated.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\DeprecatedFeatureTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\DeprecatedFeatureTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedFeature) Test Prepared (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedFeature) Test Triggered Deprecation (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedFeature) @@ -36,7 +36,20 @@ message Assertion Succeeded (Constraint: is true, Value: true) Test Passed (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedFeature) Test Finished (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedFeature) -Test Suite Finished (PHPUnit\TestFixture\Event\DeprecatedFeatureTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedSuppressedErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedSuppressedErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Suppressed Deprecation (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedSuppressedErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 16384, + 'message' => 'message', + 'file' => '%s%e_files%eDeprecatedFeatureTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedSuppressedErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\DeprecatedFeatureTest::testDeprecatedSuppressedErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\DeprecatedFeatureTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/user-error.phpt b/tests/end-to-end/event/user-error.phpt index 2434c4588d0..a6cbcd69ff3 100644 --- a/tests/end-to-end/event/user-error.phpt +++ b/tests/end-to-end/event/user-error.phpt @@ -21,20 +21,28 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\UserErrorTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\UserErrorTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) Test Prepared (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) Assertion Succeeded (Constraint: is true, Value: true) Test Triggered Error (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) message -Test Passed (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) +Test Errored (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) +Any E_*_ERROR must abort execution Test Finished (PHPUnit\TestFixture\Event\UserErrorTest::testUserError) -Test Suite Finished (PHPUnit\TestFixture\Event\UserErrorTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\UserErrorTest::testUserErrorMustAbortExecution) +Test Prepared (PHPUnit\TestFixture\Event\UserErrorTest::testUserErrorMustAbortExecution) +Test Triggered Error (PHPUnit\TestFixture\Event\UserErrorTest::testUserErrorMustAbortExecution) +message +Test Errored (PHPUnit\TestFixture\Event\UserErrorTest::testUserErrorMustAbortExecution) +Any E_*_ERROR must abort execution +Test Finished (PHPUnit\TestFixture\Event\UserErrorTest::testUserErrorMustAbortExecution) +Test Suite Finished (PHPUnit\TestFixture\Event\UserErrorTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 2) diff --git a/tests/end-to-end/event/user-notice.phpt b/tests/end-to-end/event/user-notice.phpt index a731096bd48..d7e18c7dd54 100644 --- a/tests/end-to-end/event/user-notice.phpt +++ b/tests/end-to-end/event/user-notice.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\UserNoticeTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\UserNoticeTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNotice) Test Prepared (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNotice) Assertion Succeeded (Constraint: is true, Value: true) @@ -34,7 +34,20 @@ Test Triggered Notice (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNotice) message Test Passed (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNotice) Test Finished (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNotice) -Test Suite Finished (PHPUnit\TestFixture\Event\UserNoticeTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNoticeErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNoticeErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Notice (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNoticeErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 1024, + 'message' => 'message', + 'file' => '%s%e_files%eUserNoticeTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNoticeErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\UserNoticeTest::testUserNoticeErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\UserNoticeTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/event/user-warning.phpt b/tests/end-to-end/event/user-warning.phpt index 3cfde783a26..49624596b7b 100644 --- a/tests/end-to-end/event/user-warning.phpt +++ b/tests/end-to-end/event/user-warning.phpt @@ -21,12 +21,12 @@ unlink($traceFile); --EXPECTF-- PHPUnit Started (PHPUnit %s using %s) Test Runner Configured -Test Suite Loaded (1 test) +Test Suite Loaded (2 tests) Event Facade Sealed Test Runner Started Test Suite Sorted -Test Runner Execution Started (1 test) -Test Suite Started (PHPUnit\TestFixture\Event\UserWarningTest, 1 test) +Test Runner Execution Started (2 tests) +Test Suite Started (PHPUnit\TestFixture\Event\UserWarningTest, 2 tests) Test Preparation Started (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarning) Test Prepared (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarning) Assertion Succeeded (Constraint: is true, Value: true) @@ -34,7 +34,20 @@ Test Triggered Warning (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarni message Test Passed (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarning) Test Finished (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarning) -Test Suite Finished (PHPUnit\TestFixture\Event\UserWarningTest, 1 test) +Test Preparation Started (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarningErrorGetLast) +Test Prepared (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarningErrorGetLast) +Assertion Succeeded (Constraint: is null, Value: null) +Test Triggered Warning (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarningErrorGetLast) +message +Assertion Succeeded (Constraint: is of type array, Value: Array &0 [ + 'type' => 512, + 'message' => 'message', + 'file' => '%s%e_files%eUserWarningTest.php', + 'line' => %d, +]) +Test Passed (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarningErrorGetLast) +Test Finished (PHPUnit\TestFixture\Event\UserWarningTest::testUserWarningErrorGetLast) +Test Suite Finished (PHPUnit\TestFixture\Event\UserWarningTest, 2 tests) Test Runner Execution Finished Test Runner Finished PHPUnit Finished (Shell Exit Code: 0) diff --git a/tests/end-to-end/generic/deprecations-can-be-ignored-using-attribute.phpt b/tests/end-to-end/generic/deprecations-can-be-ignored-using-attribute.phpt index a08eb198123..98c217e3420 100644 --- a/tests/end-to-end/generic/deprecations-can-be-ignored-using-attribute.phpt +++ b/tests/end-to-end/generic/deprecations-can-be-ignored-using-attribute.phpt @@ -15,11 +15,11 @@ PHPUnit %s by Sebastian Bergmann and contributors. Runtime: %s -.D 2 / 2 (100%) +.D.D 4 / 4 (100%) Time: %s, Memory: %s -1 test triggered 1 deprecation: +2 tests triggered 2 deprecations: 1) %sIgnoreDeprecationsTest.php:%d message @@ -29,5 +29,13 @@ Triggered by: * PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwo %sIgnoreDeprecationsTest.php:%d +2) %sIgnoreDeprecationsTest.php:%d +message + +Triggered by: + +* PHPUnit\TestFixture\Event\IgnoreDeprecationsTest::testTwoErrorGetLast + %sIgnoreDeprecationsTest.php:%d + OK, but there were issues! -Tests: 2, Assertions: 2, Deprecations: 1. +Tests: 4, Assertions: 6, Deprecations: 2.