Commit Graph

6653 Commits

Author SHA1 Message Date
Ruud Kamphuis 4cd8955f74 Fix iterable return type
Currently, the PHPDoc states that a string should be returned, but that's not correct.

It can be anything that is echo-able.

That means any scalar, Stringable and even null.
2024-09-05 09:24:38 +02:00
Fabien Potencier 83c5415da5 minor #4277 Improve exception expectations reliability (alexandre-daubois)
This PR was merged into the 3.x branch.

Discussion
----------

Improve exception expectations reliability

This PR moves exception expectations the closest possible to the line intended to throw. It improves reliability of tests ensuring that the right code is throwing the expected exception and not something else (resulting in false-positive). This has been done many times across Symfony code base.

Commits
-------

797e4903 Improve exception expectations reliability
2024-09-04 16:46:09 +02:00
Alexandre Daubois 797e490356 Improve exception expectations reliability 2024-09-04 15:22:48 +02:00
Fabien Potencier fb2663eb69 bug #4267 Fix Xdebug detection (derrabus)
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
2024-09-04 07:57:05 +02:00
Fabien Potencier b80ce5eceb minor #4273 Fix tests that don't perform assertions (derrabus)
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
2024-09-03 22:58:49 +02:00
Alexander M. Turek db22abfadf Fix tests that don't perform assertions 2024-09-03 22:51:23 +02:00
Fabien Potencier 722a5fb027 feature #4266 Prepare IntegrationTestCase for static data providers (derrabus)
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
2024-09-03 22:17:35 +02:00
Fabien Potencier e829b26dc8 minor #4272 Validate the input of CoreExtension::map() (derrabus)
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()
2024-09-03 22:14:48 +02:00
Alexander M. Turek a035204afb Validate the input of CoreExtension::map() 2024-09-03 17:18:47 +02:00
Fabien Potencier 3349175e72 minor #4270 Make data providers static (derrabus)
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
2024-09-03 16:53:53 +02:00
Fabien Potencier 3371d6e2b1 minor #4271 Rename AbstractTest to ProfilerTestCase (derrabus)
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
2024-09-03 16:53:09 +02:00
Alexander M. Turek fc20997c9e Rename AbstractTest to ProfilerTestCase 2024-09-03 16:34:13 +02:00
Alexander M. Turek 6ddb76bb76 Make data providers static 2024-09-03 16:32:00 +02:00
Alexander M. Turek 18f4203827 Prepare IntegrationTestCase for static data providers 2024-09-03 15:08:40 +02:00
Fabien Potencier dd9af8ec25 feature #4265 Migrate NodeTestCase to static data providers (derrabus)
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
2024-09-03 14:03:04 +02:00
Alexander M. Turek f555a33caf Migrate NodeTestCase to static data providers 2024-09-03 13:51:42 +02:00
Fabien Potencier f0c337690f minor #4259 Replace return; yield with yield from [] (ruudk)
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 []`
2024-09-03 13:17:04 +02:00
Alexander M. Turek 1e87185d26 Fix Xdebug detection 2024-09-03 10:17:14 +02:00
Ruud Kamphuis 09a43a9f6f 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.
2024-09-03 09:55:58 +02:00
Fabien Potencier c0f11545fd minor #4263 Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate (derrabus)
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
2024-09-02 22:20:58 +02:00
Alexander M. Turek 3a4d513ffe Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate 2024-09-02 20:07:39 +02:00
Fabien Potencier 6b37522774 minor #4264 Fix MacroTest (derrabus)
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
2024-09-02 19:26:05 +02:00
Alexander M. Turek 1e5dea44f9 Fix MacroTest 2024-09-02 18:57:57 +02:00
Fabien Potencier 54590ec86b minor #4258 Allow extra extensions to use Twig 4 (on 3.x) (fabpot)
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
2024-09-01 22:59:50 +02:00
Fabien Potencier 976cea0403 Fix tests 2024-09-01 22:54:59 +02:00
Fabien Potencier 031c7bda4d Allow extra extensions to use Twig 4 2024-09-01 22:39:12 +02:00
Fabien Potencier d55f7adcbe minor #4257 Only unset _iterated when there is an else node (ruudk)
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
2024-09-01 09:43:32 +02:00
Ruud Kamphuis a16910e14d 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.
2024-09-01 08:53:55 +02:00
Fabien Potencier a39b6e164c minor #4241 Adjust cycle implementation (smnandre)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Adjust `cycle` implementation

Update code following [#4158](https://github.com/twigphp/Twig/issues/4158)
* return mixed
* trigger when non countable
* type the position argument

Add doc precisions

Commits
-------

7c3c1615 Adjust `cycle` implementation
2024-08-30 20:43:09 +02:00
Simon André 7c3c16154e Adjust cycle implementation 2024-08-30 20:43:06 +02:00
Fabien Potencier 938ee704b4 Fix CS 2024-08-30 16:22:35 +02:00
Fabien Potencier 375b477cb4 minor #4255 Add more types to Template class and compiled templates (ruudk)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add more types to Template class and compiled templates

Similar to https://github.com/twigphp/Twig/pull/4250.

Commits
-------

7e52a680 Add more types to Template class and compiled templates
2024-08-30 16:17:58 +02:00
Ruud Kamphuis 7e52a68097 Add more types to Template class and compiled templates 2024-08-30 16:17:55 +02:00
Fabien Potencier 22abdfafae Remove unneeded whitespace 2024-08-30 12:44:06 +02:00
Fabien Potencier 2efb955ab5 Remove unneeded whitespace 2024-08-30 12:41:04 +02:00
Fabien Potencier 08a571753b minor #4253 Document how to iterate over a string (fabpot)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Document how to iterate over a string

Commits
-------

2f8c6218 Fix doc markup
a68804d6 Add an example on how to iterate over a string
2024-08-30 11:46:47 +02:00
Fabien Potencier 2f8c621898 Fix doc markup 2024-08-30 11:43:48 +02:00
Fabien Potencier a68804d614 Add an example on how to iterate over a string 2024-08-30 11:23:14 +02:00
Fabien Potencier 18b4ceb987 minor #4254 Remove NodeCaptureInterface from TypesNode (ruudk)
This PR was merged into the 3.x branch.

Discussion
----------

Remove NodeCaptureInterface from TypesNode

This was accidentally copied from SetNode

Commits
-------

5e3f9d9f Remove NodeCaptureInterface from TypesNode
2024-08-29 20:08:45 +02:00
Ruud Kamphuis 5e3f9d9f26 Remove NodeCaptureInterface from TypesNode
This was accidentally copied from SetNode
2024-08-29 19:39:20 +02:00
Fabien Potencier 70b912fa10 minor #4228 Use CPP in full code base (andreybolonin)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Use CPP in full code base

Commits
-------

28923f42 Use CPP in full code base
2024-08-29 19:29:42 +02:00
andreybolonin1989@gmail.com 28923f4269 Use CPP in full code base 2024-08-29 19:29:39 +02:00
Fabien Potencier 8aedebee29 feature #4235 Add types tag (drjayvee)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add types tag

The is a draft implementation for #4165.

Commits
-------

67dabd81 Add types tag
2024-08-29 19:26:49 +02:00
Jeroen Versteeg 67dabd8182 Add types tag 2024-08-29 19:26:49 +02:00
Fabien Potencier 9120e9f3d1 Bump version 2024-08-29 16:16:01 +02:00
Fabien Potencier edcea8bce0 Bump version 2024-08-29 11:53:10 +02:00
Fabien Potencier 4d19472d4a Prepare the 3.12.0 release v3.12.0 2024-08-29 11:51:12 +02:00
Fabien Potencier 33c4879dd8 Fix CS 2024-08-29 10:31:04 +02:00
Fabien Potencier d5b7120bdb minor #4248 Add conditional return types to ensureTraversable (ruudk)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add conditional return types to `ensureTraversable`

This way, static analyzers can understand what the output of this call will be.

Commits
-------

956d09bf Add conditional return types to `ensureTraversable`
2024-08-29 10:30:39 +02:00
Ruud Kamphuis 956d09bf08 Add conditional return types to ensureTraversable 2024-08-29 10:30:36 +02:00