-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/2497-map-settings-to-sniff-included-via-path' of …
- Loading branch information
Showing
9 changed files
with
563 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
<?php | ||
/** | ||
* Tests for the \PHP_CodeSniffer\Ruleset class using a Linux-style absolute path to include a sniff. | ||
* | ||
* @author Juliette Reinders Folmer <[email protected]> | ||
* @copyright 2019 Juliette Reinders Folmer. All rights reserved. | ||
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | ||
*/ | ||
|
||
namespace PHP_CodeSniffer\Tests\Core\Ruleset; | ||
|
||
use PHP_CodeSniffer\Config; | ||
use PHP_CodeSniffer\Ruleset; | ||
use PHPUnit\Framework\TestCase; | ||
|
||
class RuleInclusionAbsoluteLinuxTest extends TestCase | ||
{ | ||
|
||
/** | ||
* The Ruleset object. | ||
* | ||
* @var \PHP_CodeSniffer\Ruleset | ||
*/ | ||
protected $ruleset; | ||
|
||
/** | ||
* Path to the ruleset file. | ||
* | ||
* @var string | ||
*/ | ||
private $standard = ''; | ||
|
||
/** | ||
* The original content of the ruleset. | ||
* | ||
* @var string | ||
*/ | ||
private $contents = ''; | ||
|
||
|
||
/** | ||
* Initialize the config and ruleset objects. | ||
* | ||
* @return void | ||
*/ | ||
public function setUp() | ||
{ | ||
$this->standard = __DIR__.'/'.basename(__FILE__, '.php').'.xml'; | ||
$repoRootDir = dirname(dirname(dirname(__DIR__))); | ||
|
||
// On-the-fly adjust the ruleset test file to be able to test sniffs included with absolute paths. | ||
$contents = file_get_contents($this->standard); | ||
$this->contents = $contents; | ||
|
||
$newPath = $repoRootDir; | ||
if (DIRECTORY_SEPARATOR === '\\') { | ||
$newPath = str_replace('\\', '/', $repoRootDir); | ||
} | ||
|
||
$adjusted = str_replace('%path_slash_forward%', $newPath, $contents); | ||
|
||
if (file_put_contents($this->standard, $adjusted) === false) { | ||
$this->markTestSkipped('On the fly ruleset adjustment failed'); | ||
} | ||
|
||
// Initialize the config and ruleset objects for the test. | ||
$config = new Config(["--standard={$this->standard}"]); | ||
$this->ruleset = new Ruleset($config); | ||
|
||
}//end setUp() | ||
|
||
|
||
/** | ||
* Reset ruleset file. | ||
* | ||
* @return void | ||
*/ | ||
public function tearDown() | ||
{ | ||
file_put_contents($this->standard, $this->contents); | ||
|
||
}//end tearDown() | ||
|
||
|
||
/** | ||
* Test that sniffs registed with a Linux absolute path are correctly recognized and that | ||
* properties are correctly set for them. | ||
* | ||
* @return void | ||
*/ | ||
public function testLinuxStylePathRuleInclusion() | ||
{ | ||
// Test that the sniff is correctly registered. | ||
$this->assertObjectHasAttribute('sniffCodes', $this->ruleset); | ||
$this->assertCount(1, $this->ruleset->sniffCodes); | ||
$this->assertArrayHasKey('Generic.Formatting.SpaceAfterNot', $this->ruleset->sniffCodes); | ||
$this->assertSame( | ||
'PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterNotSniff', | ||
$this->ruleset->sniffCodes['Generic.Formatting.SpaceAfterNot'] | ||
); | ||
|
||
// Test that the sniff properties are correctly set. | ||
$this->assertSame( | ||
'10', | ||
$this->ruleset->sniffs['PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterNotSniff']->spacing | ||
); | ||
|
||
}//end testLinuxStylePathRuleInclusion() | ||
|
||
|
||
}//end class |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?xml version="1.0"?> | ||
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="RuleInclusionAbsoluteLinuxTest" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd"> | ||
|
||
<!-- %path_slash_forward% will be replaced on the fly --> | ||
<rule ref="%path_slash_forward%/src/Standards/Generic/Sniffs/Formatting/SpaceAfterNotSniff.php"> | ||
<properties> | ||
<property name="spacing" value="10" /> | ||
</properties> | ||
</rule> | ||
|
||
</ruleset> |
112 changes: 112 additions & 0 deletions
112
tests/Core/Ruleset/RuleInclusionAbsoluteWindowsTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
<?php | ||
/** | ||
* Tests for the \PHP_CodeSniffer\Ruleset class using a Windows-style absolute path to include a sniff. | ||
* | ||
* @author Juliette Reinders Folmer <[email protected]> | ||
* @copyright 2019 Juliette Reinders Folmer. All rights reserved. | ||
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | ||
*/ | ||
|
||
namespace PHP_CodeSniffer\Tests\Core\Ruleset; | ||
|
||
use PHP_CodeSniffer\Config; | ||
use PHP_CodeSniffer\Ruleset; | ||
use PHPUnit\Framework\TestCase; | ||
|
||
class RuleInclusionAbsoluteWindowsTest extends TestCase | ||
{ | ||
|
||
/** | ||
* The Ruleset object. | ||
* | ||
* @var \PHP_CodeSniffer\Ruleset | ||
*/ | ||
protected $ruleset; | ||
|
||
/** | ||
* Path to the ruleset file. | ||
* | ||
* @var string | ||
*/ | ||
private $standard = ''; | ||
|
||
/** | ||
* The original content of the ruleset. | ||
* | ||
* @var string | ||
*/ | ||
private $contents = ''; | ||
|
||
|
||
/** | ||
* Initialize the config and ruleset objects. | ||
* | ||
* @return void | ||
*/ | ||
public function setUp() | ||
{ | ||
if (DIRECTORY_SEPARATOR === '/') { | ||
$this->markTestSkipped('Windows specific test'); | ||
} | ||
|
||
$this->standard = __DIR__.'/'.basename(__FILE__, '.php').'.xml'; | ||
$repoRootDir = dirname(dirname(dirname(__DIR__))); | ||
|
||
// On-the-fly adjust the ruleset test file to be able to test sniffs included with absolute paths. | ||
$contents = file_get_contents($this->standard); | ||
$this->contents = $contents; | ||
|
||
$adjusted = str_replace('%path_slash_back%', $repoRootDir, $contents); | ||
|
||
if (file_put_contents($this->standard, $adjusted) === false) { | ||
$this->markTestSkipped('On the fly ruleset adjustment failed'); | ||
} | ||
|
||
// Initialize the config and ruleset objects for the test. | ||
$config = new Config(["--standard={$this->standard}"]); | ||
$this->ruleset = new Ruleset($config); | ||
|
||
}//end setUp() | ||
|
||
|
||
/** | ||
* Reset ruleset file. | ||
* | ||
* @return void | ||
*/ | ||
public function tearDown() | ||
{ | ||
if (DIRECTORY_SEPARATOR !== '/') { | ||
file_put_contents($this->standard, $this->contents); | ||
} | ||
|
||
}//end tearDown() | ||
|
||
|
||
/** | ||
* Test that sniffs registed with a Windows absolute path are correctly recognized and that | ||
* properties are correctly set for them. | ||
* | ||
* @return void | ||
*/ | ||
public function testWindowsStylePathRuleInclusion() | ||
{ | ||
// Test that the sniff is correctly registered. | ||
$this->assertObjectHasAttribute('sniffCodes', $this->ruleset); | ||
$this->assertCount(1, $this->ruleset->sniffCodes); | ||
$this->assertArrayHasKey('Generic.Formatting.SpaceAfterCast', $this->ruleset->sniffCodes); | ||
$this->assertSame( | ||
'PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff', | ||
$this->ruleset->sniffCodes['Generic.Formatting.SpaceAfterCast'] | ||
); | ||
|
||
// Test that the sniff property is correctly set. | ||
$this->assertSame( | ||
'10', | ||
$this->ruleset->sniffs['PHP_CodeSniffer\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff']->spacing | ||
); | ||
|
||
}//end testWindowsStylePathRuleInclusion() | ||
|
||
|
||
}//end class |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?xml version="1.0"?> | ||
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="RuleInclusionAbsoluteWindowsTest" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd"> | ||
|
||
<!-- %path_slash_back% will be replaced on the fly --> | ||
<rule ref="%path_slash_back%\src\Standards\Generic\Sniffs\Formatting\SpaceAfterCastSniff.php"> | ||
<properties> | ||
<property name="spacing" value="10" /> | ||
</properties> | ||
</rule> | ||
|
||
</ruleset> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?xml version="1.0"?> | ||
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="RuleInclusionTest-include" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd"> | ||
|
||
<rule ref="Generic.Metrics.NestingLevel"> | ||
<properties> | ||
<property name="nestingLevel" value="2" /> | ||
</properties> | ||
</rule> | ||
|
||
</ruleset> |
Oops, something went wrong.