class Facade
Same name in this branch
- 11.1.x vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php \SebastianBergmann\CodeCoverage\Report\Html\Facade
- 11.1.x vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php \SebastianBergmann\CodeCoverage\Report\Xml\Facade
- 11.1.x vendor/phpunit/phpunit/src/Event/Facade.php \PHPUnit\Event\Facade
- 11.1.x vendor/phpunit/phpunit/src/Runner/Extension/Facade.php \PHPUnit\Runner\Extension\Facade
- 11.1.x vendor/phpunit/phpunit/src/Runner/TestResult/Facade.php \PHPUnit\TestRunner\TestResult\Facade
- 11.1.x vendor/phpunit/php-file-iterator/src/Facade.php \SebastianBergmann\FileIterator\Facade
@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
@internal This class is not covered by the backward compatibility promise for PHPUnit
Hierarchy
- class \PHPUnit\TextUI\Output\Facade
Expanded class hierarchy of Facade
1 file declares its use of Facade
- Application.php in vendor/
phpunit/ phpunit/ src/ TextUI/ Application.php
File
-
vendor/
phpunit/ phpunit/ src/ TextUI/ Output/ Facade.php, line 36
Namespace
PHPUnit\TextUI\OutputView source
final class Facade {
private static ?Printer $printer = null;
private static ?DefaultResultPrinter $defaultResultPrinter = null;
private static ?TestDoxResultPrinter $testDoxResultPrinter = null;
private static ?SummaryPrinter $summaryPrinter = null;
private static bool $defaultProgressPrinter = false;
/**
* @throws EventFacadeIsSealedException
* @throws UnknownSubscriberTypeException
*/
public static function init(Configuration $configuration, bool $extensionReplacesProgressOutput, bool $extensionReplacesResultOutput) : Printer {
self::createPrinter($configuration);
assert(self::$printer !== null);
if ($configuration->debug()) {
return self::$printer;
}
self::createUnexpectedOutputPrinter();
if (!$extensionReplacesProgressOutput) {
self::createProgressPrinter($configuration);
}
if (!$extensionReplacesResultOutput) {
self::createResultPrinter($configuration);
self::createSummaryPrinter($configuration);
}
if ($configuration->outputIsTeamCity()) {
new TeamCityLogger(DefaultPrinter::standardOutput(), EventFacade::instance());
}
return self::$printer;
}
/**
* @psalm-param ?array<string, TestResultCollection> $testDoxResult
*/
public static function printResult(TestResult $result, ?array $testDoxResult, Duration $duration) : void {
assert(self::$printer !== null);
if ($result->numberOfTestsRun() > 0) {
if (self::$defaultProgressPrinter) {
self::$printer->print(PHP_EOL . PHP_EOL);
}
self::$printer->print((new ResourceUsageFormatter())->resourceUsage($duration) . PHP_EOL . PHP_EOL);
}
if (self::$testDoxResultPrinter !== null && $testDoxResult !== null) {
self::$testDoxResultPrinter->print($testDoxResult);
}
if (self::$defaultResultPrinter !== null) {
self::$defaultResultPrinter->print($result);
}
if (self::$summaryPrinter !== null) {
self::$summaryPrinter->print($result);
}
}
/**
* @throws CannotOpenSocketException
* @throws DirectoryDoesNotExistException
* @throws InvalidSocketException
*/
public static function printerFor(string $target) : Printer {
if ($target === 'php://stdout') {
if (!self::$printer instanceof NullPrinter) {
return self::$printer;
}
return DefaultPrinter::standardOutput();
}
return DefaultPrinter::from($target);
}
private static function createPrinter(Configuration $configuration) : void {
$printerNeeded = false;
if ($configuration->debug()) {
$printerNeeded = true;
}
if ($configuration->outputIsTeamCity()) {
$printerNeeded = true;
}
if ($configuration->outputIsTestDox()) {
$printerNeeded = true;
}
if (!$configuration->noOutput() && !$configuration->noProgress()) {
$printerNeeded = true;
}
if (!$configuration->noOutput() && !$configuration->noResults()) {
$printerNeeded = true;
}
if ($printerNeeded) {
if ($configuration->outputToStandardErrorStream()) {
self::$printer = DefaultPrinter::standardError();
return;
}
self::$printer = DefaultPrinter::standardOutput();
return;
}
self::$printer = new NullPrinter();
}
private static function createProgressPrinter(Configuration $configuration) : void {
assert(self::$printer !== null);
if (!self::useDefaultProgressPrinter($configuration)) {
return;
}
new DefaultProgressPrinter(self::$printer, EventFacade::instance(), $configuration->colors(), $configuration->columns(), $configuration->source());
self::$defaultProgressPrinter = true;
}
private static function useDefaultProgressPrinter(Configuration $configuration) : bool {
if ($configuration->noOutput()) {
return false;
}
if ($configuration->noProgress()) {
return false;
}
if ($configuration->outputIsTeamCity()) {
return false;
}
return true;
}
private static function createResultPrinter(Configuration $configuration) : void {
assert(self::$printer !== null);
if ($configuration->outputIsTestDox()) {
self::$defaultResultPrinter = new DefaultResultPrinter(self::$printer, true, true, $configuration->displayDetailsOnPhpunitDeprecations(), false, false, true, false, false, $configuration->displayDetailsOnTestsThatTriggerDeprecations(), $configuration->displayDetailsOnTestsThatTriggerErrors(), $configuration->displayDetailsOnTestsThatTriggerNotices(), $configuration->displayDetailsOnTestsThatTriggerWarnings(), $configuration->reverseDefectList());
}
if ($configuration->outputIsTestDox()) {
self::$testDoxResultPrinter = new TestDoxResultPrinter(self::$printer, $configuration->colors());
}
if ($configuration->noOutput() || $configuration->noResults()) {
return;
}
if (self::$defaultResultPrinter !== null) {
return;
}
self::$defaultResultPrinter = new DefaultResultPrinter(self::$printer, true, true, $configuration->displayDetailsOnPhpunitDeprecations(), true, true, true, $configuration->displayDetailsOnIncompleteTests(), $configuration->displayDetailsOnSkippedTests(), $configuration->displayDetailsOnTestsThatTriggerDeprecations(), $configuration->displayDetailsOnTestsThatTriggerErrors(), $configuration->displayDetailsOnTestsThatTriggerNotices(), $configuration->displayDetailsOnTestsThatTriggerWarnings(), $configuration->reverseDefectList());
}
private static function createSummaryPrinter(Configuration $configuration) : void {
assert(self::$printer !== null);
if (($configuration->noOutput() || $configuration->noResults()) && !($configuration->outputIsTeamCity() || $configuration->outputIsTestDox())) {
return;
}
self::$summaryPrinter = new SummaryPrinter(self::$printer, $configuration->colors());
}
/**
* @throws EventFacadeIsSealedException
* @throws UnknownSubscriberTypeException
*/
private static function createUnexpectedOutputPrinter() : void {
assert(self::$printer !== null);
new UnexpectedOutputPrinter(self::$printer, EventFacade::instance());
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Facade::$defaultProgressPrinter | private static | property | |
Facade::$defaultResultPrinter | private static | property | |
Facade::$printer | private static | property | |
Facade::$summaryPrinter | private static | property | |
Facade::$testDoxResultPrinter | private static | property | |
Facade::createPrinter | private static | function | |
Facade::createProgressPrinter | private static | function | |
Facade::createResultPrinter | private static | function | |
Facade::createSummaryPrinter | private static | function | |
Facade::createUnexpectedOutputPrinter | private static | function | |
Facade::init | public static | function | |
Facade::printerFor | public static | function | |
Facade::printResult | public static | function | @psalm-param ?array<string, TestResultCollection> $testDoxResult |
Facade::useDefaultProgressPrinter | private static | function |