This PR was merged into the 4.4 branch.
Discussion
----------
Fixed deprecation warnings about passing null as parameter
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
Various built-in PHP functions will trigger a deprecation warning if `null` is passed as parameter. This PR attempts to fix all warnings that our test suite currently picks up.
Commits
-------
7d9bdf5734 Fixed deprecation warnings about passing null as parameter
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Finder] Fix gitignore regex build with "**"
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41223
| License | MIT
| Doc PR | no
covered with tests, also faster, we do not have to explode the rule at all :)
ping `@lindelius` `@OskarStark`
Commits
-------
ce22d5ddd7 [Finder] Fix gitignore regex build with "**"
This PR was merged into the 4.4 branch.
Discussion
----------
[Form] Replace broken ServerParams mock
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
`AbstractRequestHandlerTest` creates a mocked version of the `ServerParams` class. Since `getNormalizedIniPostMaxSize()` does not have a return type declaration, PHPUnit will by default create an implementation that always returns `null`. However, the real implementation of that method guarantees to always return a string.
This becomes problematic in PHP 8.1 because the return value is sometimes passed as-is into functions like `strtolower()` which trigger a deprecation warning on `null` now.
This PR proposes to replace the mock with a dummy implementation that returns an empty string by default.
Commits
-------
77c2d69f19 [Form] Replace broken ServerParams mock
This PR was merged into the 4.4 branch.
Discussion
----------
Add a GitHub Action for tests against PHP 8.1
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
I'd like to monitor our compatibility with the upcoming PHP 8.1 release. Because I failed miserably at convincing Travis to run our tests with PHP 8.1 (see #40532), I tried to do the same with GitHub Actions.
Commits
-------
6a328ae01e Update .github/workflows/tests.yml
6f1c4b8c58 PHP 8.1 must not cause the build to fail (yet)
b0b45105d7 Add _run_tests bash function
de4f0170e2 Add a GitHub Action for tests against PHP 8.1
This PR was merged into the 4.4 branch.
Discussion
----------
[DependencyInjection][ProxyManagerBridge] Don't call class_exists() on null
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
PHP 8.1 complains if we pass `null` to `class_exists()` or `interface_exists()`:
> class_exists(): Passing null to parameter `#1` ($class) of type string is deprecated
Commits
-------
88520e53b2 Don't call class_exists() on null
This PR was merged into the 4.4 branch.
Discussion
----------
[Security] Added Ukrainian translations
| Q | A
| ------------- | ---
| Branch? | 4.4 <!-- see below -->
| Bug fix? | no
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#41088 <!-- 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 -->
Added some missing Ukrainian translations.
Commits
-------
8f34572a65 [Security] Added Ukrainian translations
This PR was merged into the 4.4 branch.
Discussion
----------
[Security] Added and improved Bulgarian translations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? |no
| Tickets | Fix#41035
| License | MIT
| Doc PR | n/a
Added missing translations for id 19 and 20.
Replaced the word "incorrect" with "unsuccessful"/"failed" for id 17.
Replaced the phonetic use of "cookie" with the word for "cookie" in Bulgarian for id 5 and 10.
Fixed grammatical error, now use the definite article ("the") instead of the indefinine for id 11, 13, 15 and 16.
Commits
-------
b79962b676 Added and improved Bulgarian translations
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
Introduce SYMFONY_FEATURE_BRANCH variable in Travis config
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | #40887
| License | MIT
| Doc PR | not needed
This PR proposes to introduce a `SYMFONY_FEATURE_BRANCH` variable that always points to the branch of Symfony's next feature release. This is a setting that we need to adjust twice a year. This way, the branch does not have to follow the `.x` suffix convention anymore.
~~I'm currently testing my changes against the 5.x branch. As soon as the PR is ready, I will target 4.4.~~
Update: `SYMFONY_FEATURE_BRANCH` is now populated via an API request.
Commits
-------
7de11c0e44 Introduce SYMFONY_FEATURE_BRANCH variable in Travis config
This PR was merged into the 4.4 branch.
Discussion
----------
[Security] Missing lt translations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41054
| License | MIT
For minute/minutes translation I decided to use "min." abbreviation, because in lithuanian language the plural translation might not always match the word case.
For example:
1 minute -> 1 minutė
2 minutes -> 2 minutės
...
10 minutes -> 10 minučių
...
21 minutes -> 21 minutė
22 minutes -> 22 minutės
...
30 minutes -> 30 minučių
and so on...
Commits
-------
f2dedd8a53 Missing security lt translations added
This PR was merged into the 4.4 branch.
Discussion
----------
[Console] Fix Windows code page support
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#37385, Fix#35842, Fix#36324, Fix#37495, Fix#37278
| License | MIT
Corrects mojibake problem on Windows where an OEM code page was applied to an input string and then messed with PHP.internal_encoding setting used by the script. This caused strings with different encodings to be displayed on the console output.
Commits
-------
41452785c6 [Console] Fix Windows code page support
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[CI][Psalm] Install stable/released PHPUnit
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
PHPUnit 10 is soon released. We dont need to install it before it is actually released.
Currently, PHPUnit is updating dependencies and we get psalm failing with things like:
<img width="918" alt="Screenshot 2021-05-12 at 08 28 29" src="https://user-images.githubusercontent.com/1275206/117930440-468cc500-b2fe-11eb-8028-579478c001cf.png">
<img width="972" alt="Screenshot 2021-05-12 at 08 33 54" src="https://user-images.githubusercontent.com/1275206/117930443-47bdf200-b2fe-11eb-8cb7-79255532e899.png">
Commits
-------
2345614316 [CI][Psalm] Install stable/released PHPUnit
This PR was merged into the 4.4 branch.
Discussion
----------
[DependencyInjection] fix dumping service-closure-arguments
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#39259
| License | MIT
| Doc PR | -
5.3 uses service closures a bit more, so that this is required to make the `lint:container` command work.
Commits
-------
1aa9a249fc [DependencyInjection] fix dumping service-closure-arguments
This PR was merged into the 4.4 branch.
Discussion
----------
WDT: Only load "Sfjs" if it is not present already
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | none
| License | MIT
| Doc PR | not needed
Hi!
Playing with Turbo, I noticed two small issues with the WDT:
1) When you click a link (which Turbo loads via AJAX), the new toolbar would correctly load, but its "AJAX tab" would be missing/empty. At first, that seems.. at least... "correct enough". After all, we *did* just load a new web debug toolbar. However, this can be avoided by simply *not* redefining the `Sfjs` variable: if it already exists, just use it. And this is the intention of that object, I believe: for it to be loaded *once*, and then reused over and over again via its `loadToolbar()` method.
2) Additionally, I was experimenting with some crazy prefetch + Turbo functionality. It works, but caused one minor issue with the web debug toolbar. The flow is this:
A) A prefetch request is made to pre-cache a URL in Turbo.
B) When that links is actually clicked, the cached version from (A) is used as the "Preview". It's HTML calls `Sfjs.loadToolbar()`.
C) At the same moment as (B), another AJAX request is made to the same URL from (A) to get the full, fresh page (in case it's out of date).
D) When (C) finishes, it will have its own `Sfjs.loadToolbar()` call.
The problem is that the AJAX request for the first web debug toolbar (from B) sometimes finishes *after* the AJAX call made by Turbo for (C). The result is that the first web debug toolbar tries to activate itself... but it's already gone from the page.
I realize this is a... kind of crazy scenario, but I think the fix is legit: if, for any reason, the web debug toolbar element is not on the page, we should not try to initialize it. It results in:
<img width="431" alt="Screen Shot 2021-05-10 at 3 49 06 PM" src="https://user-images.githubusercontent.com/121003/117716165-429a5f00-b1a7-11eb-9b99-bf08591d2ff4.png">
## To Test
JUST to be on the safe side, I prepared a symfony-demo app with Turbo installed, and using these changes. You can try it here - https://github.com/weaverryan/symfony-demo/tree/turbo - the README is updated to quickly get it running (no need to even run yarn, the JavaScript files are committed).
Thanks!
Commits
-------
47ef65f336 only load Sfjs if it is not present
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Inflector][String] wrong plural form of words ending by "pectus"
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41124
| License | MIT
| Doc PR | N/A
Commits
-------
0dc8893caa [Inflector][String] wrong plural form of words ending by "pectus"
This PR was merged into the 4.4 branch.
Discussion
----------
[HttpClient] Don't prepare the request in ScopingHttpClient
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
Spotted while working on #41159 (needed by it.)
Commits
-------
a53db83823 [HttpClient] Don't prepare the request in ScopingHttpClient
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
Fix/Rewrite .gitignore regex builder
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | fix#39257
| License | MIT
| Doc PR | no
This PR fixes `.gitignore` with exclude wildcard ignore rules like `!a/*/b` were failing with `preg_match(): Compilation failed: lookbehind assertion is not fixed length at offset` PHP error.
Functionality/performance was verified against large `.gitignore` files:
- https://github.com/PrestaShop/PrestaShop/blob/1.7.7.3/.gitignore
- https://github.com/dotnet/installer/blob/v5.0.202/.gitignore
- https://github.com/dotnet/runtime/blob/v5.0.5/.gitignore
This PR also improves the testing cases.
Commits
-------
83f9fd3adf Fix/Rewrite .gitignore regex builder