From 142ef3bdc365327ab7a7c6cfae0b006cd8c62930 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 3 Sep 2021 09:28:25 +0200 Subject: [PATCH 1/3] AC-1100: Catch badly put newlines in LESS files --- Magento2/Sniffs/Less/ColonSpacingSniff.php | 18 ++++++++---------- Magento2/Tests/Less/ColonSpacingUnitTest.less | 2 +- Magento2/Tests/Less/ColonSpacingUnitTest.php | 1 + 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Magento2/Sniffs/Less/ColonSpacingSniff.php b/Magento2/Sniffs/Less/ColonSpacingSniff.php index dd8fee7f..2868db29 100644 --- a/Magento2/Sniffs/Less/ColonSpacingSniff.php +++ b/Magento2/Sniffs/Less/ColonSpacingSniff.php @@ -40,6 +40,12 @@ public function process(File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); + $nextSemicolon = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); + if (false !== $nextSemicolon && ($tokens[$nextSemicolon]['line'] !== $tokens[$stackPtr]['line'])) { + $error = 'Expected 1 space after colon in style definition; newline found'; + $phpcsFile->addError($error, $stackPtr, 'AfterNewline'); + } + if ($this->needValidateSpaces($phpcsFile, $stackPtr, $tokens)) { $this->validateSpaces($phpcsFile, $stackPtr, $tokens); } @@ -56,12 +62,7 @@ public function process(File $phpcsFile, $stackPtr) */ private function needValidateSpaces(File $phpcsFile, $stackPtr, $tokens) { - $nextSemicolon = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); - - if (false === $nextSemicolon - || ($tokens[$nextSemicolon]['line'] !== $tokens[$stackPtr]['line']) - || TokenizerSymbolsInterface::BITWISE_AND === $tokens[$stackPtr - 1]['content'] - ) { + if (TokenizerSymbolsInterface::BITWISE_AND === $tokens[$stackPtr - 1]['content']) { return false; } @@ -98,15 +99,12 @@ private function validateSpaces(File $phpcsFile, $stackPtr, array $tokens) $phpcsFile->addError('Expected 1 space after colon in style definition; 0 found', $stackPtr, 'NoneAfter'); } else { $content = $tokens[($stackPtr + 1)]['content']; - if (false === strpos($content, $phpcsFile->eolChar)) { + if (false !== strpos($content, ' ')) { $length = strlen($content); if ($length !== 1) { $error = sprintf('Expected 1 space after colon in style definition; %s found', $length); $phpcsFile->addError($error, $stackPtr, 'After'); } - } else { - $error = 'Expected 1 space after colon in style definition; newline found'; - $phpcsFile->addError($error, $stackPtr, 'AfterNewline'); } } } diff --git a/Magento2/Tests/Less/ColonSpacingUnitTest.less b/Magento2/Tests/Less/ColonSpacingUnitTest.less index d888af2e..37de49e4 100644 --- a/Magento2/Tests/Less/ColonSpacingUnitTest.less +++ b/Magento2/Tests/Less/ColonSpacingUnitTest.less @@ -13,7 +13,7 @@ div#foo { } .blah { - foo :'xyz'; + foo :'jkl'; } .foo { diff --git a/Magento2/Tests/Less/ColonSpacingUnitTest.php b/Magento2/Tests/Less/ColonSpacingUnitTest.php index b50e47d0..81b596e5 100644 --- a/Magento2/Tests/Less/ColonSpacingUnitTest.php +++ b/Magento2/Tests/Less/ColonSpacingUnitTest.php @@ -16,6 +16,7 @@ public function getErrorList() 8 => 1, 12 => 1, 16 => 2, + 20 => 1, ]; } From 2fc6815b671b033a7891d44aa3bc0e0e4651e100 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 3 Sep 2021 09:29:54 +0200 Subject: [PATCH 2/3] AC-1100: Catch badly put newlines in LESS files --- Magento2/Sniffs/Less/ColonSpacingSniff.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Magento2/Sniffs/Less/ColonSpacingSniff.php b/Magento2/Sniffs/Less/ColonSpacingSniff.php index 2868db29..d623ab3e 100644 --- a/Magento2/Sniffs/Less/ColonSpacingSniff.php +++ b/Magento2/Sniffs/Less/ColonSpacingSniff.php @@ -39,12 +39,6 @@ public function register() public function process(File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); - - $nextSemicolon = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); - if (false !== $nextSemicolon && ($tokens[$nextSemicolon]['line'] !== $tokens[$stackPtr]['line'])) { - $error = 'Expected 1 space after colon in style definition; newline found'; - $phpcsFile->addError($error, $stackPtr, 'AfterNewline'); - } if ($this->needValidateSpaces($phpcsFile, $stackPtr, $tokens)) { $this->validateSpaces($phpcsFile, $stackPtr, $tokens); @@ -95,6 +89,12 @@ private function validateSpaces(File $phpcsFile, $stackPtr, array $tokens) $phpcsFile->addError('There must be no space before a colon in a style definition', $stackPtr, 'Before'); } + $nextSemicolon = $phpcsFile->findNext(T_SEMICOLON, $stackPtr); + if (false !== $nextSemicolon && ($tokens[$nextSemicolon]['line'] !== $tokens[$stackPtr]['line'])) { + $error = 'Expected 1 space after colon in style definition; newline found'; + $phpcsFile->addError($error, $stackPtr, 'AfterNewline'); + } + if (T_WHITESPACE !== $tokens[($stackPtr + 1)]['code']) { $phpcsFile->addError('Expected 1 space after colon in style definition; 0 found', $stackPtr, 'NoneAfter'); } else { From e2aa287eb60ed7afed1cdce1f9d5225e2b3f309d Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 3 Sep 2021 13:26:55 +0200 Subject: [PATCH 3/3] AC-1100: Catch badly put newlines in LESS files --- Magento2/Sniffs/Less/ColonSpacingSniff.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Magento2/Sniffs/Less/ColonSpacingSniff.php b/Magento2/Sniffs/Less/ColonSpacingSniff.php index d623ab3e..505c44fd 100644 --- a/Magento2/Sniffs/Less/ColonSpacingSniff.php +++ b/Magento2/Sniffs/Less/ColonSpacingSniff.php @@ -39,7 +39,7 @@ public function register() public function process(File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); - + if ($this->needValidateSpaces($phpcsFile, $stackPtr, $tokens)) { $this->validateSpaces($phpcsFile, $stackPtr, $tokens); } @@ -75,7 +75,10 @@ private function needValidateSpaces(File $phpcsFile, $stackPtr, $tokens) } /** - * Validate Colon Spacing according to requirements + * Validate Colon Spacing according to requirements: + * - No spaces before colon + * - Exactly 1 space after colon + * - No property definition scattered among several lines * * @param File $phpcsFile * @param int $stackPtr