This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PhpUnitBridge] Skip internal classes in CoverageListenerTrait
PHPUnit 9+ is picky about test covering, say, a `\RuntimeException`. Fails with the likes:
"@covers RuntimeException" is invalid
Judging by the commit e06850c12b this change is required for PHPUnit 9.1 and up. [Here's it being tested.](60c6fb972b/tests/unit/ClassMethodUnitTest.php (L49-L54))
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Follow-up to #38054
| License | MIT
Commits
-------
a0dedb9aa6 [PhpUnitBridge] Skip internal classes in CoverageListenerTrait
This PR was merged into the 4.4 branch.
Discussion
----------
[VarExporter] unserialize() might throw an Exception on php 8
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #36872
| License | MIT
| Doc PR | N/A
VarExporter attempts a deserialization in order to check if a given object can be exported in serialized form. On php 8, the `unserialize` call might throw an exception that needs to be caught and converted to the expected `NotInstantiableTypeException`.
Commits
-------
65112e11bc [VarExporter] unserialize() might throw an Exception on php 8.
This PR was merged into the 4.4 branch.
Discussion
----------
[ErrorHandler] Parse "x not found" errors correctly on php 8
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #36872
| License | MIT
| Doc PR | N/A
This PR is #38049 applied to the 4.4 branch.
Commits
-------
d9c9aea7ee [ErrorHandler] Parse "x not found" errors correctly on php 8.
This PR was merged into the 4.4 branch.
Discussion
----------
[Mailer] Remove unnecessary check for existing request
| Q | A
| ------------- | ---
| Branch? | 4.4 <!-- see below -->
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#38035 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/releases):
- Always add tests and ensure they pass.
- Never break backward compatibility (see https://symfony.com/bc).
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too.)
- Features and deprecations must be submitted against branch master.
-->
Commits
-------
3feff72186 remove unnecessary check for existing request
This PR was merged into the 4.4 branch.
Discussion
----------
[HttpClient] with "bindto" with NativeHttpClient
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#38081
| License | MIT
| Doc PR | -
/cc @derrabus
Commits
-------
cea05311fc [HttpClient] with "bindto" with NativeHttpClient
This PR was merged into the 4.4 branch.
Discussion
----------
[FrameworkBundle] generate preload.php in src/ to make opcache.preload predictable
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
As seen in https://github.com/symfonycorp/cloud-templates/pull/15, having the path of the preload file vary by env+debug makes configuring PHP.ini settings impossible.
This PR dump a new `preload.php` file in `src/` when `cache:clear` is called.
This makes the path predictable.
This is submitted as a bugfix because the current behavior is barely usable without this change.
Commits
-------
54c965c7d0 [FrameworkBundle] generate preload.php in src/ to make opcache.preload predictable
This PR was merged into the 4.4 branch.
Discussion
----------
[FrameworkBundle] Fix Tests on PHPUnit 9.3
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #37564
| License | MIT
| Doc PR | N/A
When joining two constraints with a `LogicalAnd`, PHPUnit will generate a failure message where the message omitted by the first constraint will be wrapped in parenthesis. I'm using a regular expression now, so we can support both variants.
Commits
-------
8bc36d7420 [FrameworkBundle] Fix Tests on PHPUnit 9.3.
This PR was merged into the 4.4 branch.
Discussion
----------
[WebProfilerBundle] Fix Tests for PHPUnit 9.3
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #37564
| License | MIT
| Doc PR | N/A
PHPUnit's `logicalXor()` creates an XOR operation for one or multiple constraints. It expects the operands for that operation to be passed as variadic arguments, but this particullar test passes them in a single array.
This somewhat works on PHPUnit 8, but fails on PHPUnit 9. This PR fixes the failing test.
Commits
-------
f290b97d4f [WebProfilerBundle] Fix Tests on PHPUnit 9.3.
This PR was merged into the 4.4 branch.
Discussion
----------
Don't call createMock with an array of interfaces
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #37564
| License | MIT
| Doc PR | N/A
PHPUnit 8 allows us to pass an array of interfaces to `createMock()`. The result was a mock object that implemented all of the given interfaces. This feature has sadly been removed (see sebastianbergmann/phpunit#3955), which forces us to create dummy classes that can be mocked instead. I've done this already on the 3.4 branch with #37566.
This PR fixes all affected tests (that I could find) on the 4.4 branch.
Commits
-------
a8e762d8c3 Don't call createMock with an array of interfaces.
This PR was merged into the 4.4 branch.
Discussion
----------
[HttpKernel] Adjust tests to new "class not found" error message format
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #36872
| License | MIT
| Doc PR | N/A
Commits
-------
5b95bcd009 [HttpKernel] Adjust tests to new "class not found" error message format.
This PR was submitted for the master branch but it was merged into the 4.4 branch instead.
Discussion
----------
esmtp error not being thrown properly
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | n/a
| License | MIT
| Doc PR | n/a
This is the same fix as https://github.com/symfony/symfony/pull/32895 but for esmtp transport
Commits
-------
976eea3be0 esmtp error not being thrown properly
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Yaml Parser] fixed Parser to skip comments when inlining sequences
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#37972
| License | MIT
The parser didn't skip comments when parsing values in a sequence. This resulted in the YamlFileLoader trying to
parse a comment as a IteratorArgument which resulted in a InvalidArgumentException.
Consider the following valid yaml:
```yaml
- !foo [
bar,
#baz
]
```
The parser would generate the following array:
```php
['bar', '#baz']
```
After this fix the parser will generate the following array:
```php
['bar']
```
This bug only appeared for me in 4.4
Commits
-------
b5316ebebb [Yaml Parser] fixed Parser to skip comments when inlining sequences
This PR was merged into the 4.4 branch.
Discussion
----------
[Cache] Fix CacheCollectorPass with decorated cache pools
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#38055
| License | MIT
| Doc PR |
The `getDefinition` call in `addToCollector` does not work when the service is decorated. Also instances will be added with the decoration name. This looks weird in the profiler. I have changed it to prefer the attribute name.
Before:
![image](https://user-images.githubusercontent.com/6224096/92225243-3be27c00-eea3-11ea-8bd5-2ae69212e658.png)
After: (`\Shopware\Storefront\Framework\Cache\CacheDecorator` did go into `cache.object`)
![image](https://user-images.githubusercontent.com/6224096/92225284-47ce3e00-eea3-11ea-885f-cdba95b89302.png)
Commits
-------
973442759c Fix CacheCollectorPass with decorated cache pools
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
Updated to use `PHPUnit\Util\Annotation\Registry` and related classes.
Fixes#37637
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | yes
| Deprecations? | no
| Tickets | Fix#37637
| License | MIT
| Doc PR | n/a
- [x] Fixes the issue under PHPUnit 8.5+
- [ ] Tests TBD
If this is a sensible approach, I will try to add a test for this addition.
Commits
-------
5f83811002 [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
This PR was merged into the 4.4 branch.
Discussion
----------
[PropertyInfo] Fix typed collections in PHP 7.4
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | No ticket
| License | MIT
| Doc PR | N/A
#37971 introduced support for typed properties in PHP 7.4, however by short circuiting the `getTypes()` method, typed collections are returned as `Type::BUILTIN_TYPE_ARRAY` without a proper collection type. If running on PHP < 7.4, the `getMutator()` method would be called which would extract the collection type from the getter/setter or adder/remover.
I updated the typedPropertiesTest to cover this case.
Commits
-------
282ed2850c [PropertyInfo] Fix typed collections in PHP 7.4
This PR was submitted for the master branch but it was merged into the 4.4 branch instead.
Discussion
----------
[Form] Remove invalid instantiation declaration
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | No ticket
| License | MIT
| Doc PR | N/A
Remove invalid instantiation declaration
Commits
-------
6e17099f7a Remove invalid instantiation declaration
This PR was merged into the 4.4 branch.
Discussion
----------
[FrameworkBundle] relax some test assertions
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
Commits
-------
473e2933f0 relax some test assertions
This PR was merged into the 4.4 branch.
Discussion
----------
[PhpunitBridge] Fix deprecation type detection (when several autoload files are used)
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
Several autoload files are supported by the PHPUnit Bridge but when the internal paths are registered (for deprecation type detection), the paths (from prefixes) of the last autoload file override the paths previously registered. This PR fixes this bug.
Commits
-------
cc7b6c5e5a [PhpunitBridge] Fix deprecation type detection
This PR was merged into the 4.4 branch.
Discussion
----------
[Ldap] Add comment about bind with empty password
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | /
| License | MIT
| Doc PR | /
When LDAP server allows unauthenticated binds, calling the method `bind` with a blank password will return a positive response.
This is not an issue when using High Level classes of Symfony, because this case is handled in `LdapBindAuthenticationProvider` and `CheckLdapCredentialsListener`.
And passing a blank password could be a valid use case for the low level class `Connection`.
This PR adds a comment on the parameter `$password` to let people Know about this
Commits
-------
63a8570a42 Add a warning comment on ldap empty password