diff --git a/composer.json b/composer.json index 7211e1fc6b2149b6fe4833ff0992162bb7625482..cdf37534af93dc087a22226aa8ab95a2aee1b6ff 100644 --- a/composer.json +++ b/composer.json @@ -156,7 +156,7 @@ "drupal/svg_image": "3.0.2", "drupal/token": "1.15", "drupal/twig_field_value": "^2.0", - "drupal/twig_tweak": "3.3.0", + "drupal/twig_tweak": "3.4.0", "drupal/ultimate_cron": "^2.0@alpha", "drupal/userprotect": "1.3", "drupal/video_embed_field": "2.5", diff --git a/composer.lock b/composer.lock index ebabc82c25c1de2464cd44187be31aa87adeec0b..62e2fa9940bab11fbb8e4428551203c61cf48568 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "59c19fb4452bc31f9dcd56c6056a1929", + "content-hash": "ab37278475d358e74f6fe758eeb44439", "packages": [ { "name": "algolia/places", @@ -6389,24 +6389,23 @@ }, { "name": "drupal/twig_tweak", - "version": "3.3.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/twig_tweak.git", - "reference": "3.3.0" + "reference": "3.4.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.3.0.zip", - "reference": "3.3.0", - "shasum": "a029ab1775b62f08e573e5ad1ab27bc833e7f5b9" + "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.4.0.zip", + "reference": "3.4.0", + "shasum": "1f47f71b4cfbad97fff11db1adc72c311bb1645e" }, "require": { - "drupal/core": "^9.3 || ^10.0", + "drupal/core": "^10.3 || ^11.0", "ext-json": "*", - "php": ">=7.3", - "symfony/polyfill-php80": "^1.17", - "twig/twig": "^2.15.3 || ^3.4.3" + "php": ">=8.1", + "twig/twig": "^3.10.3" }, "suggest": { "symfony/var-dumper": "Better dump() function for debugging Twig variables" @@ -6414,8 +6413,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.3.0", - "datestamp": "1708670116", + "version": "3.4.0", + "datestamp": "1721562308", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6423,7 +6422,7 @@ }, "drush": { "services": { - "drush.services.yml": "^9 || ^10 || ^11" + "drush.services.yml": "^10 || ^11" } } }, diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 0533e49459cb0f9a6995fc478d78a611b60faac4..8eb50e26b636ea55d4f739cb2f1cfb59d7a5f82c 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -6723,25 +6723,24 @@ }, { "name": "drupal/twig_tweak", - "version": "3.3.0", - "version_normalized": "3.3.0.0", + "version": "3.4.0", + "version_normalized": "3.4.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/twig_tweak.git", - "reference": "3.3.0" + "reference": "3.4.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.3.0.zip", - "reference": "3.3.0", - "shasum": "a029ab1775b62f08e573e5ad1ab27bc833e7f5b9" + "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.4.0.zip", + "reference": "3.4.0", + "shasum": "1f47f71b4cfbad97fff11db1adc72c311bb1645e" }, "require": { - "drupal/core": "^9.3 || ^10.0", + "drupal/core": "^10.3 || ^11.0", "ext-json": "*", - "php": ">=7.3", - "symfony/polyfill-php80": "^1.17", - "twig/twig": "^2.15.3 || ^3.4.3" + "php": ">=8.1", + "twig/twig": "^3.10.3" }, "suggest": { "symfony/var-dumper": "Better dump() function for debugging Twig variables" @@ -6749,8 +6748,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.3.0", - "datestamp": "1708670116", + "version": "3.4.0", + "datestamp": "1721562308", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6758,7 +6757,7 @@ }, "drush": { "services": { - "drush.services.yml": "^9 || ^10 || ^11" + "drush.services.yml": "^10 || ^11" } } }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 2c9a2a3fc5569d5bfbeb8c17bdaed506084f1227..74ade7fd4370849d229a5f6d473788013dd683c3 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'osu-asc-webservices/d8-upstream', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'cbe507440a7230022e823506d1e7857b0dff3072', + 'reference' => 'f5bcc9ef2f78f4b3bfda17c862726efd7e74834f', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -1124,9 +1124,9 @@ 'dev_requirement' => false, ), 'drupal/twig_tweak' => array( - 'pretty_version' => '3.3.0', - 'version' => '3.3.0.0', - 'reference' => '3.3.0', + 'pretty_version' => '3.4.0', + 'version' => '3.4.0.0', + 'reference' => '3.4.0', 'type' => 'drupal-module', 'install_path' => __DIR__ . '/../../web/modules/twig_tweak', 'aliases' => array(), @@ -1564,7 +1564,7 @@ 'osu-asc-webservices/d8-upstream' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'cbe507440a7230022e823506d1e7857b0dff3072', + 'reference' => 'f5bcc9ef2f78f4b3bfda17c862726efd7e74834f', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/web/modules/twig_tweak/.gitlab-ci.yml b/web/modules/twig_tweak/.gitlab-ci.yml index 26dc23d262fd3a45aa6af7017fd4446fae7c8c0a..a425a535104ca761c8d1a12e5d1b5f3548bec77e 100644 --- a/web/modules/twig_tweak/.gitlab-ci.yml +++ b/web/modules/twig_tweak/.gitlab-ci.yml @@ -6,4 +6,20 @@ include: - '/includes/include.drupalci.variables.yml' - '/includes/include.drupalci.workflows.yml' variables: - CORE_PHP_MIN: '8.1' + CORE_PHP_MIN: '8.3' + OPT_IN_TEST_MAX_PHP: 1 + OPT_IN_TEST_NEXT_MINOR: 1 + OPT_IN_TEST_NEXT_MAJOR: 1 + _CSPELL_WORDS: '"selfdoc", "Привет", "sqlq" ' + +composer-lint: {allow_failure: false} +eslint: {allow_failure: false} +cspell: {allow_failure: false} +phpcs: {allow_failure: false} +phpstan: {allow_failure: false} +phpstan (max PHP version): {allow_failure: false} +phpstan (next minor): {allow_failure: false} +phpstan (next major): {allow_failure: true} # @todo Fix this in 4.x +phpunit (max PHP version): {allow_failure: false} +phpunit (next minor): {allow_failure: false} +phpunit (next major): {allow_failure: false} diff --git a/web/modules/twig_tweak/composer.json b/web/modules/twig_tweak/composer.json index 641f536ea329d77a504be2ae8ea02ac6c8824ce7..84c16ee9a63e04251b2907a6cde76b39780d56a9 100644 --- a/web/modules/twig_tweak/composer.json +++ b/web/modules/twig_tweak/composer.json @@ -10,11 +10,10 @@ "source": "https://git.drupalcode.org/project/twig_tweak" }, "require": { - "php": ">=7.3", + "php": ">=8.1", "ext-json": "*", - "drupal/core": "^9.3 || ^10.0", - "twig/twig": "^2.15.3 || ^3.4.3", - "symfony/polyfill-php80": "^1.17" + "drupal/core": "^10.3 || ^11.0", + "twig/twig": "^3.10.3" }, "suggest": { "symfony/var-dumper": "Better dump() function for debugging Twig variables" @@ -22,7 +21,7 @@ "extra": { "drush": { "services": { - "drush.services.yml": "^9 || ^10 || ^11" + "drush.services.yml": "^10 || ^11" } } } diff --git a/web/modules/twig_tweak/src/Command/LintCommand.php b/web/modules/twig_tweak/src/Command/LintCommand.php index 9e3e45a34ff8171b1715b960645434738451e33e..882b19d2f42b65f343c88eebcc8be6a33d126a35 100644 --- a/web/modules/twig_tweak/src/Command/LintCommand.php +++ b/web/modules/twig_tweak/src/Command/LintCommand.php @@ -12,6 +12,7 @@ // @codingStandardsIgnoreFile // This code is a literal copy of Symfony's LintCommand. // @see https://github.com/symfony/symfony/blob/5.x/src/Symfony/Bridge/Twig/Command/LintCommand.php +// @cspell:ignore Weistroff Tamarelle Fabien Potencier namespace Drupal\twig_tweak\Command; use Symfony\Component\Console\Command\Command; @@ -35,7 +36,7 @@ * @author Marc Weistroff <marc.weistroff@sensiolabs.com> * @author Jérôme Tamarelle <jerome@tamarelle.net> */ -class LintCommand extends Command +abstract class LintCommand extends Command { protected static $defaultName = 'lint:twig'; @@ -77,7 +78,7 @@ protected function configure() ; } - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $filenames = $input->getArgument('filename'); diff --git a/web/modules/twig_tweak/src/Command/ValidateCommand.php b/web/modules/twig_tweak/src/Command/ValidateCommand.php index 57c66453c7e467deabb1533be33722d3ba23ded3..6e331bdcd0a0ac8a2f5cb9b48f8509e81fecf9e5 100644 --- a/web/modules/twig_tweak/src/Command/ValidateCommand.php +++ b/web/modules/twig_tweak/src/Command/ValidateCommand.php @@ -6,14 +6,13 @@ /** * Implements twig-tweak:lint console command. + * + * @cspell:ignore friendsoftwig, twigcs + * + * @todo Remove this in 4.x. */ final class ValidateCommand extends LintCommand { - /** - * {@inheritdoc} - */ - protected static $defaultName = 'twig-tweak:validate'; - /** * {@inheritdoc} */ @@ -24,6 +23,7 @@ protected function configure(): void { } parent::configure(); + $this->setName('twig-tweak:validate'); $this->setAliases(['twig-validate']); $this->setHelp( $this->getHelp() . <<< 'TEXT' diff --git a/web/modules/twig_tweak/src/TwigTweakExtension.php b/web/modules/twig_tweak/src/TwigTweakExtension.php index 36e3004d0d0354bfe2e7e943bb230bb8b32d352a..b3256a591026dbd8aa2c925847eb7eb977f5d26c 100644 --- a/web/modules/twig_tweak/src/TwigTweakExtension.php +++ b/web/modules/twig_tweak/src/TwigTweakExtension.php @@ -15,6 +15,7 @@ use Drupal\Core\Render\Element; use Drupal\Core\Render\Markup; use Drupal\Core\Site\Settings; +use Drupal\Core\StringTranslation\ByteSizeMarkup; use Drupal\Core\Theme\ThemeManagerInterface; use Drupal\Core\Url; use Drupal\image\Entity\ImageStyle; @@ -106,7 +107,7 @@ public function getFilters(): array { new TwigFilter('image_style', [self::class, 'imageStyleFilter']), new TwigFilter('transliterate', [self::class, 'transliterateFilter']), new TwigFilter('check_markup', 'check_markup'), - new TwigFilter('format_size', 'format_size'), + new TwigFilter('format_size', [ByteSizeMarkup::class, 'create']), new TwigFilter('truncate', [Unicode::class, 'truncate']), new TwigFilter('view', [self::class, 'viewFilter']), new TwigFilter('with', [self::class, 'withFilter']), @@ -717,6 +718,7 @@ public static function cacheMetadata($input): array { */ public static function phpFilter(array $context, string $code) { // Make Twig variables available in PHP code. + // @cspell:disable-next-line extract($context, EXTR_SKIP); ob_start(); // phpcs:ignore Drupal.Functions.DiscouragedFunctions.Discouraged diff --git a/web/modules/twig_tweak/src/View/BlockViewBuilder.php b/web/modules/twig_tweak/src/View/BlockViewBuilder.php index f06fda92382c2bd0e19f6be209731101dd28703f..af207824168c321aaa67a2cb1e742ca4a0d656d7 100644 --- a/web/modules/twig_tweak/src/View/BlockViewBuilder.php +++ b/web/modules/twig_tweak/src/View/BlockViewBuilder.php @@ -79,7 +79,7 @@ public function __construct( AccountInterface $account, RequestStack $request_stack, RouteMatchInterface $route_match, - TitleResolverInterface $title_resolver + TitleResolverInterface $title_resolver, ) { $this->pluginManagerBlock = $plugin_manager_block; $this->contextRepository = $context_repository; diff --git a/web/modules/twig_tweak/src/View/FieldViewBuilder.php b/web/modules/twig_tweak/src/View/FieldViewBuilder.php index 35af7c3d97a22894e7b5d0306896fe38e5919ead..4cc2dc3fb1593388a712e2cf905a989551b9056e 100644 --- a/web/modules/twig_tweak/src/View/FieldViewBuilder.php +++ b/web/modules/twig_tweak/src/View/FieldViewBuilder.php @@ -50,7 +50,7 @@ public function build( string $field_name, $view_mode = 'full', string $langcode = NULL, - bool $check_access = TRUE + bool $check_access = TRUE, ): array { $build = []; diff --git a/web/modules/twig_tweak/src/View/MenuViewBuilder.php b/web/modules/twig_tweak/src/View/MenuViewBuilder.php index 1f91ee2e9a76d541a5ca6cb65f0ee9694cd3c66a..aa0684f2dff6c35e24b989266d033b4d40486eee 100644 --- a/web/modules/twig_tweak/src/View/MenuViewBuilder.php +++ b/web/modules/twig_tweak/src/View/MenuViewBuilder.php @@ -76,6 +76,7 @@ public function build(string $menu_name, int $level = 1, int $depth = 0, bool $e ]; } + $build['#cache']['tags'][] = 'config:system.menu.' . $menu_name; $build['#cache']['contexts'][] = 'route.menu_active_trails:' . $menu_name; return $build; diff --git a/web/modules/twig_tweak/src/View/RegionViewBuilder.php b/web/modules/twig_tweak/src/View/RegionViewBuilder.php index 45330120605dcc1f88972e3e9ee98c036594f7a9..da721d9f72fd1826d16988d3871fee30119b480f 100644 --- a/web/modules/twig_tweak/src/View/RegionViewBuilder.php +++ b/web/modules/twig_tweak/src/View/RegionViewBuilder.php @@ -50,7 +50,7 @@ public function __construct( EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory, RequestStack $request_stack, - TitleResolverInterface $title_resolver + TitleResolverInterface $title_resolver, ) { $this->entityTypeManager = $entity_type_manager; $this->configFactory = $config_factory; diff --git a/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php b/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php index a22b4ce7a5c38cd76a7dcf7382c732f26f1f6c2c..7189085ac186fd86984b5091471b9f0d77174b4e 100644 --- a/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php +++ b/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php @@ -351,6 +351,7 @@ public function testOutput(): void { $this->assertXpath($xpath); // -- 'children'. + // cspell:disable-next-line $xpath = '//div[@class = "tt-children" and text() = "doremi"]'; $this->assertXpath($xpath); diff --git a/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php index 451965fa494997f8a790ec06eedbbf854ce04e2d..4d0611d9089e861fa8ea7e51d7a4b6c86ace1022 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\KernelTests\KernelTestBase; use Drupal\Tests\user\Traits\UserCreationTrait; @@ -164,8 +165,14 @@ public function testBlockViewBuilder(): void { * Renders a render array. */ private function renderPlain(array $build): string { + /** @var \Drupal\Core\Render\RendererInterface $renderer */ $renderer = $this->container->get('renderer'); - return rtrim(preg_replace('#\s{2,}#', '', $renderer->renderPlain($build))); + $content = (string) DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); + return rtrim(preg_replace('#\s{2,}#', '', $content)); } } diff --git a/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php index b349b665f06660c0f83011d5cc6e956fad135135..805375f3c3e04861ff5ff50c0a4cd16b2e313950 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Cache\Cache; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; @@ -75,6 +76,7 @@ public function testEntityFormViewBuilder(): void { 'user.roles:authenticated', ], 'tags' => [ + 'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form', 'config:core.entity_form_display.node.article.default', 'node:1', 'tag_from_twig_tweak_test_node_access', @@ -111,6 +113,7 @@ public function testEntityFormViewBuilder(): void { 'user.roles:authenticated', ], 'tags' => [ + 'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form', 'config:core.entity_form_display.node.article.default', 'node:2', ], @@ -124,7 +127,13 @@ public function testEntityFormViewBuilder(): void { * Renders a render array. */ private function renderPlain(array $build): string { - return $this->container->get('renderer')->renderPlain($build); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = $this->container->get('renderer'); + return DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); } } diff --git a/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php index 5f3c6656233c748802bfd14a9ce2dcd981a55c2d..548d338d4657999763cc6d63c702bf69f8b3b700 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Cache\Cache; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; @@ -187,7 +188,13 @@ public function testEntityViewBuilder(): void { * Renders a render array. */ private function renderPlain(array $build): string { - $actual_html = $this->container->get('renderer')->renderPlain($build); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = $this->container->get('renderer'); + $actual_html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); $actual_html = preg_replace('#<footer>.+</footer>#s', '', $actual_html); return $actual_html; } diff --git a/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php index a4627115dc9552eca4b8b330702f3cecbd104478..0a5e75f6c96032b56110770f8cd003359d7548bb 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Cache\Cache; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; @@ -131,7 +132,13 @@ public function testFieldViewBuilder(): void { * Renders a render array. */ private function renderPlain(array $build): string { - $actual_html = $this->container->get('renderer')->renderPlain($build); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = $this->container->get('renderer'); + $actual_html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); $actual_html = preg_replace('#<footer>.+</footer>#s', '', $actual_html); $actual_html = preg_replace(['#\s{2,}#', '#\n#'], '', $actual_html); return $actual_html; diff --git a/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php index 88226d7e315331520e4b74b66357cbd8f0cfc606..f0d51827001c3468cbab73f6479ef81f8e1d5382 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php @@ -2,8 +2,10 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Cache\Cache; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\File\FileExists; use Drupal\Core\File\FileSystemInterface; use Drupal\file\Entity\File; use Drupal\file\FileInterface; @@ -101,7 +103,7 @@ public function setUp(): void { // Create a copy of a test image file in root. Original sizes: 40x20px. $this->publicImageUri = 'public://image-test-do.jpg'; - $file_system->copy('core/tests/fixtures/files/image-test.jpg', $this->publicImageUri, FileSystemInterface::EXISTS_REPLACE); + $file_system->copy('core/tests/fixtures/files/image-test.jpg', $this->publicImageUri, FileExists::Replace); $this->assertFileExists($this->publicImageUri); $this->publicImage = File::create([ 'uri' => $this->publicImageUri, @@ -111,7 +113,7 @@ public function setUp(): void { // Create a copy of a test image file in root. Original sizes: 40x20px. $this->privateImageUri = 'private://image-test-do.png'; - $file_system->copy('core/tests/fixtures/files/image-test.png', $this->privateImageUri, FileSystemInterface::EXISTS_REPLACE); + $file_system->copy('core/tests/fixtures/files/image-test.png', $this->privateImageUri, FileExists::Replace); $this->assertFileExists($this->privateImageUri); $this->privateImage = File::create([ 'uri' => $this->privateImageUri, @@ -133,6 +135,11 @@ public function register(ContainerBuilder $container) { * Test callback. */ public function testImageViewBuilder(): void { + // @todo Remove this once we drop support for Drupal 10. + if (version_compare(\Drupal::VERSION, '11.0.dev', '<')) { + self::markTestSkipped(); + } + $view_builder = $this->container->get('twig_tweak.image_view_builder'); $uri = $this->publicImage->getFileUri(); @@ -210,7 +217,7 @@ public function testImageViewBuilder(): void { ], ]; self::assertRenderArray($expected_build, $build); - self::assertSame('<picture><img src="/files/styles/small/public/image-test-do.jpg?itok=abc" width="10" height="10" alt="Image Test Do" loading="lazy" /></picture>', $this->renderPlain($build)); + self::assertSame('<picture><img width="10" height="10" src="/files/styles/small/public/image-test-do.jpg?itok=abc" alt="Image Test Do" loading="lazy" /></picture>', $this->renderPlain($build)); // -- Private image with access check. $build = $view_builder->build($this->privateImage); @@ -247,7 +254,13 @@ public function testImageViewBuilder(): void { * Renders a render array. */ private function renderPlain(array $build): string { - $html = $this->container->get('renderer')->renderPlain($build); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = $this->container->get('renderer'); + $html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); $html = preg_replace('#src=".+/files/#s', 'src="/files/', $html); $html = preg_replace('#\?itok=.+?"#', '?itok=abc"', $html); $html = preg_replace(['#\s{2,}#', '#\n#'], '', $html); diff --git a/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php index 2a2eb6803a869a0dbfe7d4f4fe470c40fe846586..cd8bc11905348fc96d7e2b108aea52336f4fdaed 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\KernelTests\KernelTestBase; use Drupal\menu_link_content\Entity\MenuLinkContent; @@ -116,8 +117,14 @@ public function testMenuViewBuilder(): void { */ private function assertMarkup(string $expected_markup, array $build): void { $expected_markup = preg_replace('#\s{2,}#', '', $expected_markup); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ $renderer = $this->container->get('renderer'); - $actual_markup = preg_replace('#\s{2,}#', '', $renderer->renderPlain($build)); + $actual_html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); + $actual_markup = preg_replace('#\s{2,}#', '', $actual_html); self::assertSame($expected_markup, $actual_markup); } diff --git a/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php index 40a1eb828c48ed5d2baaeb7ae277242b4866ed98..477b2969484c76cd2713cafa6fb903f1859543d7 100644 --- a/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php +++ b/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; use Drupal\block\Entity\Block; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Component\Utility\Html; use Drupal\Core\Cache\Cache; use Drupal\Tests\user\Traits\UserCreationTrait; @@ -58,6 +59,7 @@ public function setUp(): void { public function testRegionViewBuilder(): void { $view_builder = $this->container->get('twig_tweak.region_view_builder'); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ $renderer = $this->container->get('renderer'); $build = $view_builder->build('sidebar_first'); @@ -126,7 +128,11 @@ public function testRegionViewBuilder(): void { </div> </div> HTML; - $actual_html = $renderer->renderPlain($build); + $actual_html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($build), + ); self::assertSame(self::normalizeHtml($expected_html), self::normalizeHtml($actual_html)); // Set 'stark' as default site theme and check if the view builder without @@ -140,7 +146,11 @@ public function testRegionViewBuilder(): void { self::assertRenderArray($expected_build, $build); Html::resetSeenIds(); - $actual_html = $renderer->renderPlain($expected_build); + $actual_html = DeprecationHelper::backwardsCompatibleCall( + \Drupal::VERSION, '10.3.0', + fn () => $renderer->renderInIsolation($build), + fn () => $renderer->renderPlain($expected_build), + ); self::assertSame(self::normalizeHtml($expected_html), self::normalizeHtml($actual_html)); } diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml index a6ddd46c488d3f5f5ea25ab3500389b7c397ab75..57dcc0c9926f11a617ca22ba0e3073b426d20d66 100644 --- a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml +++ b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml @@ -1,8 +1,6 @@ langcode: en status: true dependencies: { } -_core: - default_config_hash: KuyA4NHPXcmKAjRtwa0vQc2ZcyrUJy6IlS2TAyMNRbc name: 'Basic page' type: page description: 'Use <em>basic pages</em> for your static content, such as an ''About us'' page.' diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml index 0b1a552931fbce674cbf5273b284e88bac3daec8..bba2a980a919d4ae3f04fa1f79588541f36d58b2 100644 --- a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml +++ b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml @@ -1,3 +1,4 @@ +uuid: cd35651d-f143-4c91-b13a-a1f7b2efe67f langcode: en status: true dependencies: @@ -13,75 +14,34 @@ base_table: node_field_data base_field: nid display: default: - display_plugin: default id: default display_title: Master + display_plugin: default position: 0 display_options: - access: - type: perm - options: - perm: 'access content' - cache: - type: tag - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Apply - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: none - options: - offset: 0 - style: - type: html_list - row: - type: fields - options: - default_field_elements: true - inline: { } - separator: '' - hide_empty: false + title: 'Twig tweak test' fields: title: id: title table: node_field_data field: title + relationship: none + group_type: group + admin_label: '' entity_type: node entity_field: title + plugin_id: field label: '' + exclude: false alter: alter_text: false make_link: false absolute: false - trim: false word_boundary: false ellipsis: false strip_tags: false + trim: false html: false - hide_empty: false - empty_zero: false - settings: - link_to_entity: true - plugin_id: field - relationship: none - group_type: group - admin_label: '' - exclude: false element_type: '' element_class: '' element_label_type: '' @@ -91,9 +51,13 @@ display: element_wrapper_class: '' element_default_classes: true empty: '' + hide_empty: false + empty_zero: false hide_alter_empty: true click_sort_column: value type: string + settings: + link_to_entity: true group_column: value group_columns: { } group_rows: true @@ -104,7 +68,28 @@ display: multi_type: separator separator: ', ' field_api_classes: false - filters: { } + pager: + type: none + options: + offset: 0 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } + empty: { } sorts: nid: id: nid @@ -113,18 +98,13 @@ display: relationship: none group_type: group admin_label: '' - order: ASC - exposed: false - expose: - label: '' entity_type: node entity_field: nid plugin_id: standard - title: 'Twig tweak test' - header: { } - footer: { } - empty: { } - relationships: { } + order: ASC + expose: + label: '' + exposed: false arguments: nid: id: nid @@ -133,6 +113,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: nid + plugin_id: node_nid default_action: ignore exception: value: all @@ -143,12 +126,11 @@ display: default_argument_type: fixed default_argument_options: argument: '' - default_argument_skip_url: false summary_options: base_path: '' count: true - items_per_page: 25 override: false + items_per_page: 25 summary: sort_order: asc number_of_records: 0 @@ -160,9 +142,27 @@ display: validate_options: { } break_phrase: false not: false - entity_type: node - entity_field: nid - plugin_id: node_nid + filters: { } + style: + type: html_list + row: + type: fields + options: + default_field_elements: true + inline: { } + separator: '' + hide_empty: false + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } display_extenders: { } cache_metadata: max-age: -1 @@ -174,9 +174,9 @@ display: - user.permissions tags: { } page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: display_extenders: { } diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig b/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig index 09ae148351bc7de4cc85fadc120d177d0cf9d859..57d3fec50096e40c02209b344e1e1d26fc4acd31 100644 --- a/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig +++ b/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig @@ -1,3 +1,4 @@ +{# @cspell:ignore doremi #} {% set image_attributes = {style: 'width: 30px; height 30px;'} %} <style> main { diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml b/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml index d6c1c2ba89f81d4107fa1d83735f8930f9e8492c..755899c4fe872e6c80c1f68ba65558412ac448fc 100644 --- a/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml +++ b/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml @@ -2,16 +2,16 @@ name: Twig tweak test type: module description: Support module for Twig tweak testing. package: Testing -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10 || ^11 dependencies: - - drupal:system (>= 9.0) + - drupal:system (>=10.3) - drupal:block - drupal:media - drupal:node - drupal:path - drupal:twig_tweak -# Information added by Drupal.org packaging script on 2024-02-23 -version: '3.3.0' +# Information added by Drupal.org packaging script on 2024-07-21 +version: '3.4.0' project: 'twig_tweak' -datestamp: 1708670118 +datestamp: 1721562309 diff --git a/web/modules/twig_tweak/twig_tweak.info.yml b/web/modules/twig_tweak/twig_tweak.info.yml index 3f7eefc9a1747843031f476a7cc3062f0aa449e7..7f08ee8b62ec5b7878a9cc4cbe7f2a42c8e9bab7 100644 --- a/web/modules/twig_tweak/twig_tweak.info.yml +++ b/web/modules/twig_tweak/twig_tweak.info.yml @@ -1,11 +1,11 @@ name: Twig Tweak type: module description: Provides some extra Twig functions and filters. -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10 || ^11 dependencies: - - drupal:system (>=9.0) + - drupal:system (>=10.3) -# Information added by Drupal.org packaging script on 2024-02-23 -version: '3.3.0' +# Information added by Drupal.org packaging script on 2024-07-21 +version: '3.4.0' project: 'twig_tweak' -datestamp: 1708670118 +datestamp: 1721562309