PHP 8.3.31
Preview: ExpandRulesetReferenceTest.php Size: 5.35 KB
/proc/self/root/opt/cpanel/ea-wappspector/vendor/squizlabs/php_codesniffer/tests/Core/Ruleset/ExpandRulesetReferenceTest.php

<?php
/**
 * Test the Ruleset::expandRulesetReference() method.
 *
 * @author    Juliette Reinders Folmer <phpcs_nospam@adviesenzo.nl>
 * @copyright 2024 PHPCSStandards and contributors
 * @license   https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/licence.txt BSD Licence
 */

namespace PHP_CodeSniffer\Tests\Core\Ruleset;

use PHP_CodeSniffer\Ruleset;
use PHP_CodeSniffer\Tests\ConfigDouble;
use PHP_CodeSniffer\Tests\Core\Ruleset\AbstractRulesetTestCase;

/**
 * Test various aspects of the Ruleset::expandRulesetReference() method not covered by other tests.
 *
 * @covers \PHP_CodeSniffer\Ruleset::expandRulesetReference
 */
final class ExpandRulesetReferenceTest extends AbstractRulesetTestCase
{


    /**
     * Test handling of path references relative to the originally included ruleset.
     *
     * @return void
     */
    public function testRulesetRelativePathReferences()
    {
        // Set up the ruleset.
        $standard = __DIR__.'/ExpandRulesetReferenceTest.xml';
        $config   = new ConfigDouble(["--standard=$standard"]);
        $ruleset  = new Ruleset($config);

        $expected = [
            'ExternalA.CheckSomething.Valid'              => 'Fixtures\\ExternalA\\Sniffs\\CheckSomething\\ValidSniff',
            'TestStandard.ValidSniffs.RegisterEmptyArray' => 'Fixtures\\TestStandard\\Sniffs\\ValidSniffs\\RegisterEmptyArraySniff',
            'ExternalB.CheckMore.Valid'                   => 'Fixtures\\ExternalB\\Sniffs\\CheckMore\\ValidSniff',
        ];

        $this->assertSame($expected, $ruleset->sniffCodes);

    }//end testRulesetRelativePathReferences()


    /**
     * Test that an exception is thrown if a ruleset contains an unresolvable reference.
     *
     * @param string $standard    The standard to use for the test.
     * @param string $replacement The reference which will be used in the exception message.
     *
     * @dataProvider dataUnresolvableReferenceThrowsException
     *
     * @return void
     */
    public function testUnresolvableReferenceThrowsException($standard, $replacement)
    {
        // Set up the ruleset.
        $standard = __DIR__.'/'.$standard;
        $config   = new ConfigDouble(["--standard=$standard"]);

        $exceptionMessage  = 'ERROR: Referenced sniff "%s" does not exist.'.PHP_EOL;
        $exceptionMessage .= 'ERROR: No sniffs were registered.'.PHP_EOL.PHP_EOL;
        $this->expectRuntimeExceptionMessage(sprintf($exceptionMessage, $replacement));

        new Ruleset($config);

    }//end testUnresolvableReferenceThrowsException()


    /**
     * Data provider.
     *
     * @see testUnresolvableReferenceThrowsException()
     *
     * @return array<string, array<string, string>>
     */
    public static function dataUnresolvableReferenceThrowsException()
    {
        $data = [
            'Referencing a non-existent XML file'                     => [
                'standard'    => 'ExpandRulesetReferenceMissingFileTest.xml',
                'replacement' => './MissingFile.xml',
            ],
            'Referencing an invalid directory starting with "~"'      => [
                'standard'    => 'ExpandRulesetReferenceInvalidHomePathRefTest.xml',
                'replacement' => '~/src/Standards/Squiz/Sniffs/Files/',
            ],
            'Referencing an unknown standard'                         => [
                'standard'    => 'ExpandRulesetReferenceUnknownStandardTest.xml',
                'replacement' => 'UnknownStandard',
            ],
            'Referencing a non-existent category in a known standard' => [
                'standard'    => 'ExpandRulesetReferenceUnknownCategoryTest.xml',
                'replacement' => 'TestStandard.UnknownCategory',
            ],
            'Referencing a non-existent sniff in a known standard'    => [
                'standard'    => 'ExpandRulesetReferenceUnknownSniffTest.xml',
                'replacement' => 'TestStandard.InvalidSniffs.UnknownRule',
            ],
            'Referencing an invalid error code - no standard name'    => [
                'standard'    => 'ExpandRulesetReferenceInvalidErrorCode1Test.xml',
                'replacement' => '.Invalid.Undetermined.Found',
            ],
            'Referencing an invalid error code - no category name'    => [
                'standard'    => 'ExpandRulesetReferenceInvalidErrorCode2Test.xml',
                'replacement' => 'Standard..Undetermined.Found',
            ],
            'Referencing an invalid error code - no sniff name'       => [
                'standard'    => 'ExpandRulesetReferenceInvalidErrorCode3Test.xml',
                'replacement' => 'Standard.Invalid..Found',
            ],
        ];

        // Add tests which are only relevant for case-sensitive OSes.
        if (stripos(PHP_OS, 'WIN') === false) {
            $data['Referencing an existing sniff, but there is a case mismatch (OS-dependent) [1]'] = [
                'standard'    => 'ExpandRulesetReferenceCaseMismatch1Test.xml',
                'replacement' => 'psr12.functions.nullabletypedeclaration',
            ];
            $data['Referencing an existing sniff, but there is a case mismatch (OS-dependent) [2]'] = [
                'standard'    => 'ExpandRulesetReferenceCaseMismatch2Test.xml',
                'replacement' => 'PSR12.Functions.ReturntypeDeclaration',
            ];
        }

        return $data;

    }//end dataUnresolvableReferenceThrowsException()


}//end class

Directory Contents

Dirs: 1 × Files: 92

Name Size Perms Modified Actions
Fixtures DIR
- drwxr-xr-x 2025-11-04 16:30:35
Edit Download
3.83 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
217 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
11.11 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
10.83 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
512 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
547 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
425 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.48 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
337 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
643 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
330 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
2.51 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
332 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
333 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
325 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
434 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
364 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
5.35 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
621 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
508 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
515 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
469 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
2.49 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
349 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
374 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
247 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
8.16 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.42 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
742 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.23 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
556 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
4.67 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.55 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
465 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
4.13 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
369 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
21.06 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.99 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.18 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
345 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
592 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
394 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
6.12 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.39 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
0 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
420 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
201 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.13 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
362 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
439 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
997 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
12.43 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.67 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
11.24 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
24.71 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.31 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
317 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
12.04 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.81 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
355 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
2.08 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
446 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
444 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
454 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
445 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
2.71 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
10.27 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.28 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
482 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
3.19 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
479 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
364 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
18.56 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
1.84 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
728 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
732 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
729 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
338 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
343 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
376 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
439 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
354 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
16.73 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
371 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
367 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
373 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
373 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
369 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
513 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
360 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download
25.61 KB lrw-r--r-- 2025-11-04 16:30:35
Edit Download
622 B lrw-r--r-- 2025-11-04 16:30:35
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).