Skip to content
Snippets Groups Projects
Commit be75c67f authored by Adam G-H's avatar Adam G-H Committed by Adam G-H
Browse files

Refactor pm_bypass

parent 1f20aadd
No related branches found
No related tags found
1 merge request!103Issue #3245996: Move basic exclusions and test coverage into Package Manager
This commit is part of merge request !103. Comments created here will be created in the context of that merge request.
services:
package_manager_bypass.committer:
public: false
class: Drupal\package_manager_bypass\Committer
decorates: package_manager.committer
arguments:
- '@package_manager_bypass.committer.inner'
properties:
- { _serviceId: package_manager.committer }
...@@ -5,6 +5,7 @@ namespace Drupal\package_manager_bypass; ...@@ -5,6 +5,7 @@ namespace Drupal\package_manager_bypass;
use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase; use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Drupal\Core\Site\Settings; use Drupal\Core\Site\Settings;
use Symfony\Component\DependencyInjection\Reference;
/** /**
* Defines services to bypass Package Manager's core functionality. * Defines services to bypass Package Manager's core functionality.
...@@ -17,10 +18,24 @@ class PackageManagerBypassServiceProvider extends ServiceProviderBase { ...@@ -17,10 +18,24 @@ class PackageManagerBypassServiceProvider extends ServiceProviderBase {
public function alter(ContainerBuilder $container) { public function alter(ContainerBuilder $container) {
parent::alter($container); parent::alter($container);
$container->getDefinition('package_manager.beginner') // By default, bypass the Composer Stager library. This can be disabled for
->setClass(Beginner::class); // tests that want to use the real library, but only need to disable
$container->getDefinition('package_manager.stager') // validators.
->setClass(Stager::class); if (Settings::get('package_manager_bypass_stager', TRUE)) {
$container->getDefinition('package_manager.beginner')
->setClass(Beginner::class);
$container->getDefinition('package_manager.stager')
->setClass(Stager::class);
$container->register('package_manager_bypass.committer')
->setClass(Committer::class)
->setPublic(FALSE)
->setDecoratedService('package_manager.committer')
->setArguments([
new Reference('package_manager_bypass.committer.inner'),
])
->setProperty('_serviceId', 'package_manager.committer');
}
// Allow functional tests to disable specific validators as necessary. // Allow functional tests to disable specific validators as necessary.
// Kernel tests can override the ::register() method and modify the // Kernel tests can override the ::register() method and modify the
......
...@@ -41,6 +41,10 @@ class ExcludedPathsTest extends BrowserTestBase { ...@@ -41,6 +41,10 @@ class ExcludedPathsTest extends BrowserTestBase {
// @see \Drupal\Tests\package_manager\Kernel\WritableFileSystemValidatorTest // @see \Drupal\Tests\package_manager\Kernel\WritableFileSystemValidatorTest
$this->writeSettings([ $this->writeSettings([
'settings' => [ 'settings' => [
'package_manager_bypass_stager' => (object) [
'value' => FALSE,
'required' => TRUE,
],
'package_manager_bypass_validators' => (object) [ 'package_manager_bypass_validators' => (object) [
'value' => ['package_manager.validator.file_system'], 'value' => ['package_manager.validator.file_system'],
'required' => TRUE, 'required' => TRUE,
...@@ -77,7 +81,7 @@ class ExcludedPathsTest extends BrowserTestBase { ...@@ -77,7 +81,7 @@ class ExcludedPathsTest extends BrowserTestBase {
$stage = new Stage( $stage = new Stage(
$path_locator->reveal(), $path_locator->reveal(),
$this->container->get('package_manager.beginner'), $this->container->get('package_manager.beginner'),
$this->container->get('package_manager.stager'), $stager,
$this->container->get('package_manager.committer'), $this->container->get('package_manager.committer'),
$this->container->get('package_manager.cleaner'), $this->container->get('package_manager.cleaner'),
$this->container->get('event_dispatcher') $this->container->get('event_dispatcher')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment