Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feature #49184 [FrameworkBundle][HttpFoundation] reduce response cons…
…traints verbosity (Nicolas Appriou, Nicals) This PR was squashed before being merged into the 7.1 branch. Discussion ---------- [FrameworkBundle][HttpFoundation] reduce response constraints verbosity | Q | A | ------------- | --- | Branch? | 6.3 | Bug fix? | no | New feature? | yes | Deprecations? | no | Tickets | Fix #42948 | License | MIT | Doc PR | symfony/symfony-docs#17848 Adds a `verbose` argument to HttpFoundation response test constraints. If set to false, only the HTTP response command and headers will be displayed in case of test failure. This argument is `true` by default to keep backward compatibility, but I think it would make more sense to be `false`. <details> <summary>Before</summary> ```php $this->assertResponseIsSuccessful(); ``` ``` -- PHPUnit output: Testing App\Controller\AppControllerTest F 1 / 1 (100%) Time: 00:00.299, Memory: 42.50 MB There was 1 failure: 1) App\Controller\AppControllerTest::testSuccessfulResponse Failed asserting that the Response is successful. HTTP/1.1 404 Not Found Cache-Control: max-age=0, must-revalidate, private Content-Type: text/html; charset=UTF-8 Date: Fri, 03 Feb 2023 10:54:05 GMT Expires: Fri, 03 Feb 2023 10:54:05 GMT X-Debug-Exception: X-Debug-Exception-File: ... X-Robots-Tag: noindex <!-- (404 Not Found) --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="robots" content="noindex,nofollow" /> <!-- undred of lines later --> Sfjs.createToggles(); Sfjs.createFilters(); }); } /*]]>*/ </script> </body> </html> <!-- (404 Not Found) --> /home/user/project/vendor/symfony/framework-bundle/Test/BrowserKitAssertionsTrait.php:142 /home/user/project/vendor/symfony/framework-bundle/Test/BrowserKitAssertionsTrait.php:33 /home/user/project/tests/Controller/AppControllerTest.php:35 ``` </details> <details> <summary>After</summary> ```php $this->assertResponseIsSuccessful(verbose: false); ``` ``` -- PHPUnit output: Testing App\Controller\AppControllerTest F 1 / 1 (100%) Time: 00:00.300, Memory: 42.50 MB There was 1 failure: 1) App\Controller\AppControllerTest::testSuccessfulResponse Failed asserting that the Response is successful. HTTP/1.1 404 Not Found Cache-Control: max-age=0, must-revalidate, private Content-Type: text/html; charset=UTF-8 Date: Fri, 03 Feb 2023 10:53:03 GMT Expires: Fri, 03 Feb 2023 10:53:03 GMT X-Debug-Exception: X-Debug-Exception-File: ... X-Robots-Tag: noindex /home/user/project/vendor/symfony/framework-bundle/Test/BrowserKitAssertionsTrait.php:142 /home/user/project/vendor/symfony/framework-bundle/Test/BrowserKitAssertionsTrait.php:33 /home/user/project/tests/Controller/AppControllerTest.php:35 ``` </details> I added a method `Symfony\Component\HttpFoundation\Response::getCommandString()` that builds the first line of an HTTP response to avoid code duplication in constraints classes. I thought of other solutions: + Build the HTTP command line in each `Constraint`. This seems that too much code duplication. + Add an `AbstractResponseConstraint` with a utility method to build a less verbose response string. I wasn't sure we needed to add an extend layer here. + Add a `ResponseConstraintTrait` with an exposed method to build the less verbose response string. This did not *feel* right. Overall, I think the `Response` class is the more appropriate to build this string. I also had some issue with psalm complaining about the documented $response argument type of `additionalFailureDescription`: ``` ERROR: MoreSpecificImplementedParamType - src/Symfony/Component/HttpFoundation/Test/Constraint/ResponseStatusCodeSame.php:50:53 - Argument 1 of Symfony\Component\HttpFoundation\Test\Constraint\ResponseStatusCodeSame::additionalFailureDescription has the more specific type 'Symfony\Component\HttpFoundation\Response', expecting 'mixed' as defined by PHPUnit\Framework\Constraint\Constraint::additionalFailureDescription (see https://psalm.dev/140) protected function additionalFailureDescription($other): string ``` I needed to delete the phpdoc comment to comply with this. I only changed the lines were Psalm was giving me errors, but there are still some mismatch between HttpFoundation constraints signatures and PHPUnit ones. Commits ------- cabb2dc [FrameworkBundle][HttpFoundation] reduce response constraints verbosity
- Loading branch information
Showing
10 changed files
with
144 additions
and
33 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
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
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
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