Facilitates the execution of the PHPUnit testing framework.
Description
This class MUST NOT be overridden and SHALL configure testing parameters dynamically.
'tests'
'Runs PHPUnit tests.'
'This command runs PHPUnit to execute your tests.'
Interfaces
Defines the logger contract consumed by reusable command result helpers.
Constants
Properties
Methods
Adds the standard JSON output options to the current command.
Configures the testing command input constraints.
Triggers the PHPUnit engine based on resolved paths and settings.
Determines whether JSON output was requested.
Determines whether pretty JSON output was requested.
Logs a failed command result and returns the failure exit code.
Logs an informational command message at notice level.
Safely constructs an absolute path tied to a defined capability option.
Logs a successful command result and returns the success exit code.
private
ComposerJsonInterface
$composer
private
CoverageSummaryLoaderInterface
$coverageSummaryLoader
private
FileLocatorInterface
$fileLocator
private
FilesystemInterface
$filesystem
private
LoggerInterface
$logger
private
ProcessBuilderInterface
$processBuilder
private
ProcessQueueInterface
$processQueue
public
__construct(CoverageSummaryLoaderInterface
$coverageSummaryLoader, ComposerJsonInterface
$composer, FilesystemInterface
$filesystem, FileLocatorInterface
$fileLocator, ProcessBuilderInterface
$processBuilder, ProcessQueueInterface
$processQueue, LoggerInterface
$logger) : mixed
Parameters
Description
the loader used for coverage-php summaries
Description
the composer.json reader for autoload information
Description
the filesystem utility used for path resolution
$fileLocator
:
FileLocatorInterface
Description
the file locator used to resolve PHPUnit configuration
Description
the builder used to assemble the PHPUnit process
Description
the queue used to execute PHPUnit
$logger
:
LoggerInterface
Description
the output-aware logger
Adds the standard JSON output options to the current command.
protected
addJsonOption() : static
Return values
Configures the testing command input constraints.
protected
configure() : void
Description
The method MUST specify valid arguments for testing paths, caching directories, bootstrap scripts, and coverage instructions. It SHALL align with robust testing standards.
Triggers the PHPUnit engine based on resolved paths and settings.
protected
execute(InputInterface
$input, OutputInterface
$output) : int
Description
The method MUST assemble the necessary commands to initiate PHPUnit securely. It SHOULD optionally construct advanced configuration arguments such as caching and coverage.
Parameters
$input
:
InputInterface
Description
the runtime instruction set from the CLI
$output
:
OutputInterface
Description
the console feedback relay
Return values
Description
the status integer describing the termination code
Determines whether JSON output was requested.
protected
isJsonOutput(InputInterface
$input) : bool
Description
The pretty-json flag SHALL imply JSON output.
Parameters
$input
:
InputInterface
Return values
Determines whether pretty JSON output was requested.
protected
isPrettyJsonOutput(InputInterface
$input) : bool
Parameters
$input
:
InputInterface
Return values
private
configureCoverageArguments(InputInterface
$input, ProcessBuilderInterface
$processBuilder,
bool
$requiresCoverageReport) : ProcessBuilderInterface, string|null}
Parameters
$input
:
InputInterface
Description
the raw parameter definitions
Description
the process builder to extend with coverage arguments
$requiresCoverageReport
:
bool
Description
indicates whether a coverage-php report is required
Return values
Description
the extended builder and generated coverage-php report path
Logs a failed command result and returns the failure exit code.
private
failure(
string
$message, InputInterface
$input[,
array<string, mixed>
$context = []][,
string|null
$file = null][,
int|null
$line = null]) : int
Parameters
$message
:
string
Description
the failure message
$input
:
InputInterface
Description
the originating command input
$context
:
array<string, mixed>
=
[]
Description
optional extra log context
$file
:
string|null
=
null
Description
the related file path when known
$line
:
int|null
=
null
Description
the related line when known
Return values
Logs an informational command message at notice level.
private
notice(
string
$message, InputInterface
$input[,
array<string, mixed>
$context = []]) : void
Parameters
$message
:
string
Description
the notice message
$input
:
InputInterface
Description
the originating command input
$context
:
array<string, mixed>
=
[]
Description
optional extra log context
private
resolveMinimumCoverage(InputInterface
$input) : float|null
Parameters
$input
:
InputInterface
Description
the raw parameter definitions
Return values
Description
the validated minimum coverage percentage, if configured
Safely constructs an absolute path tied to a defined capability option.
private
resolvePath(InputInterface
$input,
string
$option) : string
Description
The method MUST compute absolute properties based on the supplied input parameters. It SHALL strictly return a securely bounded path string.
Parameters
$input
:
InputInterface
Description
the raw parameter definitions
$option
:
string
Description
the requested option key to resolve
Return values
Description
validated absolute path string
Logs a successful command result and returns the success exit code.
private
success(
string
$message, InputInterface
$input[,
array<string, mixed>
$context = []][,
string
$logLevel = LogLevel::INFO]) : int
Parameters
$message
:
string
Description
the success message
$input
:
InputInterface
Description
the originating command input
$context
:
array<string, mixed>
=
[]
Description
optional extra log context
$logLevel
:
string
=
LogLevel::INFO
Description
the PSR-3 log level used for the successful result
Return values
private
validateMinimumCoverage(
string
$coverageReportPath,
float
$minimumCoverage) : array{int, string, array}
Parameters
$coverageReportPath
:
string
Description
the generated coverage-php report path
$minimumCoverage
:
float
Description
the required line coverage percentage
Return values
Description
validation result, human message, and structured coverage context