only in patch2: unchanged: --- a/core/modules/system/lib/Drupal/system/Tests/Common/SizeUnitTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Common/SizeUnitTest.php @@ -7,7 +7,9 @@ namespace Drupal\system\Tests\Common; +use Drupal\Core\Language\Language; use Drupal\simpletest\UnitTestBase; +use Symfony\Component\DependencyInjection\Reference; /** * Tests file size parsing and formatting functions. @@ -25,6 +27,16 @@ public static function getInfo() { } function setUp() { + // The function format_size uses the function format_plural() which depends + // on the translation service. + $this->container->setParameter('language.default_values', Language::$defaultValues); + $this->container->register('language.default', 'Drupal\Core\Language\LanguageDefault') + ->addArgument('%language.default_values%'); + $this->container->register('language_manager', 'Drupal\Core\Language\LanguageManager') + ->addArgument(new Reference('language.default')); + $this->container->register('string_translation', 'Drupal\Core\StringTranslation\TranslationManager') + ->addArgument(new Reference('language_manager')); + $kb = DRUPAL_KILOBYTE; $this->exact_test_cases = array( '1 byte' => 1, only in patch2: unchanged: --- a/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/AnnotatedClassDiscoveryTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/AnnotatedClassDiscoveryTest.php @@ -24,6 +24,7 @@ public static function getInfo() { public function setUp() { parent::setUp(); + $this->setUpTranslationServices(); $this->expectedDefinitions = array( 'apple' => array( 'id' => 'apple', @@ -37,7 +38,7 @@ public function setUp() { 'label' => 'Banana', 'color' => 'yellow', 'uses' => array( - 'bread' => t('Banana bread'), + 'bread' => $this->container->get('string_translation')->translate('Banana bread'), ), 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Banana', 'provider' => 'plugin_test', only in patch2: unchanged: --- a/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php @@ -24,7 +24,7 @@ public static function getInfo() { protected function setUp() { parent::setUp(); - + $this->setUpTranslationServices(); $this->expectedDefinitions = array( 'custom_example_1' => array( 'id' => 'custom_example_1', @@ -50,7 +50,7 @@ protected function setUp() { 'label' => 'Banana', 'color' => 'yellow', 'uses' => array( - 'bread' => t('Banana bread'), + 'bread' => $this->container->get('string_translation')->translate('Banana bread'), ), 'class' => 'Drupal\plugin_test\Plugin\plugin_test\fruit\Banana', 'provider' => 'plugin_test', only in patch2: unchanged: --- a/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/DiscoveryTestBase.php +++ b/core/modules/system/lib/Drupal/system/Tests/Plugin/Discovery/DiscoveryTestBase.php @@ -7,7 +7,9 @@ namespace Drupal\system\Tests\Plugin\Discovery; +use Drupal\Core\Language\Language; use Drupal\simpletest\UnitTestBase; +use Symfony\Component\DependencyInjection\Reference; /** * Tests that plugins are correctly discovered. @@ -58,5 +60,20 @@ function testDiscoveryInterface() { // Ensure that NULL is returned as the definition of a non-existing plugin. $this->assertIdentical($this->emptyDiscovery->getDefinition('non_existing'), NULL, 'NULL returned as the definition of a non-existing plugin.'); } + + /** + * Create translation services. + * + * Use this if the annotation under test uses @Translation. + */ + protected function setUpTranslationServices() { + $this->container->setParameter('language.default_values', Language::$defaultValues); + $this->container->register('language.default', 'Drupal\Core\Language\LanguageDefault') + ->addArgument('%language.default_values%'); + $this->container->register('language_manager', 'Drupal\Core\Language\LanguageManager') + ->addArgument(new Reference('language.default')); + $this->container->register('string_translation', 'Drupal\Core\StringTranslation\TranslationManager') + ->addArgument(new Reference('language_manager')); + } } only in patch2: unchanged: --- a/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginTestBase.php +++ b/core/modules/system/lib/Drupal/system/Tests/Plugin/PluginTestBase.php @@ -7,10 +7,12 @@ namespace Drupal\system\Tests\Plugin; +use Drupal\Core\Language\Language; use Drupal\simpletest\UnitTestBase; use Drupal\plugin_test\Plugin\TestPluginManager; use Drupal\plugin_test\Plugin\MockBlockManager; use Drupal\plugin_test\Plugin\DefaultsTestPluginManager; +use Symfony\Component\DependencyInjection\Reference; /** * Base class for Plugin API unit tests. @@ -26,6 +28,16 @@ public function setUp() { parent::setUp(); + // Annotations require the translation service so that @Translation will + // work. + $this->container->setParameter('language.default_values', Language::$defaultValues); + $this->container->register('language.default', 'Drupal\Core\Language\LanguageDefault') + ->addArgument('%language.default_values%'); + $this->container->register('language_manager', 'Drupal\Core\Language\LanguageManager') + ->addArgument(new Reference('language.default')); + $this->container->register('string_translation', 'Drupal\Core\StringTranslation\TranslationManager') + ->addArgument(new Reference('language_manager')); + // Real modules implementing plugin types may expose a module-specific API // for retrieving each type's plugin manager, or make them available in // Drupal's dependency injection container, but for unit testing, we get