Skip to content

Commit 6b4e234

Browse files
Merge branch '11.4' into 11.5
2 parents 23031e0 + 3cefce3 commit 6b4e234

File tree

8 files changed

+152
-4
lines changed

8 files changed

+152
-4
lines changed

src/Event/Value/Test/Issue/IssueTrigger.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
*/
1717
abstract class IssueTrigger
1818
{
19+
public static function test(): TestTrigger
20+
{
21+
return new TestTrigger;
22+
}
23+
1924
public static function self(): SelfTrigger
2025
{
2126
return new SelfTrigger;
@@ -40,6 +45,16 @@ final private function __construct()
4045
{
4146
}
4247

48+
/**
49+
* Your test code triggers an issue.
50+
*
51+
* @phpstan-assert-if-true TestTrigger $this
52+
*/
53+
public function isTest(): bool
54+
{
55+
return false;
56+
}
57+
4358
/**
4459
* Your own code triggers an issue in your own code.
4560
*
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types=1);
2+
/*
3+
* This file is part of PHPUnit.
4+
*
5+
* (c) Sebastian Bergmann <sebastian@phpunit.de>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
namespace PHPUnit\Event\Code\IssueTrigger;
11+
12+
/**
13+
* @immutable
14+
*
15+
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
16+
*/
17+
final class TestTrigger extends IssueTrigger
18+
{
19+
/**
20+
* Your test code triggers an issue.
21+
*/
22+
public function isTest(): true
23+
{
24+
return true;
25+
}
26+
27+
/**
28+
* Your own code triggers an issue in your own code.
29+
*/
30+
public function isSelf(): true
31+
{
32+
return true;
33+
}
34+
35+
public function asString(): string
36+
{
37+
return 'issue triggered by test code';
38+
}
39+
}

src/Runner/ErrorHandler.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,10 +271,14 @@ private function trigger(TestMethod $test, bool $filterTrigger): IssueTrigger
271271
$triggeredInFirstPartyCode = false;
272272
$triggerCalledFromFirstPartyCode = false;
273273

274-
if (isset($trace[0]['file']) &&
275-
($trace[0]['file'] === $test->file() ||
276-
$this->sourceFilter->includes($this->source, $trace[0]['file']))) {
277-
$triggeredInFirstPartyCode = true;
274+
if (isset($trace[0]['file'])) {
275+
if ($trace[0]['file'] === $test->file()) {
276+
return IssueTrigger::test();
277+
}
278+
279+
if ($this->sourceFilter->includes($this->source, $trace[0]['file'])) {
280+
$triggeredInFirstPartyCode = true;
281+
}
278282
}
279283

280284
if (isset($trace[1]['file']) &&

tests/end-to-end/regression/6028.phpt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
--TEST--
2+
https://github.com/sebastianbergmann/phpunit/issues/6028
3+
--FILE--
4+
<?php declare(strict_types=1);
5+
$_SERVER['argv'][] = '--do-not-cache-result';
6+
$_SERVER['argv'][] = '--display-deprecations';
7+
$_SERVER['argv'][] = '--configuration';
8+
$_SERVER['argv'][] = __DIR__ . '/6028';
9+
10+
require_once __DIR__ . '/../../bootstrap.php';
11+
12+
(new PHPUnit\TextUI\Application)->run($_SERVER['argv']);
13+
--EXPECTF--
14+
PHPUnit %s by Sebastian Bergmann and contributors.
15+
16+
Runtime: %s
17+
Configuration: %sphpunit.xml
18+
19+
D 1 / 1 (100%)
20+
21+
Time: %s, Memory: %s
22+
23+
1 test triggered 1 deprecation:
24+
25+
1) %sIssue6028Test.php:20
26+
message
27+
28+
Triggered by:
29+
30+
* PHPUnit\TestFixture\Issue6028\Issue6028Test::testOne
31+
%sIssue6028Test.php:18
32+
33+
OK, but there were issues!
34+
Tests: 1, Assertions: 1, Deprecations: 1.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="../../../../phpunit.xsd"
4+
>
5+
<testsuites>
6+
<testsuite name="default">
7+
<directory>tests</directory>
8+
</testsuite>
9+
</testsuites>
10+
11+
<source ignoreIndirectDeprecations="true" restrictNotices="true" restrictWarnings="true">
12+
<include>
13+
<directory>src</directory>
14+
</include>
15+
</source>
16+
</phpunit>

tests/end-to-end/regression/6028/src/.gitkeep

Whitespace-only changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php declare(strict_types=1);
2+
/*
3+
* This file is part of PHPUnit.
4+
*
5+
* (c) Sebastian Bergmann <sebastian@phpunit.de>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
namespace PHPUnit\TestFixture\Issue6028;
11+
12+
use const E_USER_DEPRECATED;
13+
use function trigger_error;
14+
use PHPUnit\Framework\TestCase;
15+
16+
final class Issue6028Test extends TestCase
17+
{
18+
public function testOne(): void
19+
{
20+
trigger_error('message', E_USER_DEPRECATED);
21+
22+
$this->assertTrue(true);
23+
}
24+
}

tests/unit/Event/Value/Test/IssueTriggerTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,24 @@
2020
#[Small]
2121
final class IssueTriggerTest extends TestCase
2222
{
23+
public function testCanBeTest(): void
24+
{
25+
$trigger = IssueTrigger::test();
26+
27+
$this->assertTrue($trigger->isTest());
28+
$this->assertTrue($trigger->isSelf());
29+
$this->assertFalse($trigger->isDirect());
30+
$this->assertFalse($trigger->isIndirect());
31+
$this->assertFalse($trigger->isUnknown());
32+
$this->assertSame('issue triggered by test code', $trigger->asString());
33+
}
34+
2335
public function testCanBeSelf(): void
2436
{
2537
$trigger = IssueTrigger::self();
2638

2739
$this->assertTrue($trigger->isSelf());
40+
$this->assertFalse($trigger->isTest());
2841
$this->assertFalse($trigger->isDirect());
2942
$this->assertFalse($trigger->isIndirect());
3043
$this->assertFalse($trigger->isUnknown());
@@ -36,6 +49,7 @@ public function testCanBeDirect(): void
3649
$trigger = IssueTrigger::direct();
3750

3851
$this->assertTrue($trigger->isDirect());
52+
$this->assertFalse($trigger->isTest());
3953
$this->assertFalse($trigger->isSelf());
4054
$this->assertFalse($trigger->isIndirect());
4155
$this->assertFalse($trigger->isUnknown());
@@ -47,6 +61,7 @@ public function testCanBeIndirect(): void
4761
$trigger = IssueTrigger::indirect();
4862

4963
$this->assertTrue($trigger->isIndirect());
64+
$this->assertFalse($trigger->isTest());
5065
$this->assertFalse($trigger->isSelf());
5166
$this->assertFalse($trigger->isDirect());
5267
$this->assertFalse($trigger->isUnknown());
@@ -57,6 +72,7 @@ public function testCanBeUnknown(): void
5772
{
5873
$trigger = IssueTrigger::unknown();
5974

75+
$this->assertFalse($trigger->isTest());
6076
$this->assertFalse($trigger->isSelf());
6177
$this->assertFalse($trigger->isDirect());
6278
$this->assertFalse($trigger->isIndirect());

0 commit comments

Comments
 (0)