Comments (3)
Thank you for your report.
Please provide a minimal, self-contained, reproducing test case that shows the problem you are reporting.
Without such a minimal, self-contained, reproducing test case I will not be able to investigate this issue.
from phpunit.
Here's a really basic one (of course not very realistic, but it's minimal and self-contained). Same thing also (more realistic) is possible with exception handler
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\TestFixture;
use function set_error_handler;
use function trigger_error;
use PHPUnit\Framework\TestCase;
class SomeExternalDependency {
public function __construct()
{
set_error_handler([$this, 'logError']);
}
private function logError(): bool
{
return false;
}
}
class Issue5844Test extends TestCase
{
public function testSetErrorHandlerNonCallable(): void
{
new SomeExternalDependency();
trigger_error('error', E_USER_WARNING);
$this->assertTrue(true);
}
}
from phpunit.
Here is an repro: https://3v4l.org/GFd18
The issue is the callback must be restored in rebound context. I belive reflection can be used to detect the target context.
Here is docs https://www.php.net/manual/en/language.types.callable.php for all supportted callable types. All possibly private/not-callable-from-non-this must be tested.
php/php-src#14494 should be linked as IMO it is a little flaw in php design/callable validation on set_error_handler
.
from phpunit.
Related Issues (20)
- Change default value for `shortenArraysForExportThreshold` from `0` to `10`
- PHPUnit's error handler is not registered if Symfony is booted in a "before class" hook
- Doubled methods cannot be called from destructor on test double created by the return value generator HOT 14
- missing the upport to method Enum::cases() HOT 1
- Allow different file name to class name mapping HOT 2
- Include hint in deprecation notice for `--group`, `--exclude-group`, `--covers`, `--uses`, and `--test-suffix CLI` options HOT 1
- Text coverage report no longer shows colours HOT 13
- No good upgrade path for `processUncoveredFiles` HOT 9
- Testdox no longer outputs in real-time HOT 8
- Testdox prints random warning icons HOT 4
- Increase PHPStan Rule Level to 9
- Add a priority for hooks HOT 1
- Weird behaviour when mocking spread operator as argument. HOT 1
- Errors during write of `phpunit.xml` are not handled correctly when `--generate-configuration` is used
- `durationSincePrevious()` does not yield time since previous event of same type HOT 2
- Mark a test as passed although its expectation fail HOT 1
- symlinks ignored in stack trace file paths HOT 1
- `Test\Passed` event is not emitted for PHPT tests HOT 5
- Proposal: Accessing Thrown Exceptions HOT 2
- Support custom extension parameters on command line
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from phpunit.