TestsCommand

Class
extends AbstractCommand
Final: Yes

Facilitates the execution of the PHPUnit testing framework.

Description

This class MUST NOT be overridden and SHALL configure testing parameters dynamically.

Attributes
#[AsCommand]
$name : 'tests'
$description : 'Runs PHPUnit tests.'
$help : 'This command runs PHPUnit to execute your tests.'

Table of Contents

Constants

 = 'phpunit.xml'

Properties

Methods

__construct()

Constructs a new AbstractCommand instance.

 : mixed
configure()

Configures the testing command input constraints.

 : void
execute()

Triggers the PHPUnit engine based on resolved paths and settings.

 : int
getAbsolutePath()

Computes the absolute path for a given relative or absolute path.

 : string
getConfigFile()

Determines the correct absolute path to a configuration file.

 : string
getCurrentWorkingDirectory()

Retrieves the current working directory of the application.

 : string
getDevToolsFile()

Resolves the absolute path to a file within the fast-forward/dev-tools package.

 : string
runCommand()

Configures and executes a registered console command by name.

 : int
runProcess()

Executes a given system process gracefully and outputs its buffer.

 : int
resolvePath()

Safely constructs an absolute path tied to a defined capability option.

 : string
Constants

Constants

CONFIG

Public
public string CONFIG = 'phpunit.xml'

Description

identifies the local configuration file for PHPUnit processes

Properties

$filesystem

Protected Read-only
protected Filesystem $filesystem
Methods

__construct()

Public

Constructs a new AbstractCommand instance.

public __construct(CoverageSummaryLoaderInterface  $coverageSummaryLoader, ComposerJson  $composerJson, Filesystem  $filesystem) : mixed
Parameters
$coverageSummaryLoader : CoverageSummaryLoaderInterface

Description

the loader used for coverage-php summaries

$composerJson : ComposerJson

Description

the composer.json reader for autoload information

$filesystem : Filesystem

Description

the filesystem utility used for path resolution

configure()

Protected

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.

execute()

Protected

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
int

Description

the status integer describing the termination code

getAbsolutePath()

Protected

Computes the absolute path for a given relative or absolute path.

protected getAbsolutePath( string  $relativePath) : string

Description

This method MUST return the exact path if it is already absolute. If relative, it SHALL make it absolute relying on the current working directory.

Parameters
$relativePath : string

Description

the path to evaluate or resolve

Return values
string

Description

the resolved absolute path

getConfigFile()

Protected

Determines the correct absolute path to a configuration file.

protected getConfigFile( string  $filename[, bool  $force = false]) : string

Description

The method MUST attempt to resolve the configuration file locally in the working directory. If absent and not forced, it SHALL provide the default equivalent from the package itself.

Parameters
$filename : string

Description

the name of the configuration file

$force : bool = false

Description

determines whether to bypass fallback and forcefully return the local file path

Return values
string

Description

the resolved absolute path to the configuration file

getCurrentWorkingDirectory()

Protected

Retrieves the current working directory of the application.

protected getCurrentWorkingDirectory() : string

Description

The method MUST return the initial working directory defined by the application. If not available, it SHALL fall back to the safe current working directory.

Return values
string

Description

the absolute path to the current working directory

getDevToolsFile()

Protected

Resolves the absolute path to a file within the fast-forward/dev-tools package.

protected getDevToolsFile( string  $filename) : string

Description

This method uses Composer's InstalledVersions to determine the installation path of the fast-forward/dev-tools package and returns the absolute path to the given filename within it. It is used as a fallback when a configuration file is not found in the project root.

Parameters
$filename : string

Description

the name of the file to resolve within the dev-tools package

Return values
string

Description

the absolute path to the file inside the dev-tools package

runCommand()

Protected

Configures and executes a registered console command by name.

protected runCommand( string  $command, OutputInterface  $output) : int

Description

The method MUST run the specified command with the provided input and output interfaces.

Parameters
$command : string

Description

the commandline name of the command to execute

$output : OutputInterface

Description

the interface for buffering output

Return values
int

Description

the status code resulting from the dispatched command

runProcess()

Protected

Executes a given system process gracefully and outputs its buffer.

protected runProcess(Process  $command, OutputInterface  $output[, bool  $tty = true]) : int

Description

The method MUST execute the provided command ensuring the output is channeled to the OutputInterface. It SHOULD leverage TTY if supported. If the process fails, it MUST return self::FAILURE; otherwise, it SHALL return self::SUCCESS.

Parameters
$command : Process

Description

the configured process instance to run

$output : OutputInterface

Description

the output interface to log warnings or results

$tty : bool = true
Return values
int

Description

the status code of the command execution

configureCoverageArguments()

Private
private configureCoverageArguments(InputInterface  $input, array<int, string>  &$arguments, bool  $requiresCoverageReport) : string|null
Parameters
$input : InputInterface

Description

the raw parameter definitions

$arguments : array<int, string>

Description

the mutable argument list for the PHPUnit process

$requiresCoverageReport : bool

Description

indicates whether a coverage-php report is required

Return values
string|null

Description

the absolute path to the generated coverage-php report

resolveMinimumCoverage()

Private
private resolveMinimumCoverage(InputInterface  $input) : float|null
Parameters
$input : InputInterface

Description

the raw parameter definitions

Return values
float|null

Description

the validated minimum coverage percentage, if configured

resolvePath()

Private

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
string

Description

validated absolute path string

validateMinimumCoverage()

Private
private validateMinimumCoverage( string  $coverageReportPath, float  $minimumCoverage, OutputInterface  $output) : int
Parameters
$coverageReportPath : string

Description

the generated coverage-php report path

$minimumCoverage : float

Description

the required line coverage percentage

$output : OutputInterface

Description

the output interface to log validation results

Return values
int

Description

the final status code after validating minimum coverage