Merge branch '3.4' into 4.0
* 3.4: [HttpKernel] reset kernel start time on reboot Add code of Conduct links in our README [DI] never inline lazy services bumped Symfony version to 3.4.12 updated VERSION for 3.4.11 updated CHANGELOG for 3.4.11 Default testsuite to latest PHPUnit 6.* [Github] Update the pull-request template bumped Symfony version to 2.8.42 updated VERSION for 2.8.41 updated CHANGELOG for 2.8.41 [HttpFoundation] Fix cookie test with xdebug [Serializer] Check the value of enable_max_depth if defined [DI] remove dead code [PhpUnitBridge] silence some stderr outputs [Validator] Update sl translation
This commit is contained in:
commit
101ff69e1a
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,6 +1,6 @@
|
|||||||
| Q | A
|
| Q | A
|
||||||
| ------------- | ---
|
| ------------- | ---
|
||||||
| Branch? | master for features / 2.7 up to 4.0 for bug fixes <!-- see below -->
|
| Branch? | master for features / 2.8 up to 4.1 for bug fixes <!-- see below -->
|
||||||
| Bug fix? | yes/no
|
| Bug fix? | yes/no
|
||||||
| New feature? | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
|
| New feature? | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
|
||||||
| BC breaks? | no <!-- see https://symfony.com/bc -->
|
| BC breaks? | no <!-- see https://symfony.com/bc -->
|
||||||
|
@ -29,6 +29,7 @@ Community
|
|||||||
* [Join the Symfony Community][11] and meet other members at the [Symfony events][12].
|
* [Join the Symfony Community][11] and meet other members at the [Symfony events][12].
|
||||||
* [Get Symfony support][13] on Stack Overflow, Slack, IRC, etc.
|
* [Get Symfony support][13] on Stack Overflow, Slack, IRC, etc.
|
||||||
* Follow us on [GitHub][14], [Twitter][15] and [Facebook][16].
|
* Follow us on [GitHub][14], [Twitter][15] and [Facebook][16].
|
||||||
|
* Read our [Code of Conduct][24] and meet the [CARE Team][25]
|
||||||
|
|
||||||
Contributing
|
Contributing
|
||||||
------------
|
------------
|
||||||
@ -71,3 +72,5 @@ Symfony development is sponsored by [SensioLabs][21], led by the
|
|||||||
[21]: https://sensiolabs.com
|
[21]: https://sensiolabs.com
|
||||||
[22]: https://symfony.com/doc/current/contributing/code/core_team.html
|
[22]: https://symfony.com/doc/current/contributing/code/core_team.html
|
||||||
[23]: https://github.com/symfony/symfony-demo
|
[23]: https://github.com/symfony/symfony-demo
|
||||||
|
[24]: https://symfony.com/coc
|
||||||
|
[25]: https://symfony.com/doc/current/contributing/code_of_conduct/care_team.html
|
||||||
|
2
phpunit
2
phpunit
@ -8,7 +8,7 @@ if (!file_exists(__DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (\PHP_VERSION_ID >= 70000 && !getenv('SYMFONY_PHPUNIT_VERSION')) {
|
if (\PHP_VERSION_ID >= 70000 && !getenv('SYMFONY_PHPUNIT_VERSION')) {
|
||||||
putenv('SYMFONY_PHPUNIT_VERSION=6.0');
|
putenv('SYMFONY_PHPUNIT_VERSION=6.5');
|
||||||
}
|
}
|
||||||
putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit');
|
putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit');
|
||||||
require __DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit';
|
require __DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit';
|
||||||
|
@ -27,11 +27,11 @@ class CoverageListenerTest extends TestCase
|
|||||||
$dir = __DIR__.'/../Tests/Fixtures/coverage';
|
$dir = __DIR__.'/../Tests/Fixtures/coverage';
|
||||||
$phpunit = $_SERVER['argv'][0];
|
$phpunit = $_SERVER['argv'][0];
|
||||||
|
|
||||||
exec("$php $phpunit -c $dir/phpunit-without-listener.xml.dist $dir/tests/ --coverage-text", $output);
|
exec("$php $phpunit -c $dir/phpunit-without-listener.xml.dist $dir/tests/ --coverage-text 2> /dev/null", $output);
|
||||||
$output = implode("\n", $output);
|
$output = implode("\n", $output);
|
||||||
$this->assertContains('FooCov', $output);
|
$this->assertContains('FooCov', $output);
|
||||||
|
|
||||||
exec("$php $phpunit -c $dir/phpunit-with-listener.xml.dist $dir/tests/ --coverage-text", $output);
|
exec("$php $phpunit -c $dir/phpunit-with-listener.xml.dist $dir/tests/ --coverage-text 2> /dev/null", $output);
|
||||||
$output = implode("\n", $output);
|
$output = implode("\n", $output);
|
||||||
$this->assertNotContains('FooCov', $output);
|
$this->assertNotContains('FooCov', $output);
|
||||||
$this->assertContains("SutNotFoundTest::test\nCould not find the tested class.", $output);
|
$this->assertContains("SutNotFoundTest::test\nCould not find the tested class.", $output);
|
||||||
|
@ -47,7 +47,7 @@ if ('phpdbg' === PHP_SAPI) {
|
|||||||
$PHP .= ' -qrr';
|
$PHP .= ' -qrr';
|
||||||
}
|
}
|
||||||
|
|
||||||
$COMPOSER = file_exists($COMPOSER = $oldPwd.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? preg_replace('/[\r\n].*/', '', `where.exe composer.phar`) : `which composer.phar`))
|
$COMPOSER = file_exists($COMPOSER = $oldPwd.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? preg_replace('/[\r\n].*/', '', `where.exe composer.phar`) : `which composer.phar 2> /dev/null`))
|
||||||
? $PHP.' '.escapeshellarg($COMPOSER)
|
? $PHP.' '.escapeshellarg($COMPOSER)
|
||||||
: 'composer';
|
: 'composer';
|
||||||
|
|
||||||
|
@ -88,11 +88,15 @@ class InlineServiceDefinitionsPass extends AbstractRecursivePass implements Repe
|
|||||||
*/
|
*/
|
||||||
private function isInlineableDefinition($id, Definition $definition, ServiceReferenceGraph $graph)
|
private function isInlineableDefinition($id, Definition $definition, ServiceReferenceGraph $graph)
|
||||||
{
|
{
|
||||||
|
if ($definition->getErrors() || $definition->isDeprecated() || $definition->isLazy() || $definition->isSynthetic()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!$definition->isShared()) {
|
if (!$definition->isShared()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($definition->isDeprecated() || $definition->isPublic() || $definition->isLazy()) {
|
if ($definition->isPublic()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,17 +54,4 @@ class ProxyHelper
|
|||||||
return $prefix.$parent->name;
|
return $prefix.$parent->name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function export($value)
|
|
||||||
{
|
|
||||||
if (!is_array($value)) {
|
|
||||||
return var_export($value, true);
|
|
||||||
}
|
|
||||||
$code = array();
|
|
||||||
foreach ($value as $k => $v) {
|
|
||||||
$code[] = sprintf('%s => %s', var_export($k, true), self::export($v));
|
|
||||||
}
|
|
||||||
|
|
||||||
return sprintf('array(%s)', implode(', ', $code));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\DependencyInjection\Tests\Dumper;
|
namespace Symfony\Component\DependencyInjection\Tests\Dumper;
|
||||||
|
|
||||||
use DummyProxyDumper;
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
@ -488,6 +487,19 @@ class PhpDumperTest extends TestCase
|
|||||||
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services13.php', $dumper->dump(), '->dump() dumps inline definitions which reference service_container');
|
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services13.php', $dumper->dump(), '->dump() dumps inline definitions which reference service_container');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testNonSharedLazyDefinitionReferences()
|
||||||
|
{
|
||||||
|
$container = new ContainerBuilder();
|
||||||
|
$container->register('foo', 'stdClass')->setShared(false)->setLazy(true);
|
||||||
|
$container->register('bar', 'stdClass')->addArgument(new Reference('foo', ContainerBuilder::EXCEPTION_ON_INVALID_REFERENCE, false))->setPublic(true);
|
||||||
|
$container->compile();
|
||||||
|
|
||||||
|
$dumper = new PhpDumper($container);
|
||||||
|
$dumper->setProxyDumper(new \DummyProxyDumper());
|
||||||
|
|
||||||
|
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services_non_shared_lazy.php', $dumper->dump());
|
||||||
|
}
|
||||||
|
|
||||||
public function testInitializePropertiesBeforeMethodCalls()
|
public function testInitializePropertiesBeforeMethodCalls()
|
||||||
{
|
{
|
||||||
require_once self::$fixturesPath.'/includes/classes.php';
|
require_once self::$fixturesPath.'/includes/classes.php';
|
||||||
@ -556,7 +568,7 @@ class PhpDumperTest extends TestCase
|
|||||||
|
|
||||||
$dumper = new PhpDumper($container);
|
$dumper = new PhpDumper($container);
|
||||||
|
|
||||||
$dumper->setProxyDumper(new DummyProxyDumper());
|
$dumper->setProxyDumper(new \DummyProxyDumper());
|
||||||
$dumper->dump();
|
$dumper->dump();
|
||||||
|
|
||||||
$this->addToAssertionCount(1);
|
$this->addToAssertionCount(1);
|
||||||
|
@ -85,17 +85,17 @@ class DummyProxyDumper implements ProxyDumper
|
|||||||
{
|
{
|
||||||
public function isProxyCandidate(Definition $definition)
|
public function isProxyCandidate(Definition $definition)
|
||||||
{
|
{
|
||||||
return false;
|
return $definition->isLazy();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getProxyFactoryCode(Definition $definition, $id, $factoryCall = null)
|
public function getProxyFactoryCode(Definition $definition, $id, $factoryCall = null)
|
||||||
{
|
{
|
||||||
return '';
|
return " // lazy factory\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getProxyCode(Definition $definition)
|
public function getProxyCode(Definition $definition)
|
||||||
{
|
{
|
||||||
return '';
|
return "// proxy code\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;
|
||||||
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
|
use Symfony\Component\DependencyInjection\Container;
|
||||||
|
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
|
||||||
|
use Symfony\Component\DependencyInjection\Exception\LogicException;
|
||||||
|
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
|
||||||
|
use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class has been auto-generated
|
||||||
|
* by the Symfony Dependency Injection Component.
|
||||||
|
*
|
||||||
|
* @final since Symfony 3.3
|
||||||
|
*/
|
||||||
|
class ProjectServiceContainer extends Container
|
||||||
|
{
|
||||||
|
private $parameters;
|
||||||
|
private $targetDirs = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal but protected for BC on cache:clear
|
||||||
|
*/
|
||||||
|
protected $privates = array();
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->services = $this->privates = array();
|
||||||
|
$this->methodMap = array(
|
||||||
|
'bar' => 'getBarService',
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->aliases = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function reset()
|
||||||
|
{
|
||||||
|
$this->privates = array();
|
||||||
|
parent::reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function compile()
|
||||||
|
{
|
||||||
|
throw new LogicException('You cannot compile a dumped container that was already compiled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isCompiled()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRemovedIds()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'Psr\\Container\\ContainerInterface' => true,
|
||||||
|
'Symfony\\Component\\DependencyInjection\\ContainerInterface' => true,
|
||||||
|
'foo' => true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function createProxy($class, \Closure $factory)
|
||||||
|
{
|
||||||
|
return $factory();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the public 'bar' shared service.
|
||||||
|
*
|
||||||
|
* @return \stdClass
|
||||||
|
*/
|
||||||
|
protected function getBarService()
|
||||||
|
{
|
||||||
|
return $this->services['bar'] = new \stdClass($this->getFooService());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the private 'foo' service.
|
||||||
|
*
|
||||||
|
* @return \stdClass
|
||||||
|
*/
|
||||||
|
protected function getFooService($lazyLoad = true)
|
||||||
|
{
|
||||||
|
// lazy factory
|
||||||
|
|
||||||
|
return new \stdClass();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// proxy code
|
@ -22,6 +22,10 @@ error_reporting(-1);
|
|||||||
ini_set('html_errors', 0);
|
ini_set('html_errors', 0);
|
||||||
ini_set('display_errors', 1);
|
ini_set('display_errors', 1);
|
||||||
|
|
||||||
|
if (ini_get('xdebug.default_enable')) {
|
||||||
|
xdebug_disable();
|
||||||
|
}
|
||||||
|
|
||||||
header_remove('X-Powered-By');
|
header_remove('X-Powered-By');
|
||||||
header('Content-Type: text/plain; charset=utf-8');
|
header('Content-Type: text/plain; charset=utf-8');
|
||||||
|
|
||||||
|
@ -79,18 +79,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
|||||||
$this->debug = $debug;
|
$this->debug = $debug;
|
||||||
$this->rootDir = $this->getRootDir();
|
$this->rootDir = $this->getRootDir();
|
||||||
$this->name = $this->getName();
|
$this->name = $this->getName();
|
||||||
|
|
||||||
if ($this->debug) {
|
|
||||||
$this->startTime = microtime(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
{
|
{
|
||||||
if ($this->debug) {
|
|
||||||
$this->startTime = microtime(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->booted = false;
|
$this->booted = false;
|
||||||
$this->container = null;
|
$this->container = null;
|
||||||
$this->requestStackSize = 0;
|
$this->requestStackSize = 0;
|
||||||
@ -102,6 +94,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
|||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
|
if ($this->debug) {
|
||||||
|
$this->startTime = microtime(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (true === $this->booted) {
|
if (true === $this->booted) {
|
||||||
if (!$this->requestStackSize && $this->resetServices) {
|
if (!$this->requestStackSize && $this->resetServices) {
|
||||||
if ($this->container->has('services_resetter')) {
|
if ($this->container->has('services_resetter')) {
|
||||||
|
@ -589,6 +589,21 @@ EOF;
|
|||||||
$this->assertEquals(1, ResettableService::$counter);
|
$this->assertEquals(1, ResettableService::$counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group time-sensitive
|
||||||
|
*/
|
||||||
|
public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel()
|
||||||
|
{
|
||||||
|
$kernel = $this->getKernelForTest(array('initializeBundles'), true);
|
||||||
|
$kernel->boot();
|
||||||
|
$preReBoot = $kernel->getStartTime();
|
||||||
|
|
||||||
|
sleep(3600); //Intentionally large value to detect if ClockMock ever breaks
|
||||||
|
$kernel->boot();
|
||||||
|
|
||||||
|
$this->assertGreaterThan($preReBoot, $kernel->getStartTime());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a mock for the BundleInterface.
|
* Returns a mock for the BundleInterface.
|
||||||
*
|
*
|
||||||
@ -658,10 +673,10 @@ EOF;
|
|||||||
return $kernel;
|
return $kernel;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getKernelForTest(array $methods = array())
|
protected function getKernelForTest(array $methods = array(), $debug = false)
|
||||||
{
|
{
|
||||||
$kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest')
|
$kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest')
|
||||||
->setConstructorArgs(array('test', false))
|
->setConstructorArgs(array('test', $debug))
|
||||||
->setMethods($methods)
|
->setMethods($methods)
|
||||||
->getMock();
|
->getMock();
|
||||||
$p = new \ReflectionProperty($kernel, 'rootDir');
|
$p = new \ReflectionProperty($kernel, 'rootDir');
|
||||||
|
@ -319,6 +319,7 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer
|
|||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
!isset($context[static::ENABLE_MAX_DEPTH]) ||
|
!isset($context[static::ENABLE_MAX_DEPTH]) ||
|
||||||
|
!$context[static::ENABLE_MAX_DEPTH] ||
|
||||||
!isset($attributesMetadata[$attribute]) ||
|
!isset($attributesMetadata[$attribute]) ||
|
||||||
null === $maxDepth = $attributesMetadata[$attribute]->getMaxDepth()
|
null === $maxDepth = $attributesMetadata[$attribute]->getMaxDepth()
|
||||||
) {
|
) {
|
||||||
|
@ -314,6 +314,10 @@
|
|||||||
<source>This is not a valid Business Identifier Code (BIC).</source>
|
<source>This is not a valid Business Identifier Code (BIC).</source>
|
||||||
<target>To ni veljavna identifikacijska koda podjetja (BIC).</target>
|
<target>To ni veljavna identifikacijska koda podjetja (BIC).</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="82">
|
||||||
|
<source>Error</source>
|
||||||
|
<target>Napaka</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
Reference in New Issue
Block a user