You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.5 KiB
167 lines
5.5 KiB
<?php declare(strict_types=1);
|
|
/*
|
|
* This file is part of PHPUnit.
|
|
*
|
|
* (c) Sebastian Bergmann <sebastian@phpunit.de>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
namespace PHPUnit\TextUI\Configuration;
|
|
|
|
/**
|
|
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
|
|
*
|
|
* @psalm-immutable
|
|
*/
|
|
final class Source
|
|
{
|
|
/**
|
|
* @psalm-var non-empty-string
|
|
*/
|
|
private readonly ?string $baseline;
|
|
private readonly bool $ignoreBaseline;
|
|
private readonly FilterDirectoryCollection $includeDirectories;
|
|
private readonly FileCollection $includeFiles;
|
|
private readonly FilterDirectoryCollection $excludeDirectories;
|
|
private readonly FileCollection $excludeFiles;
|
|
private readonly bool $restrictDeprecations;
|
|
private readonly bool $restrictNotices;
|
|
private readonly bool $restrictWarnings;
|
|
private readonly bool $ignoreSuppressionOfDeprecations;
|
|
private readonly bool $ignoreSuppressionOfPhpDeprecations;
|
|
private readonly bool $ignoreSuppressionOfErrors;
|
|
private readonly bool $ignoreSuppressionOfNotices;
|
|
private readonly bool $ignoreSuppressionOfPhpNotices;
|
|
private readonly bool $ignoreSuppressionOfWarnings;
|
|
private readonly bool $ignoreSuppressionOfPhpWarnings;
|
|
|
|
/**
|
|
* @psalm-param non-empty-string $baseline
|
|
*/
|
|
public function __construct(?string $baseline, bool $ignoreBaseline, FilterDirectoryCollection $includeDirectories, FileCollection $includeFiles, FilterDirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $restrictDeprecations, bool $restrictNotices, bool $restrictWarnings, bool $ignoreSuppressionOfDeprecations, bool $ignoreSuppressionOfPhpDeprecations, bool $ignoreSuppressionOfErrors, bool $ignoreSuppressionOfNotices, bool $ignoreSuppressionOfPhpNotices, bool $ignoreSuppressionOfWarnings, bool $ignoreSuppressionOfPhpWarnings)
|
|
{
|
|
$this->baseline = $baseline;
|
|
$this->ignoreBaseline = $ignoreBaseline;
|
|
$this->includeDirectories = $includeDirectories;
|
|
$this->includeFiles = $includeFiles;
|
|
$this->excludeDirectories = $excludeDirectories;
|
|
$this->excludeFiles = $excludeFiles;
|
|
$this->restrictDeprecations = $restrictDeprecations;
|
|
$this->restrictNotices = $restrictNotices;
|
|
$this->restrictWarnings = $restrictWarnings;
|
|
$this->ignoreSuppressionOfDeprecations = $ignoreSuppressionOfDeprecations;
|
|
$this->ignoreSuppressionOfPhpDeprecations = $ignoreSuppressionOfPhpDeprecations;
|
|
$this->ignoreSuppressionOfErrors = $ignoreSuppressionOfErrors;
|
|
$this->ignoreSuppressionOfNotices = $ignoreSuppressionOfNotices;
|
|
$this->ignoreSuppressionOfPhpNotices = $ignoreSuppressionOfPhpNotices;
|
|
$this->ignoreSuppressionOfWarnings = $ignoreSuppressionOfWarnings;
|
|
$this->ignoreSuppressionOfPhpWarnings = $ignoreSuppressionOfPhpWarnings;
|
|
}
|
|
|
|
/**
|
|
* @psalm-assert-if-true !null $this->baseline
|
|
*/
|
|
public function useBaseline(): bool
|
|
{
|
|
return $this->hasBaseline() && !$this->ignoreBaseline;
|
|
}
|
|
|
|
/**
|
|
* @psalm-assert-if-true !null $this->baseline
|
|
*/
|
|
public function hasBaseline(): bool
|
|
{
|
|
return $this->baseline !== null;
|
|
}
|
|
|
|
/**
|
|
* @psalm-return non-empty-string
|
|
*
|
|
* @throws NoBaselineException
|
|
*/
|
|
public function baseline(): string
|
|
{
|
|
if (!$this->hasBaseline()) {
|
|
throw new NoBaselineException;
|
|
}
|
|
|
|
return $this->baseline;
|
|
}
|
|
|
|
public function includeDirectories(): FilterDirectoryCollection
|
|
{
|
|
return $this->includeDirectories;
|
|
}
|
|
|
|
public function includeFiles(): FileCollection
|
|
{
|
|
return $this->includeFiles;
|
|
}
|
|
|
|
public function excludeDirectories(): FilterDirectoryCollection
|
|
{
|
|
return $this->excludeDirectories;
|
|
}
|
|
|
|
public function excludeFiles(): FileCollection
|
|
{
|
|
return $this->excludeFiles;
|
|
}
|
|
|
|
public function notEmpty(): bool
|
|
{
|
|
return $this->includeDirectories->notEmpty() || $this->includeFiles->notEmpty();
|
|
}
|
|
|
|
public function restrictDeprecations(): bool
|
|
{
|
|
return $this->restrictDeprecations;
|
|
}
|
|
|
|
public function restrictNotices(): bool
|
|
{
|
|
return $this->restrictNotices;
|
|
}
|
|
|
|
public function restrictWarnings(): bool
|
|
{
|
|
return $this->restrictWarnings;
|
|
}
|
|
|
|
public function ignoreSuppressionOfDeprecations(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfDeprecations;
|
|
}
|
|
|
|
public function ignoreSuppressionOfPhpDeprecations(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfPhpDeprecations;
|
|
}
|
|
|
|
public function ignoreSuppressionOfErrors(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfErrors;
|
|
}
|
|
|
|
public function ignoreSuppressionOfNotices(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfNotices;
|
|
}
|
|
|
|
public function ignoreSuppressionOfPhpNotices(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfPhpNotices;
|
|
}
|
|
|
|
public function ignoreSuppressionOfWarnings(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfWarnings;
|
|
}
|
|
|
|
public function ignoreSuppressionOfPhpWarnings(): bool
|
|
{
|
|
return $this->ignoreSuppressionOfPhpWarnings;
|
|
}
|
|
}
|