Problem/Motivation

Track the work to make External Entities Drupal 12 ready. The Project Update Bot pass (#3598057: Automated Drupal 12 compatibility fixes for external_entities 3.0.x-dev) landed the rector auto-fixes; the rest is manual, split into children so each MR stays reviewable. On real Drupal 12.0-dev the module already installs and the full Unit + Kernel suite is green - what's left is deprecation cleanup.

Proposed resolution

Land the child issues, then flag the module Drupal 12 compatible

  1. #3617254: Enable next-major (Drupal 12) testing in GitLab CI - Turn on the next-major (D12) job in GitLab CI (OPT_IN_TEST_NEXT_MAJOR + lenient allow-list for dbxschema) so we actually get D12 results on MRs. Landed first.
  2. #3617196: Order local_tasks_alter after field_ui and drop hook_module_implements_alter - Hooks: move the field_ui local-tasks ordering onto the hook with OrderAfter(['field_ui']) and drop the dead hook_module_implements_alter (its #[LegacyModuleImplementsAlter] is gone in D12). Floor goes to ^11.2.
  3. #3617202: Use PHP attributes instead of annotations for plugin definitions - Plugin and config-entity annotations => PHP attributes: the five plugin types, external_entity_type, and the submodule Views / ExternalFile plugins.
  4. #3617205: Add native return types and fix remaining PHP 8.5 deprecations - Native return types across base classes, plugins and managers, plus array_key_exists(null), #[LegacyRequirementsHook], and the cross-version xnttsql test tweak.
  5. #3617305: External entity fields don't render on Drupal 12 - Fix the D12 regression where external entity fields don't render on the canonical page (5 functional tests, green on D11).
  6. #3617932: Fix PHPUnit 12 "no expectations configured" mock notices and incomplete tests - PHPUnit 12 test cleanup: createMock() => createStub() where there are no expectations (and #[AllowMockObjectsWithoutExpectations] where a real mock is needed), plus finish the 3 incomplete tests, so next-major goes fully green.

Remaining tasks

- Land the children.
- Then set core_version_requirement: ^11.2 || ^12 in every .info.yml (main module + submodules) and mark the module Drupal 12 compatible.

User interface changes

API changes

Data model changes

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

velmir_taky created an issue. See original summary.

velmir_taky’s picture

Issue summary: View changes
velmir_taky’s picture

Issue summary: View changes
velmir_taky’s picture

Version: 3.0.x-dev » 3.1.x-dev
velmir_taky’s picture

Issue summary: View changes
guignonv’s picture

We may need to indicate what changed in class method prototypes (mostly return types) in DEVELOPMENT.md to simplify external plugin upgrades.

velmir_taky’s picture

Status: Active » Needs review

Last piece of the plan: set core_version_requirement to ^11.2 || ^12 in all the info.yml files (main, submodules and the test module) and added a short DEVELOPMENT.md section about the return types the base classes got, so anyone with custom plugins knows what to update.

That's #6, thanks @guignonv.

All six children are in, so this closes it.

eslint/phpcs/phpstan are failing, but that's pre-existing on 3.1.x - this only touches info.yml and DEVELOPMENT.md, no php/js. I'll clean those up in separate issues.

velmir_taky’s picture

Status: Needs review » Fixed

Merged!

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.