From c0300f57d555c5e1e21f6abb65de91a44432d8a9 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Thu, 9 Apr 2015 10:44:56 +0200 Subject: [PATCH] Remaining tweaks for translator tests on 2.7 This are the remaining changes on the 2.7 branch after #14437 merged most of the improvements into 2.6. --- .../Tests/Translation/TranslatorTest.php | 22 +++++++++------- .../Translation/Tests/TranslatorCacheTest.php | 26 +++++++++++++++++++ 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php index 58f2dea753..c7b61cb881 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php @@ -12,7 +12,6 @@ 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; @@ -105,7 +104,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $translator->trans('foo'); } - public function testLoadRessourcesWithCaching() + public function testLoadResourcesWithCaching() { $loader = new \Symfony\Component\Translation\Loader\YamlFileLoader(); $resourceFiles = array( @@ -133,7 +132,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $this->assertEquals('folder', $translator->trans('folder')); } - public function testLoadRessourcesWithoutCaching() + public function testLoadResourcesWithoutCaching() { $loader = new \Symfony\Component\Translation\Loader\YamlFileLoader(); $resourceFiles = array( @@ -271,17 +270,20 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase __DIR__.'/../Fixtures/Resources/translations/messages.fr.yml', ), ); - $catalogueHash = sha1(serialize(array( - 'resources' => array(), - 'fallback_locales' => array(), - ))); // prime the cache $translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir, 'resource_files' => $resourceFiles), 'yml'); - - $this->assertFalse(file_exists($this->tmpDir.'/catalogue.fr.'.$catalogueHash.'.php')); + $translator->setLocale('fr'); $translator->warmup($this->tmpDir); - $this->assertTrue(file_exists($this->tmpDir.'/catalogue.fr.'.$catalogueHash.'.php')); + + $loader = $this->getMock('Symfony\Component\Translation\Loader\LoaderInterface'); + $loader + ->expects($this->never()) + ->method('load'); + + $translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir, 'resource_files' => $resourceFiles), 'yml'); + $translator->setLocale('fr'); + $this->assertEquals('répertoire', $translator->trans('folder')); } private function createTranslator($loader, $options, $translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator', $loaderFomat = 'loader') diff --git a/src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php b/src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php index 2b6fb0ca03..d5d4639984 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php @@ -150,6 +150,32 @@ class TranslatorCacheTest extends \PHPUnit_Framework_TestCase $translator->trans($msgid); } + /** + * @dataProvider runForDebugAndProduction + */ + public function testDifferentTranslatorsForSameLocaleDoNotInterfere($debug) + { + $locale = 'any_locale'; + $format = 'some_format'; + $msgid = 'test'; + + // Create a Translator and prime its cache + $translator = new Translator($locale, null, $this->tmpDir, $debug); + $translator->addLoader($format, new ArrayLoader()); + $translator->addResource($format, array($msgid => 'FAIL'), $locale); + $translator->trans($msgid); + + /* + * Create another Translator with the same locale but a different resource. + * It should not use the first translator's cache but return the value from its own resource. + */ + $translator = new Translator($locale, null, $this->tmpDir, $debug); + $translator->addLoader($format, new ArrayLoader()); + $translator->addResource($format, array($msgid => 'OK'), $locale); + + $this->assertEquals('OK', $translator->trans($msgid), '-> different translators for the same domain interfere in '.($debug ? 'debug' : 'production')); + } + /** * @dataProvider runForDebugAndProduction */