Saw these two issues today that seem to tread similar ground but haven't looked closely:
🐛
The entity link label formatter should check URL access
RTBC
#3293287: EntityReferenceLabelFormatter returns a link even if the user only have "view label" access →
Test failure, might just need rerunning?
Not sure what the bot's on about.
Rebased, moving back to NR just to make sure the conflict resolution is OK.
The stylelint release notes are somewhat opaque, but it looks like there were quite a few rules added between 16.11.0 and 16.19.1: https://github.com/stylelint/stylelint/releases. Do they all need documentation in the CR?
OK, MR for 10.5.x with changes per #27 for no deprecation warnings: https://git.drupalcode.org/project/drupal/-/merge_requests/12331
If I'd thought about it more, would have waited to see if any package versions would be changed in 11.x MR, but should be easy enough to copy over if so. Held off on 10.6.x for that reason, though, assuming 10.6.x needs an MR as well.
@xjm added MR comment about the ckeditor5.essentials version.
New MR 12331 is for 10.5.x and WIP.
I noticed one outdated license reference in the MR
Looks like ckeditor5.essentials
in core.libraries.yml is at version "35.1.0" and linked to the the corresponding license as well. Didn't see any history about that with a quick look at the git blame.
Updated the title to match the new direction of this issue to remove memory management code in migrate. Also removed the "Needs follow up" tag, since it referred to messaging in migrate that won't be relevant anymore.
I agree with pushing off a better BC layer to a follow up. It's non-trival effort, and use cases seem to be limited to adding buttons to the Media dialog. Also, one thing about specifying icons is that they can either be the SVG markup or name of an existing icon, so the BC detection needs to account for that as well.
Added the version constraint changes to core/composer.json.
Removed the changes to composer/ca-bundle, composer/spdx-licenses (any non-Symfony packages).
We have tried applying the MR 11571 as a patch, but the result is that we get this message instead of the language block content:
At the very least you'd need to have the commit for
📌
Review cache bin and cache tags of access policy caching
Active
, which introduces CacheOptionalInterface
, for the MR diff here to work correctly. It won't be available in any stable release until 10.5.0, 11.2.0, or the next release of 11.1.x.
Split off updating Symfony to 7.3.0 from 📌 Update Composer dependencies for 11.2.0 Active , per #13:
Symfony 7.3.0 is also now out, and could be given its own issue as it's more critical than other updates.
Looks like the phpstan baseline might need to be regenerated: https://git.drupalcode.org/issue/drupal-3006750/-/jobs/5474912
How to do this: https://www.drupal.org/node/3426891 →
Symfony 7.3.0 is also now out, and could be given its own issue as it's more critical than other updates.
📌 Update to Symfony 7.3.0 Active
Since the draft MR here is green, just cherry-picked that commit to the MR there. https://git.drupalcode.org/project/drupal/-/merge_requests/12317
godotislate → created an issue.
Refactored from a functional test to a kernel test.
MR changes are straightforward and lgtm, so +1 for RTBC. But since I contributed to the test code, would be good to get another +1.
nicxvan → credited godotislate → .
Created follow up per #11: 📌 Use latest rules for postcss-nesting Active
godotislate → created an issue.
godotislate → changed the visibility of the branch 3480321-add-overview to hidden.
I have updated MR 12148 based on MR feedback. It's ready for review again.
Separate note: My assumption is that this has missed 11.2.0. In case that it's still possible to get in, and if adding a menu manipualtor service is a blocker to that at this point, I have resolved the test issues on MR 10900 and gotten to functional parity on the front end with the latest changes in MR 12148.
we need to make sure we're addressing a real pain point rather than adding complexity in the name of future flexibility. Is there any specific need you've detected in a project?
I'm not sure it's that much more complex. The code to add the links is essentially just moved to live in its own place. There's a bonus that it's also unit testable.
As for flexibility, I don't know about specific needs, other than some comments in this issue talking about there being various contrib/custom solutions to this problem already in place, so the flexibility is to try to accommodate whatever those may be.
Meanwhile, I have copied the kernel test changes from 12148 to 10900. Unfortunately, there's a test failure, so some investigation is needed whether there's an issue with the test applied to this MR, or if there's something in the original code changes that aren't covered. I'm in the middle of traveling, but I can try to look at what's going on later.
Moving to NR for the port MRs.
The wording of the menu link is a trivial change to either MR whichever way, and I'm not strongly opinionated either way.
That said, my one small pushback to just using "Overview" is that it can be considered an accessibility issue on a page for there to be multiple links with the same text that go to different URLs.
Removed the @todo about code duplication since it was investigated in 37.
Also, since @larowlan has looked at the MR, and he's a Form API maintainer now, I think this is ready.
Duplicated/fixed in 📌 Update prettier/PostCSS/stylelint for 11.2 Active . Credit was ported to that issue.
Moving to NR to kick off discussion about next steps. Should 📌 Remove @nest from claro stylesheets Active be backported to 11.2.x first, then this MR rebased?
I added the 📌 Remove @nest from claro stylesheets Active commits to MR 12299, and the MR passes now, so that was issue.
Also, please bring over credit from 📌 Update postcss* to latest releases Active here.
I think
📌
Remove @nest from claro stylesheets
Active
needs to be ported into 11.2.x, because MR 12299 here against 11.2.x is failing for errors like these:
[{"type":"issue","check_name":"at-rule-no-deprecated","description":"Unexpected deprecated at-rule \"@nest\" (at-rule-no-deprecated)","content":{"body":"Error found in at-rule-no-deprecated. See https://stylelint.io/user-guide/rules/at-rule-no-deprecated for more details."},"categories":["Style"],"location":{"path":"themes/claro/css/components/breadcrumb.pcss.css"
So there was this change made here:
index f61ca3a374a..7f9e7a4f9d7 100644
--- a/core/themes/claro/css/components/system-status-counter.pcss.css
+++ b/core/themes/claro/css/components/system-status-counter.pcss.css
@@ -31,8 +31,7 @@
background-size: 40px;
[dir="rtl"] & {
- border-inline-end: 1px solid #e6e4df;
- border-inline-start: 0;
+ background-position: left center;
}
@media (forced-colors: active) {
And this change made in 293fe02ea0887359199162e0ee9ff868e846b644
that was not backported to 11.2.x:
diff --git a/core/themes/claro/css/components/system-status-counter.pcss.css b/core/themes/claro/css/components/system-status-counter.pcss.css
index a5b139eabe4..f61ca3a374a 100644
--- a/core/themes/claro/css/components/system-status-counter.pcss.css
+++ b/core/themes/claro/css/components/system-status-counter.pcss.css
@@ -30,6 +30,11 @@
background-position: right center;
background-size: 40px;
+ [dir="rtl"] & {
+ border-inline-end: 1px solid #e6e4df;
+ border-inline-start: 0;
+ }
+
@media (forced-colors: active) {
background-color: canvastext;
background-image: none;
@@ -37,10 +42,6 @@
mask-position: right center;
mask-size: 40px;
}
-
- @nest [dir="rtl"] & {
- background-position: left center;
- }
}
}
which is causing the conflict in 11.2.x
Looks like fixing docblocks in AccessGroupAnd is enough for PHPStan.
I think PHPStan was complaining about some missing types with the moved classes, so I added them. It is a break, but the classes are all @internal
. I can remove the types and put in phpstan ignores as needed if preferred.
godotislate → changed the visibility of the branch 3523078-update-prettierpostcssstylelint-for to hidden.
Put up a new separate MR to explore deprecating an array options to Drupal constraints. To take a bit of shortcut in not having to add constructors to every Drupal constraint plugin that doesn't have one, (or at least to put off doing them all now), I created a new base constraint class that looks like this:
use Symfony\Component\Validator\Attribute\HasNamedArguments;
use Symfony\Component\Validator\Constraint;
/**
* Base class for constraint plugins.
*
* This provides generic support for named option parameters passed to the
* class constructor.
*/
abstract class ConstraintBase extends Constraint {
#[HasNamedArguments]
public function __construct(...$args) {
if (!empty($args) && array_is_list($args)) {
@trigger_error(sprintf('Passing an array of options to configure the "%s" constraint is deprecated in drupal:11.3.0 and will not be supported in drupal:12.0.0. Use named arguments instead. See https://www.drupal.org/node/3522497', get_class($this)), E_USER_DEPRECATED);
parent::__construct(...$args);
return;
}
parent::__construct($args);
}
}
Then I set all Drupal constraints that were directly extending Symfony\Component\Validator\Constraint
to extend this base class instead.
In addition, I deprecated passing string or list $options
to the various addConstraint($name, $options)
methods. Generally people won't be calling constraint plugin constructors directly, and will be using addConstraint to pass the options, and this is the cleanest way to make sure that the $options passed line up with constraint plugin class properties.
That all said, doing all this seems pretty cumbersome. As is it's not really taking advantage of typed values you get named constructor parameters, since right now there's just a lot of trickery leveraging the ...
operator.
It might be possible to continue to allow string and list arrays to be passed to addConstraint()
, and removes a lot of the need to add keys to all the arrays, but if and when the constraint classes actually have named parameters in their constructors, that might not work anymore.
Missed that the MR should be against 11.x. Right now it's against 11.2.x.
godotislate → changed the visibility of the branch 3490787-remove-exception-when to hidden.
MR update per review comments.
With three supporter, I think this is OK to go to RTBC.
Updated both MRs per #38.
godotislate → changed the visibility of the branch 11.x to hidden.
godotislate → changed the visibility of the branch 3255804-test-only to hidden.
MR 12284 for #36 is up.
Since the test only job wasn't failing in the way expected, created test only MR 12285 that does: https://git.drupalcode.org/issue/drupal-3255804/-/jobs/5417607
CR for the class moves: https://www.drupal.org/node/3527501 →
godotislate → changed the visibility of the branch 3255804-subclass to hidden.
godotislate → changed the visibility of the branch 3255804-hidden-dependency-on to hidden.
FWIW, it looks like this Drupal CMS recipe installs layout_builder w/o block_content: https://git.drupalcode.org/project/drupal_cms/-/blob/1.x/recipes/drupal_...
One alternative would be to move these to the Core namespace. There doesn't seem to be anything particularly block_content specific in this code, either:
Drupal\block_content\Access\AccessGroupAnd
Drupal\block_content\Access\DependentAccessInterface
Drupal\block_content\Access\RefinableDependentAccessInterface
Drupal\block_content\Access\RefinableDependentAccessTrait
Should be pretty easy to do using https://www.drupal.org/node/3509577 →
Removed the entry in .deprecation-ignore.txt and finally got all tests passing.
The deprecation layer still needs doing. It might be a bit complex and probably needs some thinking through. Among other things, even though all the docblocks the options passed to addConstraint($constraint_name, $options = NULL)
typed @param array|null $options
, there are cases such as this in EntityDataDefinition::setEntityType()
where $options
is a string:
public function setEntityTypeId($entity_type_id) {
return $this->addConstraint('EntityType', $entity_type_id);
}
The ConstraintManager
even accounts for this by turning non-array $options into array in ::create()
:
public function create($name, $options) {
if (!is_array($options)) {
// Plugins need an array as configuration, so make sure we have one.
// The constraint classes support passing the options as part of the
// 'value' key also.
$options = isset($options) ? ['value' => $options] : [];
}
return $this->createInstance($name, $options);
}
Problem is that with named arguments, an exception is thrown with invalid argument names, and it can't be assumed that value
will always be a valid argument name.
Note from @longwave about this on Slack:
i see Symfony adds a HasNamedArguments attribute to constraints that have been converted.. so we could check for that at runtime although i hope reflection of that isn't too expensive
I don't think reflection on the class will have much performance penalty, since the plugin class is being instantiated right after anyway, so it's getting loaded in memory regardless.
But if it does turn out to be a performance issue, one idea I have is to add functionality to AttributeClassDiscovery::parseClass()
to be able to pick up additional attributes like this and add them to the plugin definition, since the plugin class is already being reflected in discovery. The effort in
✨
Allow attribute-based plugins to discover supplemental attributes from other modules
Active
could be amended to include this.
It would look something like:
- In
parseClass()
, call a new method, something likeparseAdditionalAttributes()
that takes the ReflectionClass object as one of its parameters - In
parseAdditionalAttributes()
, check whether the plugin class implements a (new) Interface, maybe something likeAdditionalAttributesPluginInterface
(name TBD), that has its ownpublic static function parseAdditionalAttributes()
method - Plugin classes implementing the interface and method can then use the reflection class object to look at other attributes on the class or its methods, properties, etc. specific to the plugin class
- For relevant constraint plugins, the implementation of
parseAdditionalAttributes()
would look at the constructor for the theHasNamedArguments
attribute, and if so, that gets added back to the plugin definition
Note that the above would have to account for attributes possibly being defined in other modules and the attribute discovery filecache, so there are complications.
And I'm not completely sure this would be worth the effort for this use case, but just throwing it out there as a possibility.
we'll want to document the UI changes
There might be others, but these were the ones that surfaced from failed tests. :)
Finally got all tests passing.
There are some breaking changes:
- The icon name changes as mentioned in #12
table
tags now will all have thetable
class added to them: https://github.com/ckeditor/ckeditor5/pull/17889/files- Also more documented here: https://ckeditor.com/docs/ckeditor5/latest/updating/guides/changelog.htm...
There are also changes in the UI for linking images and media.
Before (inserting media with link):
After (inserting media with link):
Looking at this now: the icons were moved to @ckeditor/ckeditor5-icons and RENAMED.
I was curious about the test failures in BigPipeRegressionTest, and I think a large contributing factor is that using load events instead of the mutation observer causes the page to load much more slowly.
Not scientific, but on my local ddev with standard profile and the big_pipe_regression_test module installed:
- On HEAD, load time for
/big_pipe_test_multiple_replacements
was roughly 1m 13 sec - On the MR branch, load time for
/big_pipe_test_multiple_replacements
was roughly 14m 06 sec
I think this is happening because event handling is synchronous and blocking, while the mutation observer works asynchronously.
Or summary updated what the difference of the 2 are if one option needs to be picked over the other
IS has been updated with the decision to make between the two MRs.
See #20-22 for the original discussion as well.
This issue can likely go after the decoupling from events I would think.
I think this plan is fine. One thing to note is that this issue, or at least this MR, also fixes a bug (or addresses a feature gap) where currently altering or decorating the autodiscovered Hook\
classes doesn't work quite right. This is because the hook implementation map has the hook class name derived from the PHP file on disk as one of its keys ($this->hookImplementationsMap[$hook][{CLASS NAME}]
). The event dispatcher resolves the callable correctly to the altered/decorator class, so calling get_class()
on that will make the look up in the map fail (and also cause a PHP warning).
On a cursory glance, I think 📌 Move hook_implementations_map generation to late in service container compilation to make altering hooks classes more DX friendly Active also tries to address this same bug, but I haven't looked at 🐛 HookCollectorPass registers event listeners but they do not follow the required calling convention Active enough to see if it's addressed there separately.
In any way, I think there is some urgency to get this bug addressed, regardless of which issue is done in.
It is not possible to use a service modifier to alter
Hook\
class services that are not registered services
OK, refactored to split the changes in HookCollectorPass
to a separate pass for hook discovery registered services that runs after ModifyServiceDefinitionsPass
. The change now allows Hook\
class services that are not registered services to be altered by a service modifier in another module. The code changes are not the prettiest, but I think they are OK.
That all being said, changes here are crashing into other in-progress work on OOP hooks in 🐛 HookCollectorPass registers event listeners but they do not follow the required calling convention Active , 📌 [pp-1] Explore adding an ImplementationList object for hook implmentations Active , and 📌 Move hook_implementations_map generation to late in service container compilation to make altering hooks classes more DX friendly Active (among others I'm not aware of?), so I think some sort of priority of what goes in first probably would make things clearer.
It was good to see this working, though, especially the part of making it possible for kernel tests to subscribe to hooks. I think that will be a big DX win once it's in.
Sounds good, should we change the "should always" in the standards to "must" if we're going to enforce this?
I don't have much opinion on this either way, but the current language is a copy of the rules for interfaces and test classes.
I added the CR → with the existing language, but I'm open to changing to must if that's preferred. If so, should the language for interface and test classes be changed as well?
Added the CR https://www.drupal.org/node/3526437 → .
The long, long bit about altered and decorated services in #33 should probably be in the CR as well, but I'm a little tired of typing for now. I can update the CR after there's agreement on that behavior makes sense.
MR 12222 is up.
Notes:
- Any module service that is not abstract or synthetic can use Hook attributes to implement hooks
- This does not apply to services that (somehow?) do not have a class defined, services in the
Drupal\Core
andDrupal\Component
namespaces and non-Drupal classes - Kernel test classes can implement hooks. Use
register()
to register the kernel test class itself as service and any Hook attributes in the class will be picked up - For services provided and/or altered by a service provider/modifier, or decorated services:
- Hook implementations that exist in the new service class will be picked up
- For altered or decorated services, if the new service class extends the original service class, and the hook implementation method is not overridden, the hook method will run once
- For altered or decorated services, if the new service class extends the original service class, and the hook implementation method is overridden with no Hook attribute, the hook method will not be invoked
- For altered or decorated services, if the new service class does not extend the original service class, none of the original service class's hook implementations will be invoked.
- It is not possible to use a service modifier to alter
Hook\
class services that are not registered services. This is because, in order to support altered or decorated services, HookCollectorPass has been moved to run after the ModifyServiceDefinitionsPass, so the the Hook class definitions do not exist whenalter()
in a service modifier runs (see more below*). IfHook\
class behavior needs to be changed, using a service decorator is recommended
For reference, here's output of a representative local run of drush si standard -y
-vvvv on HEAD
:
[info] Starting bootstrap to root [0.15 sec, 2.91 MB]
[info] Drush bootstrap phase 1 [0.15 sec, 2.91 MB]
[info] Try to validate bootstrap phase 1 [0.15 sec, 2.91 MB]
[info] Try to validate bootstrap phase 1 [0.15 sec, 2.92 MB]
[info] Try to bootstrap at phase 1 [0.15 sec, 2.92 MB]
[info] Drush bootstrap phase: bootstrapDrupalRoot() [0.15 sec, 2.92 MB]
[info] Change working directory to /var/www/html [0.15 sec, 2.91 MB]
[info] Initialized Drupal 11.3-dev root directory at /var/www/html [0.15 sec, 2.92 MB]
[info] Drush bootstrap phase: bootstrapDrupalSite() [0.16 sec, 3.19 MB]
[debug] Could not find a Drush config file at sites/default/drush.yml. [0.16 sec, 3.19 MB]
[info] Initialized Drupal site drupal.ddev.site at sites/default [0.16 sec, 3.19 MB]
[info] Drush bootstrap phase: bootstrapDrupalConfiguration() [0.16 sec, 3.19 MB]
[info] Executing: command -v sqlite3 [0.16 sec, 3.41 MB]
You are about to:
* DROP all tables in your 'sites/default/files/.sqlite' database.
// Do you want to continue?: yes.
[info] Sites directory sites/default already exists - proceeding. [0.16 sec, 3.48 MB]
[info] sql:query: .tables [0.16 sec, 3.48 MB]
[info] Executing: sqlite3 sites/default/files/.sqlite < /tmp/drush_uaOpuf [0.16 sec, 3.49 MB]
[info] sql:query: DROP TABLE block_content; DROP TABLE block_content__body; DROP TABLE block_content__field_body; DROP TABLE block_content__field_content_link; DROP TABLE block_content__field_copyright; DROP TABLE block_content__field_disclaimer; DROP TABLE block_content__field_media_image; DROP TABLE block_content__field_summary; DROP TABLE block_content__field_title; DROP TABLE block_content_field_data; DROP TABLE block_content_field_revision; DROP TABLE block_content_revision; DROP TABLE block_content_revision__body; DROP TABLE block_content_revision__field_body; DROP TABLE block_content_revision__field_content_link; DROP TABLE block_content_revision__field_copyright; DROP TABLE block_content_revision__field_disclaimer; DROP TABLE block_content_revision__field_media_image; DROP TABLE block_content_revision__field_summary; DROP TABLE block_content_revision__field_title; DROP TABLE cache_container; DROP TABLE config; DROP TABLE content_moderation_state; DROP TABLE content_moderation_state_field_data; DROP TABLE content_moderation_state_field_revision; DROP TABLE content_moderation_state_revision; DROP TABLE file_managed; DROP TABLE file_usage; DROP TABLE help_search_items; DROP TABLE history; DROP TABLE inline_block_usage; DROP TABLE key_value; DROP TABLE locale_file; DROP TABLE locales_location; DROP TABLE locales_source; DROP TABLE locales_target; DROP TABLE media; DROP TABLE media__field_media_audio_file; DROP TABLE media__field_media_document; DROP TABLE media__field_media_image; DROP TABLE media__field_media_oembed_video; DROP TABLE media__field_media_video_file; DROP TABLE media_field_data; DROP TABLE media_field_revision; DROP TABLE media_revision; DROP TABLE media_revision__field_media_audio_file; DROP TABLE media_revision__field_media_document; DROP TABLE media_revision__field_media_image; DROP TABLE media_revision__field_media_oembed_video; DROP TABLE media_revision__field_media_video_file; DROP TABLE menu_link_content; DROP TABLE menu_link_content_data; DROP TABLE menu_link_content_field_revision; DROP TABLE menu_link_content_revision; DROP TABLE menu_tree; DROP TABLE node; DROP TABLE node__body; DROP TABLE node__field_body; DROP TABLE node__field_cooking_time; DROP TABLE node__field_difficulty; DROP TABLE node__field_ingredients; DROP TABLE node__field_media_image; DROP TABLE node__field_number_of_servings; DROP TABLE node__field_preparation_time; DROP TABLE node__field_recipe_category; DROP TABLE node__field_recipe_instruction; DROP TABLE node__field_summary; DROP TABLE node__field_tags; DROP TABLE node__layout_builder__layout; DROP TABLE node_access; DROP TABLE node_field_data; DROP TABLE node_field_revision; DROP TABLE node_revision; DROP TABLE node_revision__body; DROP TABLE node_revision__field_body; DROP TABLE node_revision__field_cooking_time; DROP TABLE node_revision__field_difficulty; DROP TABLE node_revision__field_ingredients; DROP TABLE node_revision__field_media_image; DROP TABLE node_revision__field_number_of_servings; DROP TABLE node_revision__field_preparation_time; DROP TABLE node_revision__field_recipe_category; DROP TABLE node_revision__field_recipe_instruction; DROP TABLE node_revision__field_summary; DROP TABLE node_revision__field_tags; DROP TABLE node_revision__layout_builder__layout; DROP TABLE path_alias; DROP TABLE path_alias_revision; DROP TABLE router; DROP TABLE search_dataset; DROP TABLE search_index; DROP TABLE search_total; DROP TABLE sequences; DROP TABLE shortcut; DROP TABLE shortcut_field_data; DROP TABLE shortcut_set_users; DROP TABLE taxonomy_index; DROP TABLE taxonomy_term__parent; DROP TABLE taxonomy_term_data; DROP TABLE taxonomy_term_field_data; DROP TABLE taxonomy_term_field_revision; DROP TABLE taxonomy_term_revision; DROP TABLE taxonomy_term_revision__parent; DROP TABLE user__roles; DROP TABLE user__user_picture; DROP TABLE users; DROP TABLE users_data; DROP TABLE users_field_data; DROP TABLE watchdog; [0.17 sec, 3.51 MB]
[info] Executing: sqlite3 sites/default/files/.sqlite < /tmp/drush_SYPKPZ [0.17 sec, 3.51 MB]
[notice] Starting Drupal installation. This takes a while. [0.24 sec, 3.49 MB]
[debug] Calling install_drupal(Composer\Autoload\ClassLoader, array, array) [0.24 sec, 3.49 MB]
[notice] Performed install task: install_select_language [0.4 sec, 12.08 MB]
[notice] Performed install task: install_select_profile [0.4 sec, 12.08 MB]
[notice] Performed install task: install_load_profile [0.4 sec, 12.08 MB]
[notice] Performed install task: install_verify_requirements [0.4 sec, 12.43 MB]
[notice] Performed install task: install_verify_database_ready [0.4 sec, 12.43 MB]
[info] sqlite module installed. [0.5 sec, 17.62 MB]
[info] system module installed. [0.61 sec, 20.98 MB]
[notice] Performed install task: install_base_system [0.61 sec, 21.01 MB]
[notice] Performed install task: install_bootstrap_full [0.61 sec, 21.01 MB]
[info] user module installed. [0.98 sec, 27.73 MB]
[info] path_alias module installed. [0.98 sec, 27.73 MB]
[info] big_pipe module installed. [0.98 sec, 27.73 MB]
[info] config module installed. [0.98 sec, 27.73 MB]
[info] help module installed. [0.98 sec, 27.53 MB]
[info] page_cache module installed. [0.98 sec, 27.53 MB]
[info] dynamic_page_cache module installed. [0.98 sec, 27.53 MB]
[info] automated_cron module installed. [0.98 sec, 27.53 MB]
[info] announcements_feed module installed. [0.98 sec, 27.53 MB]
[info] block module installed. [0.98 sec, 27.53 MB]
[info] filter module installed. [0.99 sec, 27.85 MB]
[info] views module installed. [0.99 sec, 27.87 MB]
[info] field module installed. [0.99 sec, 27.68 MB]
[info] text module installed. [0.99 sec, 27.68 MB]
[info] block_content module installed. [1 sec, 27.79 MB]
[info] breakpoint module installed. [1 sec, 27.79 MB]
[info] file module installed. [1 sec, 27.59 MB]
[info] editor module installed. [1 sec, 27.59 MB]
[info] ckeditor5 module installed. [1 sec, 27.59 MB]
[info] image module installed. [1.01 sec, 27.82 MB]
[info] media module installed. [1.31 sec, 34.62 MB]
[info] language module installed. [1.32 sec, 34.67 MB]
[info] locale module installed. [1.32 sec, 34.71 MB]
[info] config_translation module installed. [1.32 sec, 34.71 MB]
[info] contact module installed. [1.32 sec, 34.45 MB]
[info] workflows module installed. [1.32 sec, 34.19 MB]
[info] content_moderation module installed. [1.32 sec, 34.19 MB]
[info] node module installed. [1.35 sec, 34.99 MB]
[info] content_translation module installed. [1.36 sec, 35.01 MB]
[info] contextual module installed. [1.36 sec, 34.75 MB]
[info] datetime module installed. [1.36 sec, 34.75 MB]
[info] taxonomy module installed. [1.37 sec, 34.92 MB]
[info] dblog module installed. [1.37 sec, 34.65 MB]
[info] layout_discovery module installed. [1.37 sec, 34.65 MB]
[info] field_ui module installed. [1.37 sec, 34.65 MB]
[info] history module installed. [1.37 sec, 34.65 MB]
[info] layout_builder module installed. [1.37 sec, 34.65 MB]
[info] link module installed. [1.37 sec, 34.65 MB]
[info] media_library module installed. [1.52 sec, 42.65 MB]
[info] menu_link_content module installed. [1.52 sec, 42.65 MB]
[info] menu_ui module installed. [1.69 sec, 50.33 MB]
[info] path module installed. [1.69 sec, 50.33 MB]
[info] options module installed. [1.69 sec, 50.33 MB]
[info] responsive_image module installed. [1.69 sec, 50.33 MB]
[info] search module installed. [1.69 sec, 50.33 MB]
[info] toolbar module installed. [1.69 sec, 50.33 MB]
[info] shortcut module installed. [1.69 sec, 50.29 MB]
[info] views_ui module installed. [1.69 sec, 50.29 MB]
[notice] Performed install task: install_profile_modules [1.71 sec, 45.49 MB]
[info] claro theme installed. [1.72 sec, 44.5 MB]
[info] umami theme installed. [1.72 sec, 44.54 MB]
[notice] Performed install task: install_profile_themes [1.74 sec, 45 MB]
[warning] The "field_block:node:page:field_body" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "extra_field_block:node:page:links" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "extra_field_block:node:page:content_moderation_control" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "field_block:node:page:field_body" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "extra_field_block:node:page:links" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "extra_field_block:node:page:content_moderation_control" block plugin was not found [3.11 sec, 78.42 MB]
[warning] The "field_block:node:article:field_tags" block plugin was not found [3.13 sec, 77.49 MB]
[warning] The "field_block:node:article:field_media_image" block plugin was not found [3.13 sec, 77.49 MB]
[warning] The "field_block:node:article:field_body" block plugin was not found [3.13 sec, 77.49 MB]
[warning] The "extra_field_block:node:article:links" block plugin was not found [3.13 sec, 77.49 MB]
[warning] The "extra_field_block:node:article:content_moderation_control" block plugin was not found [3.13 sec, 77.49 MB]
[warning] The "field_block:node:article:field_tags" block plugin was not found [3.14 sec, 77.49 MB]
[warning] The "field_block:node:article:field_media_image" block plugin was not found [3.14 sec, 77.49 MB]
[warning] The "field_block:node:article:field_body" block plugin was not found [3.14 sec, 77.49 MB]
[warning] The "extra_field_block:node:article:links" block plugin was not found [3.14 sec, 77.49 MB]
[warning] The "extra_field_block:node:article:content_moderation_control" block plugin was not found [3.14 sec, 77.49 MB]
[warning] The "field_block:node:recipe:field_tags" block plugin was not found [3.31 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_recipe_category" block plugin was not found [3.31 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_summary" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_difficulty" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_number_of_servings" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_cooking_time" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_preparation_time" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_ingredients" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_recipe_instruction" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "extra_field_block:node:recipe:content_moderation_control" block plugin was not found [3.32 sec, 82.28 MB]
[warning] The "field_block:node:recipe:field_tags" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_recipe_category" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_summary" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_difficulty" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_number_of_servings" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_cooking_time" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_preparation_time" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_ingredients" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "field_block:node:recipe:field_recipe_instruction" block plugin was not found [3.32 sec, 82.29 MB]
[warning] The "extra_field_block:node:recipe:content_moderation_control" block plugin was not found [3.32 sec, 82.29 MB]
[info] demo_umami_content module installed. [4.72 sec, 104.79 MB]
[info] demo_umami module installed. [4.77 sec, 99.85 MB]
[notice] Performed install task: install_install_profile [4.77 sec, 98.92 MB]
[error] Import of string "<span class="visually-hidden">Mostrar </span>@title<span class="visually-hidden"> medios </span> <span class="active-tab visually-hidden"> (seleccionados) </ lapso>" was skipped because of disallowed or malformed HTML. [7.16 sec, 99.48 MB]
[notice] Translations imported: 8854 added, 0 updated, 0 removed. [7.69 sec, 99.55 MB]
[warning] 1 disallowed HTML string(s) in files: translations://drupal-11.3-dev.es.po. [7.69 sec, 99.55 MB]
[notice] Performed install task: install_import_translations [7.69 sec, 99.01 MB]
[info] update module installed. [7.89 sec, 110.12 MB]
[notice] Performed install task: install_configure_form [8.46 sec, 111.8 MB]
[notice] The configuration was successfully updated. 203 configuration objects updated. [9.01 sec, 97.03 MB]
[notice] Performed install task: install_finish_translations [9.01 sec, 96.99 MB]
[notice] Performed install task: install_finished [9.09 sec, 97.83 MB]
[success] Installation complete. User name: admin User password: J79hpJRQ87 [9.09 sec, 97.82 MB]
And here's the same output run against the MR branch:
[info] Starting bootstrap to root [0.78 sec, 2.91 MB]
[info] Drush bootstrap phase 1 [0.78 sec, 2.91 MB]
[info] Try to validate bootstrap phase 1 [0.78 sec, 2.91 MB]
[info] Try to validate bootstrap phase 1 [0.78 sec, 2.92 MB]
[info] Try to bootstrap at phase 1 [0.78 sec, 2.92 MB]
[info] Drush bootstrap phase: bootstrapDrupalRoot() [0.78 sec, 2.92 MB]
[info] Change working directory to /var/www/html [0.78 sec, 2.91 MB]
[info] Initialized Drupal 11.3-dev root directory at /var/www/html [0.78 sec, 2.92 MB]
[info] Drush bootstrap phase: bootstrapDrupalSite() [0.78 sec, 3.19 MB]
[debug] Could not find a Drush config file at sites/default/drush.yml. [0.78 sec, 3.19 MB]
[info] Initialized Drupal site drupal.ddev.site at sites/default [0.78 sec, 3.19 MB]
[info] Drush bootstrap phase: bootstrapDrupalConfiguration() [0.78 sec, 3.19 MB]
[info] Executing: command -v sqlite3 [0.79 sec, 3.41 MB]
You are about to:
* DROP all tables in your 'sites/default/files/.sqlite' database.
// Do you want to continue?: yes.
[info] Sites directory sites/default already exists - proceeding. [0.79 sec, 3.48 MB]
[info] sql:query: .tables [0.79 sec, 3.48 MB]
[info] Executing: sqlite3 sites/default/files/.sqlite < /tmp/drush_OHkNT4 [0.79 sec, 3.49 MB]
[info] sql:query: DROP TABLE block_content; DROP TABLE node_revision; DROP TABLE block_content__body; DROP TABLE node_revision__body; DROP TABLE block_content_field_data; DROP TABLE node_revision__comment; DROP TABLE block_content_field_revision; DROP TABLE node_revision__field_image; DROP TABLE block_content_revision; DROP TABLE node_revision__field_tags; DROP TABLE block_content_revision__body; DROP TABLE path_alias; DROP TABLE comment; DROP TABLE path_alias_revision; DROP TABLE comment__comment_body; DROP TABLE router; DROP TABLE comment_entity_statistics; DROP TABLE search_dataset; DROP TABLE comment_field_data; DROP TABLE search_index; DROP TABLE config; DROP TABLE search_total; DROP TABLE file_managed; DROP TABLE sequences; DROP TABLE file_usage; DROP TABLE shortcut; DROP TABLE help_search_items; DROP TABLE shortcut_field_data; DROP TABLE history; DROP TABLE shortcut_set_users; DROP TABLE key_value; DROP TABLE taxonomy_index; DROP TABLE menu_link_content; DROP TABLE taxonomy_term__parent; DROP TABLE menu_link_content_data; DROP TABLE taxonomy_term_data; DROP TABLE menu_link_content_field_revision; DROP TABLE taxonomy_term_field_data; DROP TABLE menu_link_content_revision; DROP TABLE taxonomy_term_field_revision; DROP TABLE menu_tree; DROP TABLE taxonomy_term_revision; DROP TABLE node; DROP TABLE taxonomy_term_revision__parent; DROP TABLE node__body; DROP TABLE user__roles; DROP TABLE node__comment; DROP TABLE user__user_picture; DROP TABLE node__field_image; DROP TABLE users; DROP TABLE node__field_tags; DROP TABLE users_data; DROP TABLE node_access; DROP TABLE users_field_data; DROP TABLE node_field_data; DROP TABLE watchdog; DROP TABLE node_field_revision; [0.79 sec, 3.5 MB]
[info] Executing: sqlite3 sites/default/files/.sqlite < /tmp/drush_8ep5L0 [0.79 sec, 3.5 MB]
[notice] Starting Drupal installation. This takes a while. [0.85 sec, 3.49 MB]
[debug] Calling install_drupal(Composer\Autoload\ClassLoader, array, array) [0.85 sec, 3.49 MB]
[notice] Performed install task: install_select_language [1.03 sec, 12.1 MB]
[notice] Performed install task: install_select_profile [1.03 sec, 12.1 MB]
[notice] Performed install task: install_load_profile [1.03 sec, 12.1 MB]
[notice] Performed install task: install_verify_requirements [1.04 sec, 12.45 MB]
[notice] Performed install task: install_verify_database_ready [1.04 sec, 12.45 MB]
[info] sqlite module installed. [1.14 sec, 17.64 MB]
[info] system module installed. [1.2 sec, 21 MB]
[notice] Performed install task: install_base_system [1.21 sec, 21.03 MB]
[notice] Performed install task: install_bootstrap_full [1.21 sec, 21.03 MB]
[info] user module installed. [1.58 sec, 27.84 MB]
[info] path_alias module installed. [1.58 sec, 27.83 MB]
[info] big_pipe module installed. [1.58 sec, 27.83 MB]
[info] config module installed. [1.58 sec, 27.83 MB]
[info] help module installed. [1.58 sec, 27.63 MB]
[info] page_cache module installed. [1.58 sec, 27.63 MB]
[info] dynamic_page_cache module installed. [1.58 sec, 27.63 MB]
[info] automated_cron module installed. [1.58 sec, 27.63 MB]
[info] announcements_feed module installed. [1.58 sec, 27.63 MB]
[info] block module installed. [1.58 sec, 27.63 MB]
[info] filter module installed. [1.59 sec, 28.02 MB]
[info] views module installed. [1.59 sec, 28.04 MB]
[info] field module installed. [1.59 sec, 27.85 MB]
[info] text module installed. [1.59 sec, 27.85 MB]
[info] block_content module installed. [1.6 sec, 27.9 MB]
[info] breakpoint module installed. [1.6 sec, 27.9 MB]
[info] file module installed. [1.6 sec, 27.7 MB]
[info] editor module installed. [1.6 sec, 27.7 MB]
[info] ckeditor5 module installed. [1.6 sec, 27.7 MB]
[info] image module installed. [1.61 sec, 27.92 MB]
[info] media module installed. [1.94 sec, 34.8 MB]
[info] language module installed. [1.95 sec, 34.85 MB]
[info] locale module installed. [1.95 sec, 34.9 MB]
[info] config_translation module installed. [1.95 sec, 34.89 MB]
[info] contact module installed. [1.96 sec, 34.63 MB]
[info] workflows module installed. [1.96 sec, 34.37 MB]
[info] content_moderation module installed. [1.96 sec, 34.37 MB]
[info] node module installed. [1.99 sec, 35.17 MB]
[info] content_translation module installed. [1.99 sec, 35.2 MB]
[info] contextual module installed. [2 sec, 34.94 MB]
[info] datetime module installed. [2 sec, 34.94 MB]
[info] taxonomy module installed. [2 sec, 35.1 MB]
[info] dblog module installed. [2 sec, 34.84 MB]
[info] layout_discovery module installed. [2 sec, 34.84 MB]
[info] field_ui module installed. [2 sec, 34.84 MB]
[info] history module installed. [2 sec, 34.84 MB]
[info] layout_builder module installed. [2 sec, 34.84 MB]
[info] link module installed. [2 sec, 34.84 MB]
[info] media_library module installed. [2.1 sec, 42.83 MB]
[info] menu_link_content module installed. [2.1 sec, 42.83 MB]
[info] menu_ui module installed. [2.29 sec, 50.61 MB]
[info] path module installed. [2.29 sec, 50.61 MB]
[info] options module installed. [2.29 sec, 50.61 MB]
[info] responsive_image module installed. [2.29 sec, 50.61 MB]
[info] search module installed. [2.29 sec, 50.61 MB]
[info] toolbar module installed. [2.29 sec, 50.61 MB]
[info] shortcut module installed. [2.3 sec, 50.56 MB]
[info] views_ui module installed. [2.3 sec, 50.56 MB]
[notice] Performed install task: install_profile_modules [2.31 sec, 45.76 MB]
[info] claro theme installed. [2.33 sec, 44.77 MB]
[info] umami theme installed. [2.33 sec, 44.82 MB]
[notice] Performed install task: install_profile_themes [2.34 sec, 45.27 MB]
[warning] The "field_block:node:page:field_body" block plugin was not found [3.82 sec, 78.62 MB]
[warning] The "extra_field_block:node:page:links" block plugin was not found [3.82 sec, 78.62 MB]
[warning] The "extra_field_block:node:page:content_moderation_control" block plugin was not found [3.82 sec, 78.62 MB]
[warning] The "field_block:node:page:field_body" block plugin was not found [3.82 sec, 78.61 MB]
[warning] The "extra_field_block:node:page:links" block plugin was not found [3.82 sec, 78.61 MB]
[warning] The "extra_field_block:node:page:content_moderation_control" block plugin was not found [3.82 sec, 78.61 MB]
[warning] The "field_block:node:article:field_tags" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:article:field_media_image" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:article:field_body" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "extra_field_block:node:article:links" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "extra_field_block:node:article:content_moderation_control" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:article:field_tags" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:article:field_media_image" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:article:field_body" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "extra_field_block:node:article:links" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "extra_field_block:node:article:content_moderation_control" block plugin was not found [3.85 sec, 77.69 MB]
[warning] The "field_block:node:recipe:field_tags" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_recipe_category" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_summary" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_difficulty" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_number_of_servings" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_cooking_time" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_preparation_time" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_ingredients" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_recipe_instruction" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "extra_field_block:node:recipe:content_moderation_control" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_tags" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_recipe_category" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_summary" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_difficulty" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_number_of_servings" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_cooking_time" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_preparation_time" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_media_image" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_ingredients" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "field_block:node:recipe:field_recipe_instruction" block plugin was not found [4.11 sec, 82.48 MB]
[warning] The "extra_field_block:node:recipe:content_moderation_control" block plugin was not found [4.11 sec, 82.48 MB]
[info] demo_umami_content module installed. [5.53 sec, 104.99 MB]
[info] demo_umami module installed. [5.6 sec, 100.06 MB]
[notice] Performed install task: install_install_profile [5.61 sec, 99.12 MB]
[error] Import of string "<span class="visually-hidden">Mostrar </span>@title<span class="visually-hidden"> medios </span> <span class="active-tab visually-hidden"> (seleccionados) </ lapso>" was skipped because of disallowed or malformed HTML. [8.5 sec, 99.81 MB]
[notice] Translations imported: 8854 added, 0 updated, 0 removed. [8.93 sec, 99.88 MB]
[warning] 1 disallowed HTML string(s) in files: translations://drupal-11.3-dev.es.po. [8.93 sec, 99.88 MB]
[notice] Performed install task: install_import_translations [8.93 sec, 99.34 MB]
[info] update module installed. [9.11 sec, 110.46 MB]
[notice] Performed install task: install_configure_form [9.67 sec, 112.14 MB]
[notice] The configuration was successfully updated. 203 configuration objects updated. [10.29 sec, 97.37 MB]
[notice] Performed install task: install_finish_translations [10.29 sec, 97.33 MB]
[notice] Performed install task: install_finished [10.37 sec, 98.17 MB]
[success] Installation complete. User name: admin User password: 3WU4QBARFJ [10.37 sec, 98.16 MB]
Anecdotally, run time and max memory usage do not seem to be affected too much, even with all module service classes being reflected.
Looks like the regression might have come from 🐛 Navigation Expand/Collapse logic is not working properly in conjunction with Big Pipe Active .
Since initDisplace()
is moved outside a behavior, with Big Pipe enabled, it's possible that initDisplace() is called before the .admin-toolbar
element is in the DOM and hence data-offset-${edge}
does not get added.
Moving the call to initDisplace()
inside a behavior means that at some point the context passed to the behavior will contain .admin-toolbar
, so the offset attribute gets added to the element.
Nightwatch test confirms that the data-offset-left
attribute gets added correctly, and I think it's safe to assume in the test that the direction is 'left'.
lgtm.
One test failure:
Drupal\Tests\system\Functional\Form\ArbitraryRebuildTest::testUserRegistrationRebuild
Behat\Mink\Exception\ElementNotFoundException: Button with id|name|label|value "Rebuild" not found.
Don't think I've seen this one as an intermittent failure.
dww → credited godotislate → .
The build job https://git.drupalcode.org/issue/drupal-3526180/-/jobs/5344144 failed, which is probably an intermittent failure and just needs a re-run.
Other than that, looks like there's an existing Nightwatch test for displace behavior in core/tests/Drupal/Nightwatch/Tests/jsDisplace.js and there are navigation Nightwatch tests in core/modules/navigation/tests/src/Nightwatch/Tests/. I think there probably should be a Nightwatch test for displace + navigation? Not completely familiar with how those tests work.
I see only one unresolved MR comment from @larowlan about the file naming, but that comment was answered and seems to make sense to me. RTBC.
OK put up MR 12216 which is just the commits from 12063 but with the prettier "2021" nesting rules added. The :is()
selectors have gone away and the diff is significantly smaller now. Documentation says that the 2021 nesting rules will be removed eventually, so at some point (now?) a decision has to be made on what to do about the nesting rules behavior with :is()
, but anyway MR 12216 is an option to kick the can down the road on that decision.
I think 🐛 Library: other group placed first Active is effectively a pre-duplicate now, so that probably can be closed with credit migrated here.
There are failing tests in the latest build that are not familiar to me as intermittent failures, but they probably need a re-run attempt at least.
Ah, the weird :is()
selectors have returned.
This was touched on in 📌 Update postcss* to latest releases Active , and the gist is that that while that selector might make some complex expressions more efficient, it makes simple ones with id selectors less so.
See comments #39 and #40 in the previous issue for more details.
I couldn't reproduce a failure on HEAD after repeating ~50 times (this could be bc of the upstream fix added), but the changes in the MR make sense and the 50x run passed, so lgtm.
Could this be a breaking change if backported?
I'm not seeing it, as long as the CR is updated to point at the right version.
MRs for 10.4.x, 10.5.x, and 11.1.x up.
If so, which cache tags make sure that this cache is invalidated when revisions other than the published revision are added, modified or deleted?
One thing I noticed from MR 12158 for 🐛 NodeRevisionsAllTest::testRevisions() fails in 11.1.x Active is this:
// Delete older revisions.
foreach ($older_revision_ids as $older_revision_id) {
$node_storage->deleteRevision($older_revision_id);
}
// At first, the old list is still in the cache.
// @todo This is bad, the list should be updated.
$this->drupalGet('node/' . $node->id() . '/revisions');
$this->assertSession()->responseContains('page=1');
$this->assertSession()->pageTextContains(end($logs));
Drupal\Core\Entity\ContentEntityStorageBase::deleteRevision()
does not invalidate cache tags, afaict. Looks like all the cache tag invalidation for entity CRUD operations occurs in the entity class and not the storage class, and delete()
is never called on the loaded revision in deleteRevision()
. I'm not sure whether this is a bug or as intended.
smustgrave → credited godotislate → .
Removing an unnecessary conditional gate revealed a couple bugs it was hiding. Push commits to fix. This is ready to be looked at again.
Applied the suggestion and answered the Qs on the MR.
The follow up should be 📌 Add plugin class module dependencies to dependency calculation Active . It's a child issue, but I'll add it as a related issue as well.