Merge branch '4.1' into 4.2
* 4.1: Fix: Adjust DocBlock \"ParserTest->getParserTestData()\" -> only some more tests access the container getting it from the kernel [Lock] Pedantic improvements for lock [EventDispatcher] Fixed phpdoc on interface update year in license files [Console] Fix help text for single command applications Fix random test failure on lock improve error message when using test client without the BrowserKit component [Event Dispatcher] fixed 29703: TraceableEventDispatcher reset now sets callStack to null with test to dispatch after reset. Fixed minor typos Fix: Method can also return null [Stopwatch] Fixed phpdoc for category name
This commit is contained in:
commit
3007e36a5c
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -52,7 +52,7 @@ interface RegistryInterface extends ManagerRegistryInterface
|
|||||||
* it makes sense to get a new one to replace the closed one.
|
* it makes sense to get a new one to replace the closed one.
|
||||||
*
|
*
|
||||||
* Be warned that you will get a brand new entity manager as
|
* Be warned that you will get a brand new entity manager as
|
||||||
* the existing one is not useable anymore. This means that any
|
* the existing one is not usable anymore. This means that any
|
||||||
* other object with a dependency on this entity manager will
|
* other object with a dependency on this entity manager will
|
||||||
* hold an obsolete reference. You can inject the registry instead
|
* hold an obsolete reference. You can inject the registry instead
|
||||||
* to avoid this problem.
|
* to avoid this problem.
|
||||||
|
@ -64,7 +64,7 @@ class DoctrineExtensionTest extends TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$bundles = array(
|
$bundles = array(
|
||||||
'FristBundle' => 'My\FristBundle',
|
'FirstBundle' => 'My\FirstBundle',
|
||||||
'SecondBundle' => 'My\SecondBundle',
|
'SecondBundle' => 'My\SecondBundle',
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ class DoctrineExtensionTest extends TestCase
|
|||||||
array(),
|
array(),
|
||||||
array(
|
array(
|
||||||
'mappings' => array(
|
'mappings' => array(
|
||||||
'FristBundle' => array(
|
'FirstBundle' => array(
|
||||||
'mapping' => true,
|
'mapping' => true,
|
||||||
'is_bundle' => true,
|
'is_bundle' => true,
|
||||||
),
|
),
|
||||||
@ -132,7 +132,7 @@ class DoctrineExtensionTest extends TestCase
|
|||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'mappings' => array(
|
'mappings' => array(
|
||||||
'FristBundle' => array(
|
'FirstBundle' => array(
|
||||||
'mapping' => true,
|
'mapping' => true,
|
||||||
'is_bundle' => true,
|
'is_bundle' => true,
|
||||||
),
|
),
|
||||||
@ -153,7 +153,7 @@ class DoctrineExtensionTest extends TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$bundles = array(
|
$bundles = array(
|
||||||
'FristBundle' => 'My\FristBundle',
|
'FirstBundle' => 'My\FirstBundle',
|
||||||
'SecondBundle' => 'My\SecondBundle',
|
'SecondBundle' => 'My\SecondBundle',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2018 Fabien Potencier
|
Copyright (c) 2014-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2018 Fabien Potencier
|
Copyright (c) 2014-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -96,7 +96,7 @@ EOT
|
|||||||
$targetArg = rtrim($input->getArgument('target'), '/');
|
$targetArg = rtrim($input->getArgument('target'), '/');
|
||||||
|
|
||||||
if (!$targetArg) {
|
if (!$targetArg) {
|
||||||
$targetArg = $this->getPublicDirectory($this->getContainer());
|
$targetArg = $this->getPublicDirectory($kernel->getContainer());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_dir($targetArg)) {
|
if (!is_dir($targetArg)) {
|
||||||
|
@ -21,6 +21,7 @@ use Symfony\Bridge\Twig\Extension\CsrfExtension;
|
|||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Bundle\FrameworkBundle\Routing\AnnotatedRouteControllerLoader;
|
use Symfony\Bundle\FrameworkBundle\Routing\AnnotatedRouteControllerLoader;
|
||||||
use Symfony\Bundle\FullStack;
|
use Symfony\Bundle\FullStack;
|
||||||
|
use Symfony\Component\BrowserKit\Client;
|
||||||
use Symfony\Component\Cache\Adapter\AbstractAdapter;
|
use Symfony\Component\Cache\Adapter\AbstractAdapter;
|
||||||
use Symfony\Component\Cache\Adapter\AdapterInterface;
|
use Symfony\Component\Cache\Adapter\AdapterInterface;
|
||||||
use Symfony\Component\Cache\Adapter\ArrayAdapter;
|
use Symfony\Component\Cache\Adapter\ArrayAdapter;
|
||||||
@ -197,6 +198,10 @@ class FrameworkExtension extends Extension
|
|||||||
|
|
||||||
if (!empty($config['test'])) {
|
if (!empty($config['test'])) {
|
||||||
$loader->load('test.xml');
|
$loader->load('test.xml');
|
||||||
|
|
||||||
|
if (!class_exists(Client::class)) {
|
||||||
|
$container->removeDefinition('test.client');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->isConfigEnabled($container, $config['session'])) {
|
if ($this->isConfigEnabled($container, $config['session'])) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
namespace Symfony\Bundle\FrameworkBundle\Test;
|
namespace Symfony\Bundle\FrameworkBundle\Test;
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Client;
|
use Symfony\Bundle\FrameworkBundle\Client;
|
||||||
|
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebTestCase is the base class for functional tests.
|
* WebTestCase is the base class for functional tests.
|
||||||
@ -32,7 +33,12 @@ abstract class WebTestCase extends KernelTestCase
|
|||||||
{
|
{
|
||||||
$kernel = static::bootKernel($options);
|
$kernel = static::bootKernel($options);
|
||||||
|
|
||||||
$client = $kernel->getContainer()->get('test.client');
|
try {
|
||||||
|
$client = $kernel->getContainer()->get('test.client');
|
||||||
|
} catch (ServiceNotFoundException $e) {
|
||||||
|
throw new \LogicException('You cannot create the client used in functional tests if the BrowserKit component is not available. Try running "composer require symfony/browser-kit".');
|
||||||
|
}
|
||||||
|
|
||||||
$client->setServerParameters($server);
|
$client->setServerParameters($server);
|
||||||
|
|
||||||
return $client;
|
return $client;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2016-2018 Fabien Potencier
|
Copyright (c) 2016-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -75,7 +75,7 @@ class Application
|
|||||||
private $dispatcher;
|
private $dispatcher;
|
||||||
private $terminal;
|
private $terminal;
|
||||||
private $defaultCommand;
|
private $defaultCommand;
|
||||||
private $singleCommand;
|
private $singleCommand = false;
|
||||||
private $initialized;
|
private $initialized;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1098,6 +1098,14 @@ class Application
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function isSingleCommand()
|
||||||
|
{
|
||||||
|
return $this->singleCommand;
|
||||||
|
}
|
||||||
|
|
||||||
private function splitStringByWidth($string, $width)
|
private function splitStringByWidth($string, $width)
|
||||||
{
|
{
|
||||||
// str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly.
|
// str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly.
|
||||||
|
@ -525,6 +525,7 @@ class Command
|
|||||||
public function getProcessedHelp()
|
public function getProcessedHelp()
|
||||||
{
|
{
|
||||||
$name = $this->name;
|
$name = $this->name;
|
||||||
|
$isSingleCommand = $this->application && $this->application->isSingleCommand();
|
||||||
|
|
||||||
$placeholders = array(
|
$placeholders = array(
|
||||||
'%command.name%',
|
'%command.name%',
|
||||||
@ -532,7 +533,7 @@ class Command
|
|||||||
);
|
);
|
||||||
$replacements = array(
|
$replacements = array(
|
||||||
$name,
|
$name,
|
||||||
$_SERVER['PHP_SELF'].' '.$name,
|
$isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name,
|
||||||
);
|
);
|
||||||
|
|
||||||
return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription());
|
return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription());
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -166,6 +166,14 @@ class CommandTest extends TestCase
|
|||||||
$command = new \TestCommand();
|
$command = new \TestCommand();
|
||||||
$command->setHelp('');
|
$command->setHelp('');
|
||||||
$this->assertContains('description', $command->getProcessedHelp(), '->getProcessedHelp() falls back to the description');
|
$this->assertContains('description', $command->getProcessedHelp(), '->getProcessedHelp() falls back to the description');
|
||||||
|
|
||||||
|
$command = new \TestCommand();
|
||||||
|
$command->setHelp('The %command.name% command does... Example: php %command.full_name%.');
|
||||||
|
$application = new Application();
|
||||||
|
$application->add($command);
|
||||||
|
$application->setDefaultCommand('namespace:name', true);
|
||||||
|
$this->assertContains('The namespace:name command does...', $command->getProcessedHelp(), '->getProcessedHelp() replaces %command.name% correctly in single command applications');
|
||||||
|
$this->assertNotContains('%command.full_name%', $command->getProcessedHelp(), '->getProcessedHelp() replaces %command.full_name% in single command applications');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetSetAliases()
|
public function testGetSetAliases()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -120,6 +120,9 @@ class ParserTest extends TestCase
|
|||||||
array('a[name]', array('Attribute[Element[a][name]]')),
|
array('a[name]', array('Attribute[Element[a][name]]')),
|
||||||
array("a[ name\t]", array('Attribute[Element[a][name]]')),
|
array("a[ name\t]", array('Attribute[Element[a][name]]')),
|
||||||
array('a [name]', array('CombinedSelector[Element[a] <followed> Attribute[Element[*][name]]]')),
|
array('a [name]', array('CombinedSelector[Element[a] <followed> Attribute[Element[*][name]]]')),
|
||||||
|
array('[name="foo"]', array("Attribute[Element[*][name = 'foo']]")),
|
||||||
|
array("[name='foo[1]']", array("Attribute[Element[*][name = 'foo[1]']]")),
|
||||||
|
array("[name='foo[0][bar]']", array("Attribute[Element[*][name = 'foo[0][bar]']]")),
|
||||||
array('a[rel="include"]', array("Attribute[Element[a][rel = 'include']]")),
|
array('a[rel="include"]', array("Attribute[Element[a][rel = 'include']]")),
|
||||||
array('a[rel = include]', array("Attribute[Element[a][rel = 'include']]")),
|
array('a[rel = include]', array("Attribute[Element[a][rel = 'include']]")),
|
||||||
array("a[hreflang |= 'en']", array("Attribute[Element[a][hreflang |= 'en']]")),
|
array("a[hreflang |= 'en']", array("Attribute[Element[a][hreflang |= 'en']]")),
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -565,7 +565,7 @@ class YamlFileLoader extends FileLoader
|
|||||||
* @param string $id A service identifier
|
* @param string $id A service identifier
|
||||||
* @param string $file A parsed file
|
* @param string $file A parsed file
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException When errors are occuried
|
* @throws InvalidArgumentException When errors occur
|
||||||
*
|
*
|
||||||
* @return string|array A parsed callable
|
* @return string|array A parsed callable
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2016-2018 Fabien Potencier
|
Copyright (c) 2016-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -228,7 +228,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
|
|||||||
|
|
||||||
public function reset()
|
public function reset()
|
||||||
{
|
{
|
||||||
$this->callStack = array();
|
$this->callStack = null;
|
||||||
$this->orphanedEvents = array();
|
$this->orphanedEvents = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,11 +23,11 @@ interface EventDispatcherInterface
|
|||||||
/**
|
/**
|
||||||
* Dispatches an event to all registered listeners.
|
* Dispatches an event to all registered listeners.
|
||||||
*
|
*
|
||||||
* @param string $eventName The name of the event to dispatch. The name of
|
* @param string $eventName The name of the event to dispatch. The name of
|
||||||
* the event is the name of the method that is
|
* the event is the name of the method that is
|
||||||
* invoked on listeners.
|
* invoked on listeners.
|
||||||
* @param Event $event The event to pass to the event handlers/listeners
|
* @param Event|null $event The event to pass to the event handlers/listeners
|
||||||
* If not supplied, an empty Event instance is created
|
* If not supplied, an empty Event instance is created
|
||||||
*
|
*
|
||||||
* @return Event
|
* @return Event
|
||||||
*/
|
*/
|
||||||
@ -64,7 +64,7 @@ interface EventDispatcherInterface
|
|||||||
/**
|
/**
|
||||||
* Gets the listeners of a specific event or all listeners sorted by descending priority.
|
* Gets the listeners of a specific event or all listeners sorted by descending priority.
|
||||||
*
|
*
|
||||||
* @param string $eventName The name of the event
|
* @param string|null $eventName The name of the event
|
||||||
*
|
*
|
||||||
* @return array The event listeners for the specified event, or all event listeners by event name
|
* @return array The event listeners for the specified event, or all event listeners by event name
|
||||||
*/
|
*/
|
||||||
@ -85,7 +85,7 @@ interface EventDispatcherInterface
|
|||||||
/**
|
/**
|
||||||
* Checks whether an event has any registered listeners.
|
* Checks whether an event has any registered listeners.
|
||||||
*
|
*
|
||||||
* @param string $eventName The name of the event
|
* @param string|null $eventName The name of the event
|
||||||
*
|
*
|
||||||
* @return bool true if the specified event has any listeners, false otherwise
|
* @return bool true if the specified event has any listeners, false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -139,6 +139,18 @@ class TraceableEventDispatcherTest extends TestCase
|
|||||||
$this->assertEquals(array(array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
|
$this->assertEquals(array(array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDispatchAfterReset()
|
||||||
|
{
|
||||||
|
$tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
|
||||||
|
$tdispatcher->addListener('foo', function () {}, 5);
|
||||||
|
|
||||||
|
$tdispatcher->reset();
|
||||||
|
$tdispatcher->dispatch('foo');
|
||||||
|
|
||||||
|
$listeners = $tdispatcher->getCalledListeners();
|
||||||
|
$this->assertArrayHasKey('stub', $listeners[0]);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetCalledListenersNested()
|
public function testGetCalledListenersNested()
|
||||||
{
|
{
|
||||||
$tdispatcher = null;
|
$tdispatcher = null;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -55,7 +55,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
|
|||||||
* @param array $patterns The class patterns to expand
|
* @param array $patterns The class patterns to expand
|
||||||
* @param array $classes The existing classes to match against the patterns
|
* @param array $classes The existing classes to match against the patterns
|
||||||
*
|
*
|
||||||
* @return array A list of classes derivated from the patterns
|
* @return array A list of classes derived from the patterns
|
||||||
*/
|
*/
|
||||||
private function expandClasses(array $patterns, array $classes)
|
private function expandClasses(array $patterns, array $classes)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2012-2018 Fabien Potencier
|
Copyright (c) 2012-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2016-2018 Fabien Potencier
|
Copyright (c) 2016-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -46,7 +46,7 @@ interface StoreInterface
|
|||||||
*
|
*
|
||||||
* If the store does not support this feature it should throw a NotSupportedException.
|
* If the store does not support this feature it should throw a NotSupportedException.
|
||||||
*
|
*
|
||||||
* @param float $ttl amount of second to keep the lock in the store
|
* @param float $ttl amount of seconds to keep the lock in the store
|
||||||
*
|
*
|
||||||
* @throws LockConflictedException
|
* @throws LockConflictedException
|
||||||
* @throws NotSupportedException
|
* @throws NotSupportedException
|
||||||
|
@ -38,7 +38,7 @@ trait BlockingStoreTestTrait
|
|||||||
*/
|
*/
|
||||||
public function testBlockingLocks()
|
public function testBlockingLocks()
|
||||||
{
|
{
|
||||||
// Amount a microsecond used to order async actions
|
// Amount of microseconds we should wait without slowing things down too much
|
||||||
$clockDelay = 50000;
|
$clockDelay = 50000;
|
||||||
|
|
||||||
$key = new Key(uniqid(__METHOD__, true));
|
$key = new Key(uniqid(__METHOD__, true));
|
||||||
|
@ -20,7 +20,9 @@ use Symfony\Component\Lock\StoreInterface;
|
|||||||
trait ExpiringStoreTestTrait
|
trait ExpiringStoreTestTrait
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Amount a microsecond used to order async actions.
|
* Amount of microseconds used as a delay to test expiration. Should be
|
||||||
|
* small enough not to slow the test suite too much, and high enough not to
|
||||||
|
* fail because of race conditions.
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
@ -34,7 +36,7 @@ trait ExpiringStoreTestTrait
|
|||||||
/**
|
/**
|
||||||
* Tests the store automatically delete the key when it expire.
|
* Tests the store automatically delete the key when it expire.
|
||||||
*
|
*
|
||||||
* This test is time sensible: the $clockDelay could be adjust.
|
* This test is time-sensitive: the $clockDelay could be adjusted.
|
||||||
*/
|
*/
|
||||||
public function testExpiration()
|
public function testExpiration()
|
||||||
{
|
{
|
||||||
@ -45,7 +47,7 @@ trait ExpiringStoreTestTrait
|
|||||||
$store = $this->getStore();
|
$store = $this->getStore();
|
||||||
|
|
||||||
$store->save($key);
|
$store->save($key);
|
||||||
$store->putOffExpiration($key, $clockDelay / 1000000);
|
$store->putOffExpiration($key, 2 * $clockDelay / 1000000);
|
||||||
$this->assertTrue($store->exists($key));
|
$this->assertTrue($store->exists($key));
|
||||||
|
|
||||||
usleep(3 * $clockDelay);
|
usleep(3 * $clockDelay);
|
||||||
@ -71,24 +73,23 @@ trait ExpiringStoreTestTrait
|
|||||||
/**
|
/**
|
||||||
* Tests the refresh can push the limits to the expiration.
|
* Tests the refresh can push the limits to the expiration.
|
||||||
*
|
*
|
||||||
* This test is time sensible: the $clockDelay could be adjust.
|
* This test is time-sensitive: the $clockDelay could be adjusted.
|
||||||
*/
|
*/
|
||||||
public function testRefreshLock()
|
public function testRefreshLock()
|
||||||
{
|
{
|
||||||
// Amount a microsecond used to order async actions
|
// Amount of microseconds we should wait without slowing things down too much
|
||||||
$clockDelay = $this->getClockDelay();
|
$clockDelay = $this->getClockDelay();
|
||||||
|
|
||||||
// Amount a microsecond used to order async actions
|
|
||||||
$key = new Key(uniqid(__METHOD__, true));
|
$key = new Key(uniqid(__METHOD__, true));
|
||||||
|
|
||||||
/** @var StoreInterface $store */
|
/** @var StoreInterface $store */
|
||||||
$store = $this->getStore();
|
$store = $this->getStore();
|
||||||
|
|
||||||
$store->save($key);
|
$store->save($key);
|
||||||
$store->putOffExpiration($key, $clockDelay / 1000000);
|
$store->putOffExpiration($key, 2 * $clockDelay / 1000000);
|
||||||
$this->assertTrue($store->exists($key));
|
$this->assertTrue($store->exists($key));
|
||||||
|
|
||||||
usleep(2 * $clockDelay);
|
usleep(3 * $clockDelay);
|
||||||
$this->assertFalse($store->exists($key));
|
$this->assertFalse($store->exists($key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2018 Fabien Potencier
|
Copyright (c) 2018-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -42,11 +42,11 @@ class ExecutableFinder
|
|||||||
/**
|
/**
|
||||||
* Finds an executable by name.
|
* Finds an executable by name.
|
||||||
*
|
*
|
||||||
* @param string $name The executable name (without the extension)
|
* @param string $name The executable name (without the extension)
|
||||||
* @param string $default The default to return if no executable is found
|
* @param string|null $default The default to return if no executable is found
|
||||||
* @param array $extraDirs Additional dirs to check into
|
* @param array $extraDirs Additional dirs to check into
|
||||||
*
|
*
|
||||||
* @return string The executable path or default value
|
* @return string|null The executable path or default value
|
||||||
*/
|
*/
|
||||||
public function find($name, $default = null, array $extraDirs = array())
|
public function find($name, $default = null, array $extraDirs = array())
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -65,6 +65,21 @@ class ExecutableFinderTest extends TestCase
|
|||||||
$this->assertEquals($expected, $result);
|
$this->assertEquals($expected, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFindWithNullAsDefault()
|
||||||
|
{
|
||||||
|
if (ini_get('open_basedir')) {
|
||||||
|
$this->markTestSkipped('Cannot test when open_basedir is set');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->setPath('');
|
||||||
|
|
||||||
|
$finder = new ExecutableFinder();
|
||||||
|
|
||||||
|
$result = $finder->find('foo');
|
||||||
|
|
||||||
|
$this->assertNull($result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testFindWithExtraDirs()
|
public function testFindWithExtraDirs()
|
||||||
{
|
{
|
||||||
if (ini_get('open_basedir')) {
|
if (ini_get('open_basedir')) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2015-2018 Fabien Potencier
|
Copyright (c) 2015-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -98,8 +98,8 @@ class Stopwatch implements ResetInterface
|
|||||||
/**
|
/**
|
||||||
* Starts an event.
|
* Starts an event.
|
||||||
*
|
*
|
||||||
* @param string $name The event name
|
* @param string $name The event name
|
||||||
* @param string $category The event category
|
* @param string|null $category The event category
|
||||||
*
|
*
|
||||||
* @return StopwatchEvent
|
* @return StopwatchEvent
|
||||||
*/
|
*/
|
||||||
|
@ -35,6 +35,14 @@ class StopwatchTest extends TestCase
|
|||||||
$this->assertSame($event, $stopwatch->getEvent('foo'));
|
$this->assertSame($event, $stopwatch->getEvent('foo'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testStartWithoutCategory()
|
||||||
|
{
|
||||||
|
$stopwatch = new Stopwatch();
|
||||||
|
$stopwatchEvent = $stopwatch->start('bar');
|
||||||
|
$this->assertSame('default', $stopwatchEvent->getCategory());
|
||||||
|
$this->assertSame($stopwatchEvent, $stopwatch->getEvent('bar'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testIsStarted()
|
public function testIsStarted()
|
||||||
{
|
{
|
||||||
$stopwatch = new Stopwatch();
|
$stopwatch = new Stopwatch();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -40,10 +40,10 @@ class TargetOperation extends AbstractOperation
|
|||||||
// For 'all' messages, the code can't be simplified as ``$this->messages[$domain]['all'] = $target->all($domain);``,
|
// For 'all' messages, the code can't be simplified as ``$this->messages[$domain]['all'] = $target->all($domain);``,
|
||||||
// because doing so will drop messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
|
// because doing so will drop messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
|
||||||
//
|
//
|
||||||
// For 'new' messages, the code can't be simplied as ``array_diff_assoc($this->target->all($domain), $this->source->all($domain));``
|
// For 'new' messages, the code can't be simplified as ``array_diff_assoc($this->target->all($domain), $this->source->all($domain));``
|
||||||
// because doing so will not exclude messages like {x: x ∈ target ∧ x ∉ source.all ∧ x ∈ source.fallback}
|
// because doing so will not exclude messages like {x: x ∈ target ∧ x ∉ source.all ∧ x ∈ source.fallback}
|
||||||
//
|
//
|
||||||
// For 'obsolete' messages, the code can't be simplifed as ``array_diff_assoc($this->source->all($domain), $this->target->all($domain))``
|
// For 'obsolete' messages, the code can't be simplified as ``array_diff_assoc($this->source->all($domain), $this->target->all($domain))``
|
||||||
// because doing so will not exclude messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
|
// because doing so will not exclude messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
|
||||||
|
|
||||||
foreach ($this->source->all($domain) as $id => $message) {
|
foreach ($this->source->all($domain) as $id => $message) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -127,7 +127,7 @@ class TranslatorCacheTest extends TestCase
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Similar to the previous test. After we used the second translator, make
|
* Similar to the previous test. After we used the second translator, make
|
||||||
* sure there's still a useable cache for the first one.
|
* sure there's still a usable cache for the first one.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$locale = 'any_locale';
|
$locale = 'any_locale';
|
||||||
@ -146,7 +146,7 @@ class TranslatorCacheTest extends TestCase
|
|||||||
$translator->addResource($format, array($msgid => 'FAIL'), $locale);
|
$translator->addResource($format, array($msgid => 'FAIL'), $locale);
|
||||||
$translator->trans($msgid);
|
$translator->trans($msgid);
|
||||||
|
|
||||||
// Now the first translator must still have a useable cache.
|
// Now the first translator must still have a usable cache.
|
||||||
$translator = new Translator($locale, null, $this->tmpDir, $debug);
|
$translator = new Translator($locale, null, $this->tmpDir, $debug);
|
||||||
$translator->addLoader($format, $this->createFailingLoader());
|
$translator->addLoader($format, $this->createFailingLoader());
|
||||||
$translator->addResource($format, array($msgid => 'OK'), $locale);
|
$translator->addResource($format, array($msgid => 'OK'), $locale);
|
||||||
|
@ -41,7 +41,7 @@ interface TranslatorInterface extends LocaleAwareInterface
|
|||||||
* Translates the given choice message by choosing a translation according to a number.
|
* Translates the given choice message by choosing a translation according to a number.
|
||||||
*
|
*
|
||||||
* @param string $id The message id (may also be an object that can be cast to string)
|
* @param string $id The message id (may also be an object that can be cast to string)
|
||||||
* @param int $number The number to use to find the indice of the message
|
* @param int $number The number to use to find the index of the message
|
||||||
* @param array $parameters An array of parameters for the message
|
* @param array $parameters An array of parameters for the message
|
||||||
* @param string|null $domain The domain for the message or null to use the default
|
* @param string|null $domain The domain for the message or null to use the default
|
||||||
* @param string|null $locale The locale or null to use the default
|
* @param string|null $locale The locale or null to use the default
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -30,8 +30,8 @@ class VarCloner extends AbstractCloner
|
|||||||
$queue = array(array($var)); // This breadth-first queue is the return value
|
$queue = array(array($var)); // This breadth-first queue is the return value
|
||||||
$indexedArrays = array(); // Map of queue indexes that hold numerically indexed arrays
|
$indexedArrays = array(); // Map of queue indexes that hold numerically indexed arrays
|
||||||
$hardRefs = array(); // Map of original zval ids to stub objects
|
$hardRefs = array(); // Map of original zval ids to stub objects
|
||||||
$objRefs = array(); // Map of original object handles to their stub object couterpart
|
$objRefs = array(); // Map of original object handles to their stub object counterpart
|
||||||
$resRefs = array(); // Map of original resource handles to their stub object couterpart
|
$resRefs = array(); // Map of original resource handles to their stub object counterpart
|
||||||
$values = array(); // Map of stub objects' ids to original values
|
$values = array(); // Map of stub objects' ids to original values
|
||||||
$maxItems = $this->maxItems;
|
$maxItems = $this->maxItems;
|
||||||
$maxString = $this->maxString;
|
$maxString = $this->maxString;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2018 Fabien Potencier
|
Copyright (c) 2014-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2018 Fabien Potencier
|
Copyright (c) 2014-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2018 Fabien Potencier
|
Copyright (c) 2004-2019 Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
Reference in New Issue
Block a user