diff -u b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.install b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.install --- b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.install +++ b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.install @@ -14,2 +14,7 @@ \Drupal::getContainer()->get('module_installer')->install(['new_dependency_test_with_service']); + + \Drupal::state()->set( + 'new_dependency_test_update_8001.decorated_service', + \Drupal::service('new_dependency_test.another_service')->greet() + ); } diff -u b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.services.yml b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.services.yml --- b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.services.yml +++ b/core/modules/system/tests/modules/new_dependency_test/new_dependency_test.services.yml @@ -12,0 +13,6 @@ + new_dependency_test.another_service: + class: Drupal\new_dependency_test\Service + new_dependency_test.another_service.decorated: + class: Drupal\new_dependency_test\Service + decorates: new_dependency_test.another_service + arguments: ['@new_dependency_test.another_service.decorated.inner'] diff -u b/core/modules/system/tests/src/Functional/Update/UpdatePathNewDependencyTest.php b/core/modules/system/tests/src/Functional/Update/UpdatePathNewDependencyTest.php --- b/core/modules/system/tests/src/Functional/Update/UpdatePathNewDependencyTest.php +++ b/core/modules/system/tests/src/Functional/Update/UpdatePathNewDependencyTest.php @@ -60,6 +60,8 @@ $this->assertEquals('Hello World', $this->container->get('new_dependency_test.decorated')->greet()); $this->assertEquals('Hello World', $this->container->get('new_dependency_test.decorated_optional')->greet()); + // Tests that an existing decorated service works as expected during update. + $this->assertEquals('I am a decorator', \Drupal::state()->get('new_dependency_test_update_8001.decorated_service')); } } only in patch2: unchanged: --- /dev/null +++ b/core/modules/system/tests/modules/new_dependency_test/src/Service.php @@ -0,0 +1,18 @@ +inner = $inner; + } + + public function greet() { + if ($this->inner) { + return 'I am a decorator'; + } + return 'I am not a decorator'; + } + +}