Skip to content

Commit 5e0aac5

Browse files
Implement PHPUnit\Runner\Extension\Facade::replaceOutput() and PHPUnit\Runner\Extension\Facade::replacesOutput() to allow extensions to disable event more default output
1 parent e62c274 commit 5e0aac5

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

ChangeLog-10.1.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ All notable changes of the PHPUnit 10.1 release series are documented in this fi
44

55
## [10.1.2] - 2023-MM-DD
66

7-
### Fixed
7+
### Added
88

9-
* `PHPUnit\Event\Telemetry\Info::garbageCollectorStatus()` is missing
9+
* `PHPUnit\Runner\Extension\Facade::replaceOutput()` and `PHPUnit\Runner\Extension\Facade::replacesOutput()`
10+
* `PHPUnit\Event\Telemetry\Info::garbageCollectorStatus()`
1011

1112
## [10.1.1] - 2023-04-17
1213

src/Runner/Extension/Facade.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121
final class Facade
2222
{
23+
private bool $replacesOutput = false;
2324
private bool $replacesProgressOutput = false;
2425
private bool $replacesResultOutput = false;
2526
private bool $requiresCodeCoverageCollection = false;
@@ -50,14 +51,24 @@ public function registerTracer(Tracer $tracer): void
5051
EventFacade::instance()->registerTracer($tracer);
5152
}
5253

54+
public function replaceOutput(): void
55+
{
56+
$this->replacesOutput = true;
57+
}
58+
59+
public function replacesOutput(): bool
60+
{
61+
return $this->replacesOutput;
62+
}
63+
5364
public function replaceProgressOutput(): void
5465
{
5566
$this->replacesProgressOutput = true;
5667
}
5768

5869
public function replacesProgressOutput(): bool
5970
{
60-
return $this->replacesProgressOutput;
71+
return $this->replacesOutput || $this->replacesProgressOutput;
6172
}
6273

6374
public function replaceResultOutput(): void
@@ -67,7 +78,7 @@ public function replaceResultOutput(): void
6778

6879
public function replacesResultOutput(): bool
6980
{
70-
return $this->replacesResultOutput;
81+
return $this->replacesOutput || $this->replacesResultOutput;
7182
}
7283

7384
public function requireCodeCoverageCollection(): void

src/TextUI/Application.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public function run(array $argv): int
106106

107107
$pharExtensions = null;
108108
$extensionRequiresCodeCoverageCollection = false;
109+
$extensionReplacesOutput = false;
109110
$extensionReplacesProgressOutput = false;
110111
$extensionReplacesResultOutput = false;
111112

@@ -118,6 +119,7 @@ public function run(array $argv): int
118119

119120
$extensionRequirements = $this->bootstrapExtensions($configuration);
120121
$extensionRequiresCodeCoverageCollection = $extensionRequirements['requiresCodeCoverageCollection'];
122+
$extensionReplacesOutput = $extensionRequirements['replacesOutput'];
121123
$extensionReplacesProgressOutput = $extensionRequirements['replacesProgressOutput'];
122124
$extensionReplacesResultOutput = $extensionRequirements['replacesResultOutput'];
123125
}
@@ -136,15 +138,18 @@ public function run(array $argv): int
136138

137139
$printer = OutputFacade::init(
138140
$configuration,
141+
$extensionReplacesOutput,
139142
$extensionReplacesProgressOutput,
140143
$extensionReplacesResultOutput
141144
);
142145

143-
$this->writeRuntimeInformation($printer, $configuration);
144-
$this->writePharExtensionInformation($printer, $pharExtensions);
145-
$this->writeRandomSeedInformation($printer, $configuration);
146+
if (!$extensionReplacesResultOutput) {
147+
$this->writeRuntimeInformation($printer, $configuration);
148+
$this->writePharExtensionInformation($printer, $pharExtensions);
149+
$this->writeRandomSeedInformation($printer, $configuration);
146150

147-
$printer->print(PHP_EOL);
151+
$printer->print(PHP_EOL);
152+
}
148153

149154
$this->registerLogfileWriters($configuration);
150155

@@ -191,7 +196,10 @@ public function run(array $argv): int
191196

192197
$result = TestResultFacade::result();
193198

194-
OutputFacade::printResult($result, $testDoxResult, $duration);
199+
if (!$extensionReplacesResultOutput) {
200+
OutputFacade::printResult($result, $testDoxResult, $duration);
201+
}
202+
195203
CodeCoverage::instance()->generateReports($printer, $configuration);
196204

197205
$shellExitCode = (new ShellExitCodeCalculator)->calculate(
@@ -332,7 +340,7 @@ private function buildTestSuite(Configuration $configuration): TestSuite
332340
}
333341

334342
/**
335-
* @psalm-return array{requiresCodeCoverageCollection: bool, replacesProgressOutput: bool, replacesResultOutput: bool}
343+
* @psalm-return array{requiresCodeCoverageCollection: bool, replacesOutput: bool, replacesProgressOutput: bool, replacesResultOutput: bool}
336344
*/
337345
private function bootstrapExtensions(Configuration $configuration): array
338346
{
@@ -361,6 +369,7 @@ private function bootstrapExtensions(Configuration $configuration): array
361369

362370
return [
363371
'requiresCodeCoverageCollection' => $facade->requiresCodeCoverageCollection(),
372+
'replacesOutput' => $facade->replacesOutput(),
364373
'replacesProgressOutput' => $facade->replacesProgressOutput(),
365374
'replacesResultOutput' => $facade->replacesResultOutput(),
366375
];

src/TextUI/Output/Facade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ final class Facade
4040
* @throws EventFacadeIsSealedException
4141
* @throws UnknownSubscriberTypeException
4242
*/
43-
public static function init(Configuration $configuration, bool $extensionReplacesProgressOutput, bool $extensionReplacesResultOutput): Printer
43+
public static function init(Configuration $configuration, bool $extensionReplacesOutput, bool $extensionReplacesProgressOutput, bool $extensionReplacesResultOutput): Printer
4444
{
4545
self::createPrinter($configuration);
4646

0 commit comments

Comments
 (0)