-
Notifications
You must be signed in to change notification settings - Fork 160
[Test] Unit test for LineLengthSniff #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi! I'd like to work on this. |
As discussed with @lenaorobei, we need to fix #36 so that the unit test can work as expected. |
@lenaorobei With PR #50 (that fixes issue #36), we have a unit test covering the basic sniff. While writing the test, I found that the code for ignoring "long lines in case they contain strings intended for translation" is broken. The reason is that there is a wrong assumption in If you compare the Magento method and the method that it is overwriting:
you will notice that the Magento sniff expects the complete content of the line in the last parameter but only the stack pointer to the first token on the next line will be passed. To fix this check, one would have to implement the logic to assemble line and do the check as intended originally. Should this be done as part of this issue or would you like to create another issue for this? In the latter case, we could either close #6 when #50 is merged or the new issue woulde be a blocker for #6. |
I had some time today, so I went ahead and created an implementation in my fork (compare with develop branch). This implementation should fix the functionality. However, I found that the regular expression that is in use doesn't always work. An error wouldn't be triggered if "Phrase('xy')" or "__('xy')" was used in another context, for example:
But then, the question is if fixing this would be within the scope of this issue as it might be more complex to fix this for all possible contexts. |
@lenaorobei Sorry, I forgot to mention you here. Please could you check my last comment? |
@mzeis thanks for the investigation. Could you please create separate issue for this use case? |
@lenaorobei This is the issue for this use case: #75 |
#6: Fix line length sniff when using translations
Done in #74. |
…coding-standard-200 [Imported] Version 6
Fatal error: Uncaught TypeError: vsprintf(): Argument magento#2 ($values) must be of type array, int given in /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php:1056 Stack trace: #0 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php(1056): vsprintf('Direct throw of...', 531) magento#1 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php(706): PHP_CodeSniffer\Files\File->addMessage(false, 'Direct throw of...', 67, 4, 'FoundDirectThro...', 531, 8, false) magento#2 /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Exceptions/DirectThrowSniff.php(48): PHP_CodeSniffer\Files\File->addWarning('Direct throw of...', 526, 'FoundDirectThro...', 531) magento#3 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php(498): Magento2\Sniffs\Exceptions\DirectThrowSniff->process(Object(PHP_CodeSniffer\Files\LocalFile), 526) magento#4 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/LocalFile.php(92): PHP_CodeSniffer\Files\File->process() #5 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(630): PHP_CodeSniffer\Files\LocalFile->process() magento#6 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(434): PHP_CodeSniffer\Runner->processFile(Object(PHP_CodeSniffer\Files\LocalFile)) magento#7 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(114): PHP_CodeSniffer\Runner->run() magento#8 /srv/www/vendor/squizlabs/php_codesniffer/bin/phpcs(18): PHP_CodeSniffer\Runner->runPHPCS() magento#9 {main} thrown in /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php on line 1056
PHP Fatal error: Uncaught TypeError: strpos(): Argument magento#2 ($needle) must be of type string, null given in /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php:629 Stack trace: #0 /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php(629): strpos('\\VendorName\\Mod...', NULL) magento#1 /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php(515): Magento2\Sniffs\Annotation\MethodArgumentsSniff->validateFormattingConsistency(Array, Array, Object(PHP_CodeSniffer\Files\LocalFile), Array) magento#2 /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php(600): Magento2\Sniffs\Annotation\MethodArgumentsSniff->validateMethodParameterAnnotations(385, Array, Array, Object(PHP_CodeSniffer\Files\LocalFile), Array, 356, 380) magento#3 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/File.php(498): Magento2\Sniffs\Annotation\MethodArgumentsSniff->process(Object(PHP_CodeSniffer\Files\LocalFile), 385) magento#4 /srv/www/vendor/squizlabs/php_codesniffer/src/Files/LocalFile.php(92): PHP_CodeSniffer\Files\File->process() #5 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(630): PHP_CodeSniffer\Files\LocalFile->process() magento#6 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(434): PHP_CodeSniffer\Runner->processFile(Object(PHP_CodeSniffer\Files\LocalFile)) magento#7 /srv/www/vendor/squizlabs/php_codesniffer/src/Runner.php(114): PHP_CodeSniffer\Runner->run() magento#8 /srv/www/vendor/squizlabs/php_codesniffer/bin/phpcs(18): PHP_CodeSniffer\Runner->runPHPCS() magento#9 {main} thrown in /srv/www/vendor/magento/magento-coding-standard/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php on line 629
Description
LineLengthUnitTest
needs to be covered with unit test.Acceptance Criteria
Magento/Tests/Files
directory andextend AbstractSniffUnitTest
.LineLengthUnitTest.inc
should contain "error" code as well as example of "good" code.Additional information
See already implemented unit tests under
Magento/Tests
directory.Check your code by running
The text was updated successfully, but these errors were encountered: