Merge branch '2.3' into 2.6

* 2.3:
  renamed some confusing tests
  [2.3] Fix @link annotations
  Fix javascript
  [2.3][Translation] test refresh cache when resources File change.
  [Translator] Cache does not take fallback locales into consideration

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php
	src/Symfony/Bundle/FrameworkBundle/Translation/Translator.php
This commit is contained in:
Fabien Potencier 2015-04-11 09:16:15 +02:00
commit 234cebd087
11 changed files with 67 additions and 22 deletions

View File

@ -12,7 +12,7 @@
namespace Symfony\Bridge\Twig\Node;
/**
* Compiles a call to {@link FormRendererInterface::renderBlock()}.
* Compiles a call to {@link \Symfony\Component\Form\FormRendererInterface::renderBlock()}.
*
* The function name is used as block name. For example, if the function name
* is "foo", the block "foo" will be rendered.

View File

@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\Translation;
use Symfony\Bundle\FrameworkBundle\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\MessageCatalogue;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Translation\MessageSelector;
@ -77,6 +78,8 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
// do it another time as the cache is primed now
$loader = $this->getMock('Symfony\Component\Translation\Loader\LoaderInterface');
$loader->expects($this->never())->method('load');
$translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir));
$translator->setLocale('fr');
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
@ -90,6 +93,27 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
// refresh cache again when resource file resources file change
$resource = $this->getMock('Symfony\Component\Config\Resource\ResourceInterface');
$resource
->expects($this->at(0))
->method('isFresh')
->will($this->returnValue(false))
;
$catalogue = $this->getCatalogue('fr', array('foo' => 'foo fresh'));
$catalogue->addResource($resource);
$loader = $this->getMock('Symfony\Component\Translation\Loader\LoaderInterface');
$loader
->expects($this->at(0))
->method('load')
->will($this->returnValue($catalogue))
;
$translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir));
$translator->setLocale('fr');
$this->assertEquals('foo fresh', $translator->trans('foo'));
}
public function testTransWithCachingWithInvalidLocale()
@ -184,12 +208,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function getTranslator($loader, $options = array(), $translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator')
{
$translator = new $translatorClass(
$this->getContainer($loader),
new MessageSelector(),
array('loader' => array('loader')),
$options
);
$translator = $this->createTranslator($loader, $options, $translatorClass);
$translator->addResource('loader', 'foo', 'fr');
$translator->addResource('loader', 'foo', 'en');
@ -201,6 +220,18 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
return $translator;
}
private function createTranslator($loader, $options, $translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator')
{
$translator = new $translatorClass(
$this->getContainer($loader),
new MessageSelector(),
array('loader' => array('loader')),
$options
);
return $translator;
}
}
class TranslatorWithInvalidLocale extends Translator

View File

@ -103,13 +103,13 @@
return dict.hasOwnProperty(key)
? dict[key]
: null;
}
};
this.set = function(key, value) {
dict[key] = value;
return value;
}
};
};
/**
@ -383,7 +383,7 @@
return this;
};
};
}
function canvasAutoUpdateOnResizeAndSubmit(e) {
e.preventDefault();

View File

@ -121,7 +121,7 @@
for (elem in menuItems) {
if (typeof(menuItems[elem].children) !== 'undefined' &&
menuItems[elem].children.length > 0) {
child = menuItems[elem].children[0]
child = menuItems[elem].children[0];
if ('' === child.getAttribute('title') ||
null === child.getAttribute('title')) {

View File

@ -127,7 +127,7 @@ interface ChoiceListInterface
* Returns the indices corresponding to the given choices.
*
* The indices must be positive integers or strings accepted by
* {@link FormConfigBuilder::validateName()}.
* {@link \Symfony\Component\Form\FormConfigBuilder::validateName()}.
*
* The index "placeholder" is internally reserved.
*
@ -147,7 +147,7 @@ interface ChoiceListInterface
* Returns the indices corresponding to the given values.
*
* The indices must be positive integers or strings accepted by
* {@link FormConfigBuilder::validateName()}.
* {@link \Symfony\Component\Form\FormConfigBuilder::validateName()}.
*
* The index "placeholder" is internally reserved.
*

View File

@ -21,7 +21,7 @@ use Symfony\Component\OptionsResolver\OptionsResolverInterface;
* Encapsulates common logic of {@link FormType} and {@link ButtonType}.
*
* This type does not appear in the form's type inheritance chain and as such
* cannot be extended (via {@link FormTypeExtension}s) nor themed.
* cannot be extended (via {@link \Symfony\Component\Form\FormExtensionInterface}) nor themed.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/

View File

@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\Request;
* @author Bernhard Schussek <bschussek@gmail.com>
*
* @deprecated Deprecated since version 2.3, to be removed in 3.0. Pass the
* Request instance to {@link Form::handleRequest()} instead.
* Request instance to {@link \Symfony\Component\Form\Form::handleRequest()} instead.
*/
class BindRequestListener implements EventSubscriberInterface
{

View File

@ -48,7 +48,7 @@ class ViolationPath implements \IteratorAggregate, PropertyPathInterface
/**
* Creates a new violation path from a string.
*
* @param string $violationPath The property path of a {@link ConstraintViolation}
* @param string $violationPath The property path of a {@link \Symfony\Component\Validator\ConstraintViolation}
* object.
*/
public function __construct($violationPath)

View File

@ -159,7 +159,7 @@ class NativeRequestHandler implements RequestHandlerInterface
* It's safe to pass an already converted array, in which case this method
* just returns the original array unmodified.
*
* This method is identical to {@link Symfony\Component\HttpFoundation\FileBag::fixPhpFilesArray}
* This method is identical to {@link \Symfony\Component\HttpFoundation\FileBag::fixPhpFilesArray}
* and should be kept as such in order to port fixes quickly and easily.
*
* @param array $data

View File

@ -26,7 +26,7 @@ class HttpKernelTest extends \PHPUnit_Framework_TestCase
/**
* @expectedException \RuntimeException
*/
public function testHandleWhenControllerThrowsAnExceptionAndRawIsTrue()
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrue()
{
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver(function () { throw new \RuntimeException(); }));
@ -36,14 +36,14 @@ class HttpKernelTest extends \PHPUnit_Framework_TestCase
/**
* @expectedException \RuntimeException
*/
public function testHandleWhenControllerThrowsAnExceptionAndRawIsFalseAndNoListenerIsRegistered()
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered()
{
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver(function () { throw new \RuntimeException(); }));
$kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, false);
}
public function testHandleWhenControllerThrowsAnExceptionAndRawIsFalse()
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithAHandlingListener()
{
$dispatcher = new EventDispatcher();
$dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
@ -51,12 +51,26 @@ class HttpKernelTest extends \PHPUnit_Framework_TestCase
});
$kernel = new HttpKernel($dispatcher, $this->getResolver(function () { throw new \RuntimeException('foo'); }));
$response = $kernel->handle(new Request());
$response = $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
$this->assertEquals('500', $response->getStatusCode());
$this->assertEquals('foo', $response->getContent());
}
/**
* @expectedException \RuntimeException
*/
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithANonHandlingListener()
{
$dispatcher = new EventDispatcher();
$dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
// should set a response, but does not
});
$kernel = new HttpKernel($dispatcher, $this->getResolver(function () { throw new \RuntimeException('foo'); }));
$kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
}
public function testHandleExceptionWithARedirectionResponse()
{
$dispatcher = new EventDispatcher();

View File

@ -88,7 +88,7 @@ class DefaultTranslator implements TranslatorInterface
* have the same expressiveness. While Translator supports intervals in
* message translations, which are needed for languages other than English,
* this translator does not. You should use Translator or a custom
* implementation of {@link TranslatorInterface} if you need this or similar
* implementation of {@link \Symfony\Component\Translation\TranslatorInterface} if you need this or similar
* functionality.
*
* Example usage: