Skip to content

Commit 8439145

Browse files
committed
PHPCSDebug/TokenList: add tests for CSS and JS
These tests safeguard that the sniff works just as well when given a CSS or JS file.
1 parent 61fb35f commit 8439145

File tree

5 files changed

+298
-1
lines changed

5 files changed

+298
-1
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#id, .class_name {
2+
color: #FFFFFF !important;
3+
text-align: center;
4+
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.9);
5+
}
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
<?php
2+
/**
3+
* PHPCSDevTools, tools for PHP_CodeSniffer sniff developers.
4+
*
5+
* @package PHPCSDevTools
6+
* @copyright 2019 PHPCSDevTools Contributors
7+
* @license https://opensource.org/licenses/LGPL-3.0 LGPL3
8+
* @link https://github.com/PHPCSStandards/PHPCSDevTools
9+
*/
10+
11+
namespace PHPCSDebug\Tests\Debug;
12+
13+
use PHPCSUtils\TestUtils\UtilityMethodTestCase;
14+
15+
/**
16+
* Unit test class for the TokenList sniff.
17+
*
18+
* @covers \PHPCSDebug\Sniffs\Debug\TokenListSniff
19+
*
20+
* @since 1.0.0
21+
*/
22+
final class TokenListCssTest extends UtilityMethodTestCase
23+
{
24+
25+
/**
26+
* The file extension of the test case file.
27+
*
28+
* @var string
29+
*/
30+
protected static $fileExtension = 'css';
31+
32+
/**
33+
* Set the name of a sniff to pass to PHPCS to limit the run (and force it to record errors).
34+
*
35+
* @var array
36+
*/
37+
protected static $selectedSniff = ['PHPCSDebug.Debug.TokenList'];
38+
39+
/**
40+
* Test the actual output of the TokenList sniff.
41+
*
42+
* @return void
43+
*/
44+
public function testOutput()
45+
{
46+
$expected = <<<'EOD'
47+
48+
Ptr | Ln | Col | Cond | ( #) | Token Type | [len]: Content
49+
-------------------------------------------------------------------------
50+
0 | L1 | C 1 | CC 0 | ( 0) | T_OPEN_TAG | [ 0]:
51+
1 | L1 | C 1 | CC 0 | ( 0) | T_HASH | [ 1]: #
52+
2 | L1 | C 2 | CC 0 | ( 0) | T_STRING | [ 2]: id
53+
3 | L1 | C 4 | CC 0 | ( 0) | T_COMMA | [ 1]: ,
54+
4 | L1 | C 5 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
55+
5 | L1 | C 6 | CC 0 | ( 0) | T_STRING_CONCAT | [ 1]: .
56+
6 | L1 | C 7 | CC 0 | ( 0) | T_STRING | [ 10]: class_name
57+
7 | L1 | C 17 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
58+
8 | L1 | C 18 | CC 0 | ( 0) | T_OPEN_CURLY_BRACKET | [ 1]: {
59+
9 | L1 | C 19 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
60+
61+
10 | L2 | C 1 | CC 0 | ( 0) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
62+
11 | L2 | C 5 | CC 0 | ( 0) | T_STYLE | [ 5]: color
63+
12 | L2 | C 10 | CC 0 | ( 0) | T_COLON | [ 1]: :
64+
13 | L2 | C 11 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
65+
14 | L2 | C 12 | CC 0 | ( 0) | T_COLOUR | [ 7]: #FFFFFF
66+
15 | L2 | C 19 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
67+
16 | L2 | C 20 | CC 0 | ( 0) | T_BOOLEAN_NOT | [ 1]: !
68+
17 | L2 | C 21 | CC 0 | ( 0) | T_STRING | [ 9]: important
69+
18 | L2 | C 30 | CC 0 | ( 0) | T_SEMICOLON | [ 1]: ;
70+
19 | L2 | C 31 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
71+
72+
20 | L3 | C 1 | CC 0 | ( 0) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
73+
21 | L3 | C 5 | CC 0 | ( 0) | T_STYLE | [ 10]: text-align
74+
22 | L3 | C 15 | CC 0 | ( 0) | T_COLON | [ 1]: :
75+
23 | L3 | C 16 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
76+
24 | L3 | C 17 | CC 0 | ( 0) | T_STRING | [ 6]: center
77+
25 | L3 | C 23 | CC 0 | ( 0) | T_SEMICOLON | [ 1]: ;
78+
26 | L3 | C 24 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
79+
80+
27 | L4 | C 1 | CC 0 | ( 0) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
81+
28 | L4 | C 5 | CC 0 | ( 0) | T_STYLE | [ 11]: text-shadow
82+
29 | L4 | C 16 | CC 0 | ( 0) | T_COLON | [ 1]: :
83+
30 | L4 | C 17 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
84+
31 | L4 | C 18 | CC 0 | ( 0) | T_LNUMBER | [ 1]: 0
85+
32 | L4 | C 19 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
86+
33 | L4 | C 20 | CC 0 | ( 0) | T_LNUMBER | [ 1]: 1
87+
34 | L4 | C 21 | CC 0 | ( 0) | T_STRING | [ 2]: px
88+
35 | L4 | C 23 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
89+
36 | L4 | C 24 | CC 0 | ( 0) | T_LNUMBER | [ 1]: 1
90+
37 | L4 | C 25 | CC 0 | ( 0) | T_STRING | [ 2]: px
91+
38 | L4 | C 27 | CC 0 | ( 0) | T_WHITESPACE | [ 1]: ⸱
92+
39 | L4 | C 28 | CC 0 | ( 0) | T_STRING | [ 4]: rgba
93+
40 | L4 | C 32 | CC 0 | ( 0) | T_OPEN_PARENTHESIS | [ 1]: (
94+
41 | L4 | C 33 | CC 0 | ( 1) | T_LNUMBER | [ 1]: 0
95+
42 | L4 | C 34 | CC 0 | ( 1) | T_COMMA | [ 1]: ,
96+
43 | L4 | C 35 | CC 0 | ( 1) | T_WHITESPACE | [ 1]: ⸱
97+
44 | L4 | C 36 | CC 0 | ( 1) | T_LNUMBER | [ 1]: 0
98+
45 | L4 | C 37 | CC 0 | ( 1) | T_COMMA | [ 1]: ,
99+
46 | L4 | C 38 | CC 0 | ( 1) | T_WHITESPACE | [ 1]: ⸱
100+
47 | L4 | C 39 | CC 0 | ( 1) | T_LNUMBER | [ 1]: 0
101+
48 | L4 | C 40 | CC 0 | ( 1) | T_COMMA | [ 1]: ,
102+
49 | L4 | C 41 | CC 0 | ( 1) | T_WHITESPACE | [ 1]: ⸱
103+
50 | L4 | C 42 | CC 0 | ( 1) | T_DNUMBER | [ 3]: 0.9
104+
51 | L4 | C 45 | CC 0 | ( 0) | T_CLOSE_PARENTHESIS | [ 1]: )
105+
52 | L4 | C 46 | CC 0 | ( 0) | T_SEMICOLON | [ 1]: ;
106+
53 | L4 | C 47 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
107+
108+
54 | L5 | C 1 | CC 0 | ( 0) | T_CLOSE_CURLY_BRACKET | [ 1]: }
109+
55 | L5 | C 2 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
110+
111+
56 | L6 | C 1 | CC 0 | ( 0) | T_CLOSE_TAG | [ 0]:
112+
113+
EOD;
114+
115+
$this->expectOutputString($expected);
116+
$this->setOutputCallback([$this, 'normalizeLineEndings']);
117+
118+
self::$phpcsFile->process();
119+
}
120+
121+
/**
122+
* Callback function to normalize line endings in generated output.
123+
*
124+
* @param string $output The output as send to screen.
125+
*
126+
* @return string The output with *nix line endings.
127+
*/
128+
public function normalizeLineEndings($output)
129+
{
130+
return \str_replace(["\r\n", "\r"], "\n", $output);
131+
}
132+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
jQuery(window).ready(function() {
2+
spinner.addClass('is-active');
3+
doSomething(function(response) {
4+
if ('number' === typeof response && 1 === response) {
5+
// Do something.
6+
}
7+
}, 'json');
8+
});
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
<?php
2+
/**
3+
* PHPCSDevTools, tools for PHP_CodeSniffer sniff developers.
4+
*
5+
* @package PHPCSDevTools
6+
* @copyright 2019 PHPCSDevTools Contributors
7+
* @license https://opensource.org/licenses/LGPL-3.0 LGPL3
8+
* @link https://github.com/PHPCSStandards/PHPCSDevTools
9+
*/
10+
11+
namespace PHPCSDebug\Tests\Debug;
12+
13+
use PHPCSUtils\TestUtils\UtilityMethodTestCase;
14+
15+
/**
16+
* Unit test class for the TokenList sniff.
17+
*
18+
* @covers \PHPCSDebug\Sniffs\Debug\TokenListSniff
19+
*
20+
* @since 1.0.0
21+
*/
22+
final class TokenListJsTest extends UtilityMethodTestCase
23+
{
24+
25+
/**
26+
* The file extension of the test case file.
27+
*
28+
* @var string
29+
*/
30+
protected static $fileExtension = 'js';
31+
32+
/**
33+
* Set the name of a sniff to pass to PHPCS to limit the run (and force it to record errors).
34+
*
35+
* @var array
36+
*/
37+
protected static $selectedSniff = ['PHPCSDebug.Debug.TokenList'];
38+
39+
/**
40+
* Test the actual output of the TokenList sniff.
41+
*
42+
* @return void
43+
*/
44+
public function testOutput()
45+
{
46+
$expected = <<<'EOD'
47+
48+
Ptr | Ln | Col | Cond | ( #) | Token Type | [len]: Content
49+
-------------------------------------------------------------------------
50+
0 | L1 | C 1 | CC 0 | ( 0) | T_OPEN_TAG | [ 0]:
51+
1 | L1 | C 1 | CC 0 | ( 0) | T_STRING | [ 6]: jQuery
52+
2 | L1 | C 7 | CC 0 | ( 0) | T_OPEN_PARENTHESIS | [ 1]: (
53+
3 | L1 | C 8 | CC 0 | ( 1) | T_STRING | [ 6]: window
54+
4 | L1 | C 14 | CC 0 | ( 0) | T_CLOSE_PARENTHESIS | [ 1]: )
55+
5 | L1 | C 15 | CC 0 | ( 0) | T_OBJECT_OPERATOR | [ 1]: .
56+
6 | L1 | C 16 | CC 0 | ( 0) | T_STRING | [ 5]: ready
57+
7 | L1 | C 21 | CC 0 | ( 0) | T_OPEN_PARENTHESIS | [ 1]: (
58+
8 | L1 | C 22 | CC 0 | ( 1) | T_CLOSURE | [ 8]: function
59+
9 | L1 | C 30 | CC 0 | ( 1) | T_OPEN_PARENTHESIS | [ 1]: (
60+
10 | L1 | C 31 | CC 0 | ( 1) | T_CLOSE_PARENTHESIS | [ 1]: )
61+
11 | L1 | C 32 | CC 0 | ( 1) | T_WHITESPACE | [ 1]: ⸱
62+
12 | L1 | C 33 | CC 0 | ( 1) | T_OPEN_CURLY_BRACKET | [ 1]: {
63+
13 | L1 | C 34 | CC 1 | ( 1) | T_WHITESPACE | [ 0]:
64+
65+
14 | L2 | C 1 | CC 1 | ( 1) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
66+
15 | L2 | C 5 | CC 1 | ( 1) | T_STRING | [ 7]: spinner
67+
16 | L2 | C 12 | CC 1 | ( 1) | T_OBJECT_OPERATOR | [ 1]: .
68+
17 | L2 | C 13 | CC 1 | ( 1) | T_STRING | [ 8]: addClass
69+
18 | L2 | C 21 | CC 1 | ( 1) | T_OPEN_PARENTHESIS | [ 1]: (
70+
19 | L2 | C 22 | CC 1 | ( 2) | T_CONSTANT_ENCAPSED_STRING | [ 11]: 'is-active'
71+
20 | L2 | C 33 | CC 1 | ( 1) | T_CLOSE_PARENTHESIS | [ 1]: )
72+
21 | L2 | C 34 | CC 1 | ( 1) | T_SEMICOLON | [ 1]: ;
73+
22 | L2 | C 35 | CC 1 | ( 1) | T_WHITESPACE | [ 0]:
74+
75+
23 | L3 | C 1 | CC 1 | ( 1) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
76+
24 | L3 | C 5 | CC 1 | ( 1) | T_STRING | [ 11]: doSomething
77+
25 | L3 | C 16 | CC 1 | ( 1) | T_OPEN_PARENTHESIS | [ 1]: (
78+
26 | L3 | C 17 | CC 1 | ( 2) | T_CLOSURE | [ 8]: function
79+
27 | L3 | C 25 | CC 1 | ( 2) | T_OPEN_PARENTHESIS | [ 1]: (
80+
28 | L3 | C 26 | CC 1 | ( 3) | T_STRING | [ 8]: response
81+
29 | L3 | C 34 | CC 1 | ( 2) | T_CLOSE_PARENTHESIS | [ 1]: )
82+
30 | L3 | C 35 | CC 1 | ( 2) | T_WHITESPACE | [ 1]: ⸱
83+
31 | L3 | C 36 | CC 1 | ( 2) | T_OPEN_CURLY_BRACKET | [ 1]: {
84+
32 | L3 | C 37 | CC 2 | ( 2) | T_WHITESPACE | [ 0]:
85+
86+
33 | L4 | C 1 | CC 2 | ( 2) | T_WHITESPACE | [ 8]: ⸱⸱⸱⸱⸱⸱⸱⸱
87+
34 | L4 | C 9 | CC 2 | ( 2) | T_IF | [ 2]: if
88+
35 | L4 | C 11 | CC 2 | ( 2) | T_WHITESPACE | [ 1]: ⸱
89+
36 | L4 | C 12 | CC 2 | ( 2) | T_OPEN_PARENTHESIS | [ 1]: (
90+
37 | L4 | C 13 | CC 2 | ( 3) | T_CONSTANT_ENCAPSED_STRING | [ 8]: 'number'
91+
38 | L4 | C 21 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
92+
39 | L4 | C 22 | CC 2 | ( 3) | T_IS_IDENTICAL | [ 3]: ===
93+
40 | L4 | C 25 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
94+
41 | L4 | C 26 | CC 2 | ( 3) | T_TYPEOF | [ 6]: typeof
95+
42 | L4 | C 32 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
96+
43 | L4 | C 33 | CC 2 | ( 3) | T_STRING | [ 8]: response
97+
44 | L4 | C 41 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
98+
45 | L4 | C 42 | CC 2 | ( 3) | T_BOOLEAN_AND | [ 2]: &&
99+
46 | L4 | C 44 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
100+
47 | L4 | C 45 | CC 2 | ( 3) | T_LNUMBER | [ 1]: 1
101+
48 | L4 | C 46 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
102+
49 | L4 | C 47 | CC 2 | ( 3) | T_IS_IDENTICAL | [ 3]: ===
103+
50 | L4 | C 50 | CC 2 | ( 3) | T_WHITESPACE | [ 1]: ⸱
104+
51 | L4 | C 51 | CC 2 | ( 3) | T_STRING | [ 8]: response
105+
52 | L4 | C 59 | CC 2 | ( 2) | T_CLOSE_PARENTHESIS | [ 1]: )
106+
53 | L4 | C 60 | CC 2 | ( 2) | T_WHITESPACE | [ 1]: ⸱
107+
54 | L4 | C 61 | CC 2 | ( 2) | T_OPEN_CURLY_BRACKET | [ 1]: {
108+
55 | L4 | C 62 | CC 3 | ( 2) | T_WHITESPACE | [ 0]:
109+
110+
56 | L5 | C 1 | CC 3 | ( 2) | T_WHITESPACE | [ 12]: ⸱⸱⸱⸱⸱⸱⸱⸱⸱⸱⸱⸱
111+
57 | L5 | C 13 | CC 3 | ( 2) | T_COMMENT | [ 16]: // Do something.
112+
113+
58 | L6 | C 1 | CC 3 | ( 2) | T_WHITESPACE | [ 8]: ⸱⸱⸱⸱⸱⸱⸱⸱
114+
59 | L6 | C 9 | CC 2 | ( 2) | T_CLOSE_CURLY_BRACKET | [ 1]: }
115+
60 | L6 | C 10 | CC 2 | ( 2) | T_WHITESPACE | [ 0]:
116+
117+
61 | L7 | C 1 | CC 2 | ( 2) | T_WHITESPACE | [ 4]: ⸱⸱⸱⸱
118+
62 | L7 | C 5 | CC 1 | ( 2) | T_CLOSE_CURLY_BRACKET | [ 1]: }
119+
63 | L7 | C 6 | CC 1 | ( 2) | T_COMMA | [ 1]: ,
120+
64 | L7 | C 7 | CC 1 | ( 2) | T_WHITESPACE | [ 1]: ⸱
121+
65 | L7 | C 8 | CC 1 | ( 2) | T_CONSTANT_ENCAPSED_STRING | [ 6]: 'json'
122+
66 | L7 | C 14 | CC 1 | ( 1) | T_CLOSE_PARENTHESIS | [ 1]: )
123+
67 | L7 | C 15 | CC 1 | ( 1) | T_SEMICOLON | [ 1]: ;
124+
68 | L7 | C 16 | CC 1 | ( 1) | T_WHITESPACE | [ 0]:
125+
126+
69 | L8 | C 1 | CC 0 | ( 1) | T_CLOSE_CURLY_BRACKET | [ 1]: }
127+
70 | L8 | C 2 | CC 0 | ( 0) | T_CLOSE_PARENTHESIS | [ 1]: )
128+
71 | L8 | C 3 | CC 0 | ( 0) | T_SEMICOLON | [ 1]: ;
129+
72 | L8 | C 4 | CC 0 | ( 0) | T_WHITESPACE | [ 0]:
130+
131+
73 | L9 | C 1 | CC 0 | ( 0) | T_CLOSE_TAG | [ 0]:
132+
133+
EOD;
134+
135+
$this->expectOutputString($expected);
136+
$this->setOutputCallback([$this, 'normalizeLineEndings']);
137+
138+
self::$phpcsFile->process();
139+
}
140+
141+
/**
142+
* Callback function to normalize line endings in generated output.
143+
*
144+
* @param string $output The output as send to screen.
145+
*
146+
* @return string The output with *nix line endings.
147+
*/
148+
public function normalizeLineEndings($output)
149+
{
150+
return \str_replace(["\r\n", "\r"], "\n", $output);
151+
}
152+
}

phpunit.xml.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<testsuites>
1616
<testsuite name="PHPCSDevTools">
17-
<directory suffix="UnitTest.php">./PHPCSDebug/Tests/</directory>
17+
<directory suffix="Test.php">./PHPCSDebug/Tests/</directory>
1818
</testsuite>
1919
</testsuites>
2020
</phpunit>

0 commit comments

Comments
 (0)