* @copyright 2020 Squiz Pty Ltd (ABN 77 084 670 600) * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence */ namespace PHP_CodeSniffer\Tests\Core\Tokenizer; use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest; use PHP_CodeSniffer\Util\Tokens; class StableCommentWhitespaceWinTest extends AbstractMethodUnitTest { /** * Test that comment tokenization with new lines at the end of the comment is stable. * * @param string $testMarker The comment prefacing the test. * @param array $expectedTokens The tokenization expected. * * @dataProvider dataCommentTokenization * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testCommentTokenization($testMarker, $expectedTokens) { $tokens = self::$phpcsFile->getTokens(); $comment = $this->getTargetToken($testMarker, Tokens::$commentTokens); foreach ($expectedTokens as $key => $tokenInfo) { $this->assertSame(constant($tokenInfo['type']), $tokens[$comment]['code']); $this->assertSame($tokenInfo['type'], $tokens[$comment]['type']); $this->assertSame($tokenInfo['content'], $tokens[$comment]['content']); ++$comment; } }//end testCommentTokenization() /** * Data provider. * * @see testCommentTokenization() * * @return array */ public function dataCommentTokenization() { return [ [ '/* testSingleLineSlashComment */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testSingleLineSlashCommentTrailing */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testSingleLineSlashAnnotation */', [ [ 'type' => 'T_PHPCS_DISABLE', 'content' => '// phpcs:disable Stnd.Cat ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineSlashComment */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment1 ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment2 ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineSlashCommentWithIndent */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment1 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment2 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineSlashCommentWithAnnotationStart */', [ [ 'type' => 'T_PHPCS_IGNORE', 'content' => '// phpcs:ignore Stnd.Cat ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment2 ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineSlashCommentWithAnnotationMiddle */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment1 ', ], [ 'type' => 'T_PHPCS_IGNORE', 'content' => '// @phpcs:ignore Stnd.Cat ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineSlashCommentWithAnnotationEnd */', [ [ 'type' => 'T_COMMENT', 'content' => '// Comment1 ', ], [ 'type' => 'T_COMMENT', 'content' => '// Comment2 ', ], [ 'type' => 'T_PHPCS_IGNORE', 'content' => '// phpcs:ignore Stnd.Cat ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testSingleLineSlashCommentNoNewLineAtEnd */', [ [ 'type' => 'T_COMMENT', 'content' => '// Slash ', ], [ 'type' => 'T_CLOSE_TAG', 'content' => '?> ', ], ], ], [ '/* testSingleLineHashComment */', [ [ 'type' => 'T_COMMENT', 'content' => '# Comment ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testSingleLineHashCommentTrailing */', [ [ 'type' => 'T_COMMENT', 'content' => '# Comment ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineHashComment */', [ [ 'type' => 'T_COMMENT', 'content' => '# Comment1 ', ], [ 'type' => 'T_COMMENT', 'content' => '# Comment2 ', ], [ 'type' => 'T_COMMENT', 'content' => '# Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testMultiLineHashCommentWithIndent */', [ [ 'type' => 'T_COMMENT', 'content' => '# Comment1 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], [ 'type' => 'T_COMMENT', 'content' => '# Comment2 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], [ 'type' => 'T_COMMENT', 'content' => '# Comment3 ', ], [ 'type' => 'T_WHITESPACE', 'content' => ' ', ], ], ], [ '/* testSingleLineHashCommentNoNewLineAtEnd */', [ [ 'type' => 'T_COMMENT', 'content' => '# Hash ', ], [ 'type' => 'T_CLOSE_TAG', 'content' => '?> ', ], ], ], [ '/* testCommentAtEndOfFile */', [ [ 'type' => 'T_COMMENT', 'content' => '/* Comment', ], ], ], ]; }//end dataCommentTokenization() }//end class