This PR was merged into the 3.x branch.
Discussion
----------
Fix Xdebug detection
The ini setting `xdebug.overload_var_dump` has been removed in Xdebug 3. The `var_dump()` method is now always overloaded if the Xdebug runs in develop mode. I've adjusted our detection logic accordingly.
Since our minimum PHP version is 8.0 now, we can stop caring about Xdebug 2 which has never received a PHP 8 compatible release.
Commits
-------
1e87185d Fix Xdebug detection
This PR was merged into the 4.x branch.
Discussion
----------
Switch to static data provides for integration tests
This change should make our integration test case compatible with PHPUnit 10 and 11. Merging the PR will hopefully give us a green build on #4269. 🤞🏻
Commits
-------
9282dbcc Switch to static data provides for integration tests
This PR was merged into the 3.x branch.
Discussion
----------
Fix tests that don't perform assertions
The method `doesNotPerformAssertions()` is a getter that tells us if the current test is expected to perform assertions. I think the method that the author _wanted_ to call is `expectNotToPerformAssertions()` which tells PHPUnit not to complain if the current test does not perform any assertions.
Commits
-------
db22abfa Fix tests that don't perform assertions
* 3.x:
Validate the input of CoreExtension::map()
Rename AbstractTest to ProfilerTestCase
Make data providers static
Prepare IntegrationTestCase for static data providers
This PR was merged into the 3.x branch.
Discussion
----------
Prepare IntegrationTestCase for static data providers
Data providers need to be static in PHPUnit 11. Because of this, I'd like to declare the two methods we use as data providers in `IntegrationTestCase` as static in 4.0. This PR prepares that change:
* The non-static `getFixturesDir()` method is replaced with a static `getFixturesDirectory()`.
* Both methods `getTests()` and `getLegacyTests()` are marked as final, so we can declare them static in the next major.
This however means that we're delaying PHPUnit 11 compatibility of integration tests to Twig 4.0. If that's too late for us, we could deprecate the whole `IntegrationTestCase` in favor of a compatible replacement. That's a bigger change, but I would work on it if you think it's worth it.
Commits
-------
18f42038 Prepare IntegrationTestCase for static data providers
This PR was merged into the 3.x branch.
Discussion
----------
Validate the input of CoreExtension::map()
Fixes https://github.com/twigphp/Twig/pull/4269#discussion_r1742182828
As discovered in #4269, we have a test that checks if the map filter fails if we pass a non-iterable value. However, this test relies on an active error handler that throws on PHP warnings.
This PR adds input validation the the `map()` function like we can already find it in similar functions.
Commits
-------
a035204a Validate the input of CoreExtension::map()
This PR was merged into the 3.x branch.
Discussion
----------
Make data providers static
Data providers must be static in PHPUnit 11. This PR fixes all the low hanging fruit.
Commits
-------
6ddb76bb Make data providers static
This PR was merged into the 3.x branch.
Discussion
----------
Rename AbstractTest to ProfilerTestCase
PHPUnit 11 doesn't allow abstract test classes to have the suffix "Test". This PR renames a class that violates that rule.
Commits
-------
fc20997c Rename AbstractTest to ProfilerTestCase
This PR was merged into the 3.x branch.
Discussion
----------
Migrate NodeTestCase to static data providers
PHPUnit 11 requires data providers to be static. This PR prepares our abstract `NodeTestCase` by deprecating the non-static `getTests()` and adding a static `provideTests()` as a replacement. I've also added PHPUnit attributes which newer PHPUnit releases prefer over PHPDoc annotations.
Commits
-------
f555a33c Migrate NodeTestCase to static data providers
This PR was merged into the 3.x branch.
Discussion
----------
Replace `return; yield` with `yield from []`
This has the same effect, but looks less hacky and makes PHPStan happy.
https://phpstan.org/r/df7fcc88-1df8-428e-b675-5dc6965c34d6
Previously this was needed to work properly with output capturing.
/cc `@fabpot` `@nicolas`-grekas
https://3v4l.org/KXste
Commits
-------
09a43a9f Replace `return; yield` with `yield from []`
This PR was merged into the 3.x branch.
Discussion
----------
Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate
I stumbled over this test while checking for PHPUnit deprecations. In this case, we need to do something about the `setMethods()` call which has been removed in PHPUnit 11.
However, we add an expectation for a method `initExtensions()` which has been removed a long time ago. So, if that method was actually called, we'd get an error anyway. Expecting this method not to be called feels a little redundant. ~~This basically means, we can run this test against an unmocked `Environment`. But if we do so, the test does not really test what it's supposed to test which is why I decided to remove the whole test.~~
Update: Instead, I'm now registering an extension that throws if we try to initialize it.
Commits
-------
3a4d513f Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate
This PR was merged into the 3.x branch.
Discussion
----------
Fix MacroTest
Because of a typo in a variable name, `MacroTest` was never executed. This PR fixes the typo and adjusts the expected compiled PHP code, assuming that the current behavior is correct.
Commits
-------
1e5dea44 Fix MacroTest
This PR was merged into the 4.x branch.
Discussion
----------
don't read current key and value when end of iterator is reached
see failures in symfony/symfony#58145
Commits
-------
12b4cdcf don't read current key and value when end of iterator is reached
This PR was merged into the 4.x branch.
Discussion
----------
remove no longer needed PHP version checks
Commits
-------
038d70f2 remove no longer needed PHP version checks
This PR was merged into the 4.x branch.
Discussion
----------
Switch to expectUserDeprecationMessage()
This PR leverages symfony/symfony#54593. This will make it easier to switch to a vanilla PHPUnit 11 in the future.
Commits
-------
0ab26b08 Switch to expectUserDeprecationMessage()
This PR was squashed before being merged into the 3.x branch.
Discussion
----------
Allow extra extensions to use Twig 4 (on 3.x)
Commits
-------
976cea04 Fix tests
031c7bda Allow extra extensions to use Twig 4
This PR was merged into the 3.x branch.
Discussion
----------
Only unset `_iterated` when there is an `else` node
Same as #4249
Even though PHP does not complain, PHPStan does.
> Cannot unset offset '_iterated' on array{ ... the context values ... }
Since this is compiled code, we can easily produce a bit more valid code in the eyes of PHPStan.
Commits
-------
a16910e1 Only unset `_iterated` when there is an `else` node
Same as #4249
Even though PHP does not complain, PHPStan does.
> Cannot unset offset '_iterated' on array{ ... the context values ... }
Since this is compiled code, we can easily produce a bit more valid code in the eyes of PHPStan.