Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 5e293d9

Browse filesBrowse files
Merge branch '4.4'
* 4.4: [Translation] Fixed case sensitivity of lint:xliff command fix type hint for salt in PasswordEncoderInterface Add missing deprecations for PHP templating layer Simplify code - catch \Throwable capture all exceptions Collect locale details earlier in the process in TranslationDataCollector fix typo in PR #31802 update italian validator translation Add missing translations [Messenger] Deprecate passing a bus locator to ConsumeMessagesCommand constructor [SecurityBundled] Forbid security-http >= 5.0 [Security][Guard] Forbid security-http >= 5.0 [TwigBridge] suggest Translation Component when TranslationExtension is used [Monolog] Setup the LoggerProcessor after all other processor
2 parents 4a437ab + 0119d21 commit 5e293d9
Copy full SHA for 5e293d9

File tree

Expand file treeCollapse file tree

24 files changed

+156
-37
lines changed
Filter options
Expand file treeCollapse file tree

24 files changed

+156
-37
lines changed

‎UPGRADE-4.4.md

Copy file name to clipboardExpand all lines: UPGRADE-4.4.md
+14-3Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ UPGRADE FROM 4.3 to 4.4
44
HttpKernel
55
----------
66

7-
* The `DebugHandlersListener` class has been marked as `final`
7+
* The `DebugHandlersListener` class has been marked as `final`
88

99
DependencyInjection
1010
-------------------
@@ -25,13 +25,24 @@ DependencyInjection
2525
factory: ['@factory_service', method]
2626
```
2727
28+
Messenger
29+
---------
30+
31+
* Deprecated passing a `ContainerInterface` instance as first argument of the `ConsumeMessagesCommand` constructor,
32+
pass a `RoutableMessageBus` instance instead.
33+
34+
FrameworkBundle
35+
---------------
36+
37+
* Deprecated support for `templating` engine in `TemplateController`, use Twig instead
38+
2839
MonologBridge
2940
--------------
3041

31-
* The `RouteProcessor` has been marked final.
42+
* The `RouteProcessor` has been marked final.
3243

3344
TwigBridge
3445
----------
3546

3647
* Deprecated to pass `$rootDir` and `$fileLinkFormatter` as 5th and 6th argument respectively to the
37-
`DebugCommand::__construct()` method, swap the variables position.
48+
`DebugCommand::__construct()` method, swap the variables position.

‎UPGRADE-5.0.md

Copy file name to clipboardExpand all lines: UPGRADE-5.0.md
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ FrameworkBundle
219219
* Removed support for legacy translations directories `src/Resources/translations/` and `src/Resources/<BundleName>/translations/`, use `translations/` instead.
220220
* Support for the legacy directory structure in `translation:update` and `debug:translation` commands has been removed.
221221
* Removed the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead.
222+
* Removed support for `templating` engine in `TemplateController`, use Twig instead
222223

223224
HttpFoundation
224225
--------------
@@ -269,6 +270,8 @@ Messenger
269270
---------
270271

271272
* The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead.
273+
* Passing a `ContainerInterface` instance as first argument of the `ConsumeMessagesCommand` constructor now
274+
throws as `\TypeError`, pass a `RoutableMessageBus` instance instead.
272275

273276
Monolog
274277
-------

‎src/Symfony/Bridge/Twig/Extension/TranslationExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Extension/TranslationExtension.php
+15-16Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,19 @@ public function __construct($translator = null, NodeVisitorInterface $translatio
4949
}
5050

5151
/**
52-
* @deprecated since Symfony 4.2
52+
* @return TranslatorInterface|null
5353
*/
5454
public function getTranslator()
5555
{
56-
@trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
56+
if (null === $this->translator) {
57+
if (!interface_exists(TranslatorInterface::class)) {
58+
throw new \LogicException(sprintf('You cannot use the "%s" if the Translation Contracts are not available. Try running "composer require symfony/translation".', __CLASS__));
59+
}
60+
61+
$this->translator = new class() implements TranslatorInterface {
62+
use TranslatorTrait;
63+
};
64+
}
5765

5866
return $this->translator;
5967
}
@@ -108,31 +116,22 @@ public function trans($message, array $arguments = [], $domain = null, $locale =
108116
if (null !== $count) {
109117
$arguments['%count%'] = $count;
110118
}
111-
if (null === $this->translator) {
112-
$this->translator = new class() implements TranslatorInterface {
113-
use TranslatorTrait;
114-
};
115-
}
116119

117-
return $this->translator->trans($message, $arguments, $domain, $locale);
120+
return $this->getTranslator()->trans($message, $arguments, $domain, $locale);
118121
}
119122

120123
/**
121124
* @deprecated since Symfony 4.2, use the trans() method instead with a %count% parameter
122125
*/
123126
public function transchoice($message, $count, array $arguments = [], $domain = null, $locale = null)
124127
{
125-
if (null === $this->translator) {
126-
$this->translator = new class() implements TranslatorInterface {
127-
use TranslatorTrait;
128-
};
129-
}
128+
$translator = $this->getTranslator();
130129

131-
if ($this->translator instanceof TranslatorInterface) {
132-
return $this->translator->trans($message, array_merge(['%count%' => $count], $arguments), $domain, $locale);
130+
if ($translator instanceof TranslatorInterface) {
131+
return $translator->trans($message, array_merge(['%count%' => $count], $arguments), $domain, $locale);
133132
}
134133

135-
return $this->translator->transChoice($message, $count, array_merge(['%count%' => $count], $arguments), $domain, $locale);
134+
return $translator->transChoice($message, $count, array_merge(['%count%' => $count], $arguments), $domain, $locale);
136135
}
137136

138137
/**

‎src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ CHANGELOG
66

77
* Removed support to load translation resources from the legacy directories `src/Resources/translations/` and `src/Resources/<BundleName>/translations/`
88

9+
4.4.0
10+
-----
11+
12+
* Deprecated support for `templating` engine in `TemplateController`, use Twig instead
13+
914
4.3.0
1015
-----
1116

‎src/Symfony/Bundle/FrameworkBundle/Controller/TemplateController.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Controller/TemplateController.php
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ class TemplateController
2929

3030
public function __construct(Environment $twig = null, EngineInterface $templating = null)
3131
{
32+
if (null !== $templating) {
33+
@trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.4; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), E_USER_DEPRECATED);
34+
}
35+
3236
$this->twig = $twig;
3337
$this->templating = $templating;
3438
}

‎src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public function build(ContainerBuilder $container)
132132
$container->addCompilerPass(new RegisterReverseContainerPass(false), PassConfig::TYPE_AFTER_REMOVING);
133133

134134
if ($container->getParameter('kernel.debug')) {
135-
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);
135+
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 2);
136136
$container->addCompilerPass(new UnusedTagsPass(), PassConfig::TYPE_AFTER_REMOVING);
137137
$container->addCompilerPass(new ContainerBuilderDebugDumpPass(), PassConfig::TYPE_BEFORE_REMOVING, -255);
138138
$container->addCompilerPass(new CacheCollectorPass(), PassConfig::TYPE_BEFORE_REMOVING);

‎src/Symfony/Bundle/FrameworkBundle/Tests/Controller/TemplateControllerTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/Controller/TemplateControllerTest.php
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ public function testTwig()
3131
$this->assertEquals('bar', $controller('mytemplate')->getContent());
3232
}
3333

34+
/**
35+
* @group legacy
36+
*/
3437
public function testTemplating()
3538
{
3639
$templating = $this->getMockBuilder(EngineInterface::class)->getMock();

‎src/Symfony/Bundle/TwigBundle/CacheWarmer/TemplateCacheCacheWarmer.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/TwigBundle/CacheWarmer/TemplateCacheCacheWarmer.php
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Bundle\TwigBundle\CacheWarmer;
1313

14+
@trigger_error('The '.TemplateCacheCacheWarmer::class.' class is deprecated since version 4.4 and will be removed in 5.0; use Twig instead.', E_USER_DEPRECATED);
15+
1416
use Psr\Container\ContainerInterface;
1517
use Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinderInterface;
1618
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
@@ -26,6 +28,8 @@
2628
* as the Twig loader will need the cache generated by it.
2729
*
2830
* @author Fabien Potencier <fabien@symfony.com>
31+
*
32+
* @deprecated since version 4.4, to be removed in 5.0; use Twig instead.
2933
*/
3034
class TemplateCacheCacheWarmer implements CacheWarmerInterface, ServiceSubscriberInterface
3135
{

‎src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ public function process(ContainerBuilder $container)
105105
} else {
106106
$container->setAlias('twig.loader.filesystem', new Alias('twig.loader.native_filesystem', false));
107107
$container->removeDefinition('templating.engine.twig');
108+
$container->removeDefinition('twig.cache_warmer');
108109
}
109110

110111
if ($container->has('assets.packages')) {

‎src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<argument type="service" id="twig" />
1818
<argument type="service" id="templating.name_parser" />
1919
<argument type="service" id="templating.locator" />
20+
21+
<deprecated>The "%service_id%" service is deprecated since Symfony 4.4 and will be removed in 5.0.</deprecated>
2022
</service>
2123
</services>
2224
</container>

‎src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
<argument type="service" id="Psr\Container\ContainerInterface" />
3636
<argument type="service" id="templating.finder" on-invalid="ignore" />
3737
<argument type="collection" /> <!-- Twig paths -->
38+
39+
<deprecated>The "%service_id%" service is deprecated since Symfony 4.4 and will be removed in 5.0.</deprecated>
3840
</service>
3941

4042
<service id="twig.template_iterator" class="Symfony\Bundle\TwigBundle\TemplateIterator">

‎src/Symfony/Component/Filesystem/Filesystem.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Filesystem/Filesystem.php
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,6 @@ private static function box($func)
751751

752752
return $result;
753753
} catch (\Throwable $e) {
754-
} catch (\Exception $e) {
755754
}
756755
\restore_error_handler();
757756

‎src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public function __construct($templating = null, UriSigner $signer = null, string
5252
* @param EngineInterface|Environment|null $templating An EngineInterface or an Environment instance
5353
*
5454
* @throws \InvalidArgumentException
55+
*
56+
* @internal
5557
*/
5658
public function setTemplating($templating)
5759
{

‎src/Symfony/Component/HttpKernel/Kernel.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/HttpKernel/Kernel.php
-2Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,6 @@ protected function initializeContainer()
494494
$fresh = true;
495495
}
496496
} catch (\Throwable $e) {
497-
} catch (\Exception $e) {
498497
} finally {
499498
error_reporting($errorLevel);
500499
}
@@ -563,7 +562,6 @@ protected function initializeContainer()
563562
try {
564563
$oldContainer = include $cache->getPath();
565564
} catch (\Throwable $e) {
566-
} catch (\Exception $e) {
567565
} finally {
568566
error_reporting($errorLevel);
569567
}

‎src/Symfony/Component/Messenger/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ CHANGELOG
66

77
* The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead.
88

9+
4.4.0
10+
-----
11+
12+
* Deprecated passing a `ContainerInterface` instance as first argument of the `ConsumeMessagesCommand` constructor,
13+
pass a `RoutableMessageBus` instance instead.
14+
915
4.3.0
1016
-----
1117

‎src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ class ConsumeMessagesCommand extends Command
5454
*/
5555
public function __construct($routableBus, ContainerInterface $receiverLocator, LoggerInterface $logger = null, array $receiverNames = [], /* ContainerInterface */ $retryStrategyLocator = null, EventDispatcherInterface $eventDispatcher = null)
5656
{
57-
// to be deprecated in 4.4
5857
if ($routableBus instanceof ContainerInterface) {
58+
@trigger_error(sprintf('Passing a "%s" instance as first argument to "%s()" is deprecated since Symfony 4.4, pass a "%s" instance instead.', ContainerInterface::class, __METHOD__, RoutableMessageBus::class), E_USER_DEPRECATED);
5959
$routableBus = new RoutableMessageBus($routableBus);
6060
}
6161

‎src/Symfony/Component/Messenger/Tests/Command/ConsumeMessagesCommandTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Command/ConsumeMessagesCommandTest.php
+9-1Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ConsumeMessagesCommandTest extends TestCase
2727
{
2828
public function testConfigurationWithDefaultReceiver()
2929
{
30-
$command = new ConsumeMessagesCommand($this->createMock(ServiceLocator::class), $this->createMock(ServiceLocator::class), null, ['amqp']);
30+
$command = new ConsumeMessagesCommand($this->createMock(RoutableMessageBus::class), $this->createMock(ServiceLocator::class), null, ['amqp']);
3131
$inputArgument = $command->getDefinition()->getArgument('receivers');
3232
$this->assertFalse($inputArgument->isRequired());
3333
$this->assertSame(['amqp'], $inputArgument->getDefault());
@@ -98,6 +98,10 @@ public function testRunWithBusOption()
9898
$this->assertContains('[OK] Consuming messages from transports "dummy-receiver"', $tester->getDisplay());
9999
}
100100

101+
/**
102+
* @group legacy
103+
* @expectedDeprecation Passing a "Psr\Container\ContainerInterface" instance as first argument to "Symfony\Component\Messenger\Command\ConsumeMessagesCommand::__construct()" is deprecated since Symfony 4.4, pass a "Symfony\Component\Messenger\RoutableMessageBus" instance instead.
104+
*/
101105
public function testBasicRunWithBusLocator()
102106
{
103107
$envelope = new Envelope(new \stdClass(), [new BusNameStamp('dummy-bus')]);
@@ -130,6 +134,10 @@ public function testBasicRunWithBusLocator()
130134
$this->assertContains('[OK] Consuming messages from transports "dummy-receiver"', $tester->getDisplay());
131135
}
132136

137+
/**
138+
* @group legacy
139+
* @expectedDeprecation Passing a "Psr\Container\ContainerInterface" instance as first argument to "Symfony\Component\Messenger\Command\ConsumeMessagesCommand::__construct()" is deprecated since Symfony 4.4, pass a "Symfony\Component\Messenger\RoutableMessageBus" instance instead.
140+
*/
133141
public function testRunWithBusOptionAndBusLocator()
134142
{
135143
$envelope = new Envelope(new \stdClass());

‎src/Symfony/Component/Security/Core/Encoder/BasePasswordEncoder.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Security/Core/Encoder/BasePasswordEncoder.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ protected function demergePasswordAndSalt($mergedPasswordSalt)
4848
/**
4949
* Merges a password and a salt.
5050
*
51-
* @param string $password The password to be used
52-
* @param string $salt The salt to be used
51+
* @param string $password The password to be used
52+
* @param string|null $salt The salt to be used
5353
*
5454
* @return string a merged password and salt
5555
*

‎src/Symfony/Component/Security/Core/Encoder/PasswordEncoderInterface.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Security/Core/Encoder/PasswordEncoderInterface.php
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ interface PasswordEncoderInterface
2323
/**
2424
* Encodes the raw password.
2525
*
26-
* @param string $raw The password to encode
27-
* @param string $salt The salt
26+
* @param string $raw The password to encode
27+
* @param string|null $salt The salt
2828
*
2929
* @return string The encoded password
3030
*
@@ -36,9 +36,9 @@ public function encodePassword($raw, $salt);
3636
/**
3737
* Checks a raw password against an encoded password.
3838
*
39-
* @param string $encoded An encoded password
40-
* @param string $raw A raw password
41-
* @param string $salt The salt
39+
* @param string $encoded An encoded password
40+
* @param string $raw A raw password
41+
* @param string|null $salt The salt
4242
*
4343
* @return bool true if the password is valid, false otherwise
4444
*

‎src/Symfony/Component/Translation/Command/XliffLintCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Command/XliffLintCommand.php
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ private function validate($content, $file = null)
124124
$normalizedLocale = preg_quote(str_replace('-', '_', $targetLanguage), '/');
125125
// strict file names require translation files to be named '____.locale.xlf'
126126
// otherwise, both '____.locale.xlf' and 'locale.____.xlf' are allowed
127-
$expectedFilenamePattern = $this->requireStrictFileNames ? sprintf('/^.*\.%s\.xlf/', $normalizedLocale) : sprintf('/^(.*\.%s\.xlf|%s\..*\.xlf)/', $normalizedLocale, $normalizedLocale);
127+
// also, the regexp matching must be case-insensitive, as defined for 'target-language' values
128+
// http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#target-language
129+
$expectedFilenamePattern = $this->requireStrictFileNames ? sprintf('/^.*\.(?i:%s)\.xlf/', $normalizedLocale) : sprintf('/^(.*\.(?i:%s)\.xlf|(?i:%s)\..*\.xlf)/', $normalizedLocale, $normalizedLocale);
128130

129131
if (0 === preg_match($expectedFilenamePattern, basename($file))) {
130132
$errors[] = [

‎src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php
+3-4Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,9 @@ public function lateCollect()
3636
{
3737
$messages = $this->sanitizeCollectedMessages($this->translator->getCollectedMessages());
3838

39-
$this->data = $this->computeCount($messages);
39+
$this->data += $this->computeCount($messages);
4040
$this->data['messages'] = $messages;
4141

42-
$this->data['locale'] = $this->translator->getLocale();
43-
$this->data['fallback_locales'] = $this->translator->getFallbackLocales();
44-
4542
$this->data = $this->cloneVar($this->data);
4643
}
4744

@@ -50,6 +47,8 @@ public function lateCollect()
5047
*/
5148
public function collect(Request $request, Response $response, \Exception $exception = null)
5249
{
50+
$this->data['locale'] = $this->translator->getLocale();
51+
$this->data['fallback_locales'] = $this->translator->getFallbackLocales();
5352
}
5453

5554
/**

‎src/Symfony/Component/Translation/Tests/Command/XliffLintCommandTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Tests/Command/XliffLintCommandTest.php
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,17 @@ public function testLintIncorrectTargetLanguage()
9494
$this->assertContains('There is a mismatch between the language included in the file name ("messages.en.xlf") and the "es" value used in the "target-language" attribute of the file.', trim($tester->getDisplay()));
9595
}
9696

97+
public function testLintTargetLanguageIsCaseInsensitive()
98+
{
99+
$tester = $this->createCommandTester();
100+
$filename = $this->createFile('note', 'zh-cn', 'messages.zh_CN.xlf');
101+
102+
$tester->execute(['filename' => $filename], ['decorated' => false]);
103+
104+
$this->assertEquals(0, $tester->getStatusCode());
105+
$this->assertContains('[OK] All 1 XLIFF files contain valid syntax.', trim($tester->getDisplay()));
106+
}
107+
97108
/**
98109
* @expectedException \RuntimeException
99110
*/

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.