mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 07:47:22 +01:00
Adds compact printer
This commit is contained in:
19
bin/pest
19
bin/pest
@ -14,6 +14,16 @@ use Symfony\Component\Console\Output\OutputInterface;
|
|||||||
// Ensures Collision's Printer is registered.
|
// Ensures Collision's Printer is registered.
|
||||||
$_SERVER['COLLISION_PRINTER'] = 'DefaultPrinter';
|
$_SERVER['COLLISION_PRINTER'] = 'DefaultPrinter';
|
||||||
|
|
||||||
|
$args = $_SERVER['argv'];
|
||||||
|
|
||||||
|
foreach ($args as $key => $value) {
|
||||||
|
if (str_contains($value, '--compact')) {
|
||||||
|
$_SERVER['COLLISION_PRINTER_COMPACT'] = 'true';
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Used when Pest is required using composer.
|
// Used when Pest is required using composer.
|
||||||
$vendorPath = dirname(__DIR__, 4) . '/vendor/autoload.php';
|
$vendorPath = dirname(__DIR__, 4) . '/vendor/autoload.php';
|
||||||
|
|
||||||
@ -38,19 +48,20 @@ use Symfony\Component\Console\Output\OutputInterface;
|
|||||||
);
|
);
|
||||||
|
|
||||||
$isDecorated = $argv->getParameterOption('--colors', 'always') !== 'never';
|
$isDecorated = $argv->getParameterOption('--colors', 'always') !== 'never';
|
||||||
|
|
||||||
$output = new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, $isDecorated);
|
$output = new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, $isDecorated);
|
||||||
|
|
||||||
$container = Container::getInstance();
|
$container = Container::getInstance();
|
||||||
$container->add(TestSuite::class, $testSuite);
|
$container->add(TestSuite::class, $testSuite);
|
||||||
$container->add(OutputInterface::class, $output);
|
$container->add(OutputInterface::class, $output);
|
||||||
|
|
||||||
$args = $_SERVER['argv'];
|
|
||||||
|
|
||||||
if ($argv->hasParameterOption('--test-directory')) {
|
|
||||||
foreach ($args as $key => $value) {
|
foreach ($args as $key => $value) {
|
||||||
if (strpos($value, '--test-directory') !== false) {
|
if (str_contains($value, '--test-directory')) {
|
||||||
unset($args[$key]);
|
unset($args[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (str_contains($value, '--compact')) {
|
||||||
|
unset($args[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,21 +4,14 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Pest;
|
namespace Pest;
|
||||||
|
|
||||||
use PHPUnit\TestRunner\TestResult\Facade;
|
|
||||||
use PHPUnit\TextUI\Application;
|
use PHPUnit\TextUI\Application;
|
||||||
use PHPUnit\TextUI\Configuration\Registry;
|
use PHPUnit\TextUI\Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
final class Kernel
|
final class Kernel
|
||||||
{
|
{
|
||||||
private const SUCCESS_EXIT = 0;
|
|
||||||
|
|
||||||
private const FAILURE_EXIT = 1;
|
|
||||||
|
|
||||||
private const EXCEPTION_EXIT = 2;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Kernel bootstrappers.
|
* The Kernel bootstrappers.
|
||||||
*
|
*
|
||||||
@ -55,6 +48,8 @@ final class Kernel
|
|||||||
* Handles the given argv.
|
* Handles the given argv.
|
||||||
*
|
*
|
||||||
* @param array<int, string> $argv
|
* @param array<int, string> $argv
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function handle(array $argv): int
|
public function handle(array $argv): int
|
||||||
{
|
{
|
||||||
@ -64,10 +59,8 @@ final class Kernel
|
|||||||
$argv, false,
|
$argv, false,
|
||||||
);
|
);
|
||||||
|
|
||||||
$returnCode = $this->returnCode();
|
|
||||||
|
|
||||||
return (new Plugins\Actions\AddsOutput())->__invoke(
|
return (new Plugins\Actions\AddsOutput())->__invoke(
|
||||||
$returnCode,
|
Result::exitCode(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,53 +71,4 @@ final class Kernel
|
|||||||
{
|
{
|
||||||
// ..
|
// ..
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the exit code, based on the facade's result.
|
|
||||||
*/
|
|
||||||
private function returnCode(): int
|
|
||||||
{
|
|
||||||
$result = Facade::result();
|
|
||||||
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
|
|
||||||
if ($result->wasSuccessfulIgnoringPhpunitWarnings()
|
|
||||||
&& ! $result->hasTestTriggeredPhpunitWarningEvents()) {
|
|
||||||
$returnCode = self::SUCCESS_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
$configuration = Registry::get();
|
|
||||||
|
|
||||||
if ($configuration->failOnEmptyTestSuite() && $result->numberOfTests() === 0) {
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($result->wasSuccessfulIgnoringPhpunitWarnings()) {
|
|
||||||
if ($configuration->failOnRisky() && $result->hasTestConsideredRiskyEvents()) {
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
$warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents()
|
|
||||||
+ $result->numberOfTestsWithTestTriggeredWarningEvents()
|
|
||||||
+ $result->numberOfTestsWithTestTriggeredPhpWarningEvents();
|
|
||||||
|
|
||||||
if ($configuration->failOnWarning() && $warnings > 0) {
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($configuration->failOnIncomplete() && $result->hasTestMarkedIncompleteEvents()) {
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($configuration->failOnSkipped() && $result->hasTestSkippedEvents()) {
|
|
||||||
$returnCode = self::FAILURE_EXIT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($result->hasTestErroredEvents()) {
|
|
||||||
return self::EXCEPTION_EXIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $returnCode;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||||||
namespace Pest\PendingCalls;
|
namespace Pest\PendingCalls;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
|
use NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter;
|
||||||
use Pest\TestSuite;
|
use Pest\TestSuite;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,6 +53,13 @@ final class UsesCall
|
|||||||
$this->targets = [$filename];
|
$this->targets = [$filename];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function compact(): self
|
||||||
|
{
|
||||||
|
DefaultPrinter::compact(true);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The directories or file where the
|
* The directories or file where the
|
||||||
* class or traits should be used.
|
* class or traits should be used.
|
||||||
|
|||||||
85
src/Result.php
Normal file
85
src/Result.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Pest;
|
||||||
|
|
||||||
|
use PHPUnit\TestRunner\TestResult\Facade;
|
||||||
|
use PHPUnit\TextUI\Configuration\Registry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
final class Result
|
||||||
|
{
|
||||||
|
private const SUCCESS_EXIT = 0;
|
||||||
|
|
||||||
|
private const FAILURE_EXIT = 1;
|
||||||
|
|
||||||
|
private const EXCEPTION_EXIT = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the exit code is different from 0.
|
||||||
|
*/
|
||||||
|
public static function failed(): bool
|
||||||
|
{
|
||||||
|
return ! self::ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the exit code is exactly 0.
|
||||||
|
*/
|
||||||
|
public static function ok(): bool
|
||||||
|
{
|
||||||
|
return self::exitCode() === 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the test execution's exit code.
|
||||||
|
*/
|
||||||
|
public static function exitCode(): int
|
||||||
|
{
|
||||||
|
$result = Facade::result();
|
||||||
|
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
|
||||||
|
if ($result->wasSuccessfulIgnoringPhpunitWarnings()
|
||||||
|
&& ! $result->hasTestTriggeredPhpunitWarningEvents()) {
|
||||||
|
$returnCode = self::SUCCESS_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
$configuration = Registry::get();
|
||||||
|
|
||||||
|
if ($configuration->failOnEmptyTestSuite() && $result->numberOfTests() === 0) {
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result->wasSuccessfulIgnoringPhpunitWarnings()) {
|
||||||
|
if ($configuration->failOnRisky() && $result->hasTestConsideredRiskyEvents()) {
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
$warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents()
|
||||||
|
+ $result->numberOfTestsWithTestTriggeredWarningEvents()
|
||||||
|
+ $result->numberOfTestsWithTestTriggeredPhpWarningEvents();
|
||||||
|
|
||||||
|
if ($configuration->failOnWarning() && $warnings > 0) {
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($configuration->failOnIncomplete() && $result->hasTestMarkedIncompleteEvents()) {
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($configuration->failOnSkipped() && $result->hasTestSkippedEvents()) {
|
||||||
|
$returnCode = self::FAILURE_EXIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result->hasTestErroredEvents()) {
|
||||||
|
return self::EXCEPTION_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $returnCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -773,4 +773,6 @@
|
|||||||
WARN Tests\Visual\TeamCity
|
WARN Tests\Visual\TeamCity
|
||||||
- it is can successfully call all public methods → Not supported yet.
|
- it is can successfully call all public methods → Not supported yet.
|
||||||
|
|
||||||
Tests: 4 incompleted, 1 todo, 18 skipped, 515 passed (1299 assertions)
|
Tests: 4 incomplete, 1 todo, 18 skipped, 515 passed (1294 assertions)
|
||||||
|
Duration: 1.01s
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Pest\Factories\Attributes\Covers;
|
|
||||||
use Pest\PendingCalls\TestCall;
|
use Pest\PendingCalls\TestCall;
|
||||||
use Pest\TestSuite;
|
use Pest\TestSuite;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
use PHPUnit\Framework\Attributes\CoversFunction;
|
|
||||||
use Tests\Fixtures\Covers\CoversClass1;
|
use Tests\Fixtures\Covers\CoversClass1;
|
||||||
use Tests\Fixtures\Covers\CoversClass2;
|
use Tests\Fixtures\Covers\CoversClass2;
|
||||||
use Tests\Fixtures\Covers\CoversClass3;
|
use Tests\Fixtures\Covers\CoversClass3;
|
||||||
|
|||||||
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
namespace Tests\Fixtures\Covers;
|
namespace Tests\Fixtures\Covers;
|
||||||
|
|
||||||
class CoversClass1 {
|
class CoversClass1
|
||||||
public function foo() {
|
{
|
||||||
|
public function foo()
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,4 +2,6 @@
|
|||||||
|
|
||||||
namespace Tests\Fixtures\Covers;
|
namespace Tests\Fixtures\Covers;
|
||||||
|
|
||||||
class CoversClass2 {}
|
class CoversClass2
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|||||||
@ -2,4 +2,6 @@
|
|||||||
|
|
||||||
namespace Tests\Fixtures\Covers;
|
namespace Tests\Fixtures\Covers;
|
||||||
|
|
||||||
class CoversClass3 {}
|
class CoversClass3
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user