File: //usr/local/wp/vendor/squizlabs/php_codesniffer/tests/Core/Standards/StandardRulesetsQATest.php
<?php
/**
* Tests that pre-defined standards do not throw errors.
*
* @copyright 2025 PHPCSStandards and contributors
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace PHP_CodeSniffer\Tests\Core\Standards;
use PHP_CodeSniffer\Ruleset;
use PHP_CodeSniffer\Tests\ConfigDouble;
use PHP_CodeSniffer\Tests\Core\Ruleset\AbstractRulesetTestCase;
/**
* Tests that pre-defined standards do not throw errors.
*
* @coversNothing
*/
final class StandardRulesetsQATest extends AbstractRulesetTestCase
{
/**
* QA check: verify that the PHPCS native rulesets do not throw any errors or other messages.
*
* This QA check will prevent issues like:
* - a sniff being removed, but still being referenced from within a PHPCS native ruleset.
* - a supported feature being removed, but still being used from within a PHPCS native ruleset.
*
* @param string $standard The name of the build-in standard to test.
*
* @dataProvider dataBuildInStandards
*
* @return void
*/
public function testBuildInStandardsDoNotContainErrors($standard)
{
ob_start();
$config = new ConfigDouble(["--standard=$standard"]);
$ruleset = new Ruleset($config);
$seenOutput = ob_get_contents();
ob_end_clean();
// Make sure no messages were thrown.
$this->assertSame('', $seenOutput);
// Make sure sniffs were registered.
$this->assertGreaterThanOrEqual(1, count($ruleset->sniffCodes));
}//end testBuildInStandardsDoNotContainErrors()
/**
* Data provider.
*
* @see self::testBuildInStandardsDoNotContainErrors()
*
* @return array<string, array<string, string>>
*/
public static function dataBuildInStandards()
{
// Get a list of all build-in, PHPCS native standards.
$sep = DIRECTORY_SEPARATOR;
$targetDir = dirname(dirname(dirname(__DIR__))).$sep.'src'.$sep.'Standards'.$sep;
$rulesetFiles = glob($targetDir.'*'.$sep.'ruleset.xml');
$data = [];
foreach ($rulesetFiles as $file) {
$standardName = basename(dirname($file));
$data[$standardName] = [
'standard' => $standardName,
];
}
return $data;
}//end dataBuildInStandards()
}//end class