Commit Graph

492 Commits

Author SHA1 Message Date
Fabien Potencier 4074410313 Merge branch '3.x' into 4.x
* 3.x:
  [Doc] Document about `html` and `html_attr` strategies
  Improve date methods phpdoc
  Fix deprecation messages
  Use a more precise return type in AbstractTwigCallable
  fix the handling of predefined arguments in CallExpression
  Allow Twig callable arguments to use camel or snake names
  fix intl-extra tests
  fix typo
2024-09-21 09:17:48 +02:00
Fabien Potencier 52ded207d3 Allow Twig callable arguments to use camel or snake names 2024-09-18 19:19:20 +02:00
Fabien Potencier 9700212005 Merge branch '3.x' into 4.x
* 3.x:
  Rename a variable for more clarity
  Set IteratorAggregate generics for Node
  Add cross-link
  Let's no deprecate the attribute function yet
  Add more precise types for the registration of safe classes
  Clarify coding standards
  Fix markup
  Fix markup
  Clarify docs for the u filter
  Allow to use a dynamic attribute on the . operator via ()
  Remove most usage of foo/bar/baz in the docs
  Tweak docs
  Add StringCastUnary
2024-09-14 10:51:19 +02:00
Fabien Potencier 8d1af0fc03 Let's no deprecate the attribute function yet 2024-09-13 13:56:05 +02:00
Fabien Potencier 333638e8e6 Allow to use a dynamic attribute on the . operator via () 2024-09-12 21:44:45 +02:00
Fabien Potencier e431a469f4 Use SpreadUnary everywhere 2024-09-11 16:24:45 +02:00
Fabien Potencier 13ba125d9b Merge branch '3.x' into 4.x
* 3.x:
  Fix typo
  Add support for argument unpacking
  Fix CS
  Add JSON support for the file extension escaping strategy
  Stringify dynamic mapping keys
  Replace most empty() calls
  Simplify parser calls when possible
2024-09-11 16:17:01 +02:00
Fabien Potencier 112de8dcfa Add support for argument unpacking 2024-09-11 11:55:09 +02:00
Fabien Potencier ccfe6ad26e Stringify dynamic mapping keys 2024-09-11 08:58:53 +02:00
Fabien Potencier eb2a77d7d2 Remove deprecated code 2024-09-10 22:45:56 +02:00
Fabien Potencier 9b9196c9d6 Merge branch '3.x' into 4.x
* 3.x:
  Deprecate the sandbox tag
  Removed @internal on Environment::getGlobals()
  Clarify docs on registerUndefinedTokenParserCallback()
  Simplify code
2024-09-10 22:43:00 +02:00
Fabien Potencier 9369a48c53 Deprecate the sandbox tag 2024-09-10 22:41:00 +02:00
Fabien Potencier 6beff61db4 Merge branch '3.x' into 4.x
* 3.x:
  Improve the way one can deprecate a Twig callable
  Bump version
  Prepare the 3.14.0 release
  Fix a security issue when an included sandboxed template has been loaded before without the sandbox context
  Fix test
  fix the version mergeGlobals() is deprecated since
  Tweak code
  Fix CS
  Add more tests
  Remove unused private methods
  Bump version
2024-09-09 21:19:33 +02:00
Fabien Potencier 34ae0311d9 Improve the way one can deprecate a Twig callable 2024-09-09 21:14:40 +02:00
Fabien Potencier 11f68e2aeb Fix a security issue when an included sandboxed template has been loaded before without the sandbox context 2024-09-09 19:04:10 +02:00
Fabien Potencier 795720230c Fix test 2024-09-09 11:10:45 +02:00
Fabien Potencier 995e7c2270 Fix CS 2024-09-09 08:49:09 +02:00
Fabien Potencier 45e167a514 Add more tests 2024-09-09 08:41:21 +02:00
Fabien Potencier 76ef266cd7 Merge branch '3.x' into 4.x
* 3.x:
  Add the possibility to reset globals
2024-09-07 17:16:15 +02:00
Fabien Potencier e628201ae1 Fix tests 2024-09-07 17:04:03 +02:00
Fabien Potencier fa1c9f0bf9 Merge branch '3.x' into 4.x
* 3.x:
  Remove obsolete code
  Deprecate Environment::mergeGlobals()
  Bump version
  Prepare the 3.13.0 release
  Fix wrong format of `Environment::VERSION_ID` constant
  Fix minor things
  Fix CS
  Fix isset in ForLoopNode
  Fix iterable return type
  Improve exception expectations reliability
2024-09-07 17:03:10 +02:00
Fabien Potencier ef58791fa4 Add the possibility to reset globals 2024-09-07 16:47:00 +02:00
Fabien Potencier b86575cfd6 Deprecate Environment::mergeGlobals() 2024-09-07 14:05:02 +02:00
Fabien Potencier f5300784df bug #4281 Fix wrong format of Environment::VERSION_ID constant (emodric)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Fix wrong format of `Environment::VERSION_ID` constant

It seems that format of `Environment::VERSION_ID` constant was (erroneously?) changed with Twig 3.10.0.

Commits
-------

a219d9e7 Fix wrong format of `Environment::VERSION_ID` constant
2024-09-06 13:47:41 +02:00
Edi Modrić a219d9e77f Fix wrong format of Environment::VERSION_ID constant 2024-09-06 13:47:39 +02:00
Fabien Potencier 978f749b43 Fix minor things 2024-09-06 12:58:38 +02:00
Fabien Potencier a7e497af48 minor #4280 Fix isset in ForLoopNode (ruudk)
This PR was merged into the 3.x branch.

Discussion
----------

Fix isset in ForLoopNode

Even though the code works perfectly fine, PHPStan doesn't understand it.

> Offset 'revindex0' does not exist on array{parent: array{index0: int<1, max>, index: int<2, max>, first: false, revindex0?: int, revindex?: int, length: int<0, max>, last?: bool}.
> Offset 'revindex' does not exist on array{parent: array{index0: int<1, max>, index: int<2, max>, first: false, revindex0: int, revindex?: int, length: int<0, max>, last?: bool}.

Since we want to work with `revindex` and `revindex0`, we can better check for their existence, instead of `length`.

/cc `@stof` `@fabpot`

Commits
-------

2b887e64 Fix isset in ForLoopNode
2024-09-06 12:33:51 +02:00
Fabien Potencier 2ae0c0d38c Fix CS 2024-09-06 12:33:38 +02:00
Ruud Kamphuis 2b887e64d5 Fix isset in ForLoopNode
Even though the code works perfectly fine, PHPStan doesn't understand it.

Since we want to work with `revindex` and `revindex0`, we can better check for their
existence, instead of `length`.
2024-09-06 09:42:11 +02:00
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
Alexandre Daubois 797e490356 Improve exception expectations reliability 2024-09-04 15:22:48 +02:00
Alexander M. Turek f2053bbea0 PHPUnit 11 2024-09-04 12:11:51 +02:00
Fabien Potencier 6f9f7e2d29 Merge branch '3.x' into 4.x
* 3.x:
  Fix tests that don't perform assertions
2024-09-03 22:59:28 +02:00
Alexander M. Turek db22abfadf Fix tests that don't perform assertions 2024-09-03 22:51:23 +02:00
Fabien Potencier a789eca738 Merge branch '3.x' into 4.x
* 3.x:
  Validate the input of CoreExtension::map()
  Rename AbstractTest to ProfilerTestCase
  Make data providers static
  Prepare IntegrationTestCase for static data providers
2024-09-03 22:20:28 +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 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
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 fe7bac8989 Merge branch '3.x' into 4.x
* 3.x:
  Migrate NodeTestCase to static data providers
2024-09-03 14:51:02 +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
Fabien Potencier b47b03d237 minor #4268 Remove obsolete "requires PHP" annotation (derrabus)
This PR was merged into the 4.x branch.

Discussion
----------

Remove obsolete "requires PHP" annotation

Commits
-------

fe2803d2 Remove obsolete "requires PHP" annotation
2024-09-03 14:00:43 +02:00
Fabien Potencier 50f8b13adf Fix tests 2024-09-03 13:58:52 +02:00
Alexander M. Turek fe2803d245 Remove obsolete "requires PHP" annotation 2024-09-03 13:58:34 +02:00
Fabien Potencier cc1045e4e4 Merge branch '3.x' into 4.x
* 3.x:
  Replace `return; yield` with `yield from []`
  Fix testExtensionsAreNotInitializedWhenRenderingACompiledTemplate
  Fix MacroTest
2024-09-03 13:55:51 +02:00
Alexander M. Turek f555a33caf Migrate NodeTestCase to static data providers 2024-09-03 13:51:42 +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