From 065f06b19d42fc737469efad1a5abdac36db4557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= <adam@phenaproxima.net> Date: Mon, 1 Nov 2021 18:16:06 -0400 Subject: [PATCH] Add tests --- .../ExcludedPathsSubscriber.php | 20 +---- .../fixtures/fake_site/private/ignore.txt | 1 + .../fake_site/sites/default/services.yml | 1 + .../sites/default/settings.local.php | 6 ++ .../fake_site/sites/default/settings.php | 6 ++ .../sites/example.com/files/ignore.txt | 1 + .../fake_site/sites/example.com/services.yml | 1 + .../sites/example.com/settings.local.php | 6 ++ .../fake_site/sites/example.com/settings.php | 6 ++ .../fake_site/sites/simpletest/ignore.txt | 1 + .../fixtures/fake_site/vendor/web.config | 1 + .../src/Functional/ExcludedPathsTest.php | 84 +++++++++++++++++++ 12 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 package_manager/tests/fixtures/fake_site/private/ignore.txt create mode 100644 package_manager/tests/fixtures/fake_site/sites/default/services.yml create mode 100644 package_manager/tests/fixtures/fake_site/sites/default/settings.local.php create mode 100644 package_manager/tests/fixtures/fake_site/sites/default/settings.php create mode 100644 package_manager/tests/fixtures/fake_site/sites/example.com/files/ignore.txt create mode 100644 package_manager/tests/fixtures/fake_site/sites/example.com/services.yml create mode 100644 package_manager/tests/fixtures/fake_site/sites/example.com/settings.local.php create mode 100644 package_manager/tests/fixtures/fake_site/sites/example.com/settings.php create mode 100644 package_manager/tests/fixtures/fake_site/sites/simpletest/ignore.txt create mode 100644 package_manager/tests/fixtures/fake_site/vendor/web.config create mode 100644 package_manager/tests/src/Functional/ExcludedPathsTest.php diff --git a/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php b/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php index 9141e9d196..a9921a3cda 100644 --- a/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php +++ b/package_manager/src/EventSubscriber/ExcludedPathsSubscriber.php @@ -123,23 +123,11 @@ class ExcludedPathsSubscriber implements EventSubscriberInterface { 'settings.local.php', 'services.yml', ]; + $default_site = 'sites' . DIRECTORY_SEPARATOR . 'default'; + foreach ($settings_files as $settings_file) { - $file_path = implode(DIRECTORY_SEPARATOR, [ - $this->appRoot, - $this->sitePath, - $settings_file, - ]); - $file_path = $this->fileSystem->realpath($file_path); - if (file_exists($file_path)) { - $event->excludePath($file_path); - } - - $default_file_path = implode(DIRECTORY_SEPARATOR, [ - 'sites', - 'default', - $settings_file, - ]); - $event->excludePath($default_file_path); + $event->excludePath($this->sitePath . DIRECTORY_SEPARATOR . $settings_file); + $event->excludePath($default_site . DIRECTORY_SEPARATOR . $settings_file); } } diff --git a/package_manager/tests/fixtures/fake_site/private/ignore.txt b/package_manager/tests/fixtures/fake_site/private/ignore.txt new file mode 100644 index 0000000000..08874eba8b --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/private/ignore.txt @@ -0,0 +1 @@ +This file should never be staged. diff --git a/package_manager/tests/fixtures/fake_site/sites/default/services.yml b/package_manager/tests/fixtures/fake_site/sites/default/services.yml new file mode 100644 index 0000000000..e11552b41d --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/default/services.yml @@ -0,0 +1 @@ +# This file should never be staged. diff --git a/package_manager/tests/fixtures/fake_site/sites/default/settings.local.php b/package_manager/tests/fixtures/fake_site/sites/default/settings.local.php new file mode 100644 index 0000000000..15b43d2812 --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/default/settings.local.php @@ -0,0 +1,6 @@ +<?php + +/** + * @file + * This file should never be staged. + */ diff --git a/package_manager/tests/fixtures/fake_site/sites/default/settings.php b/package_manager/tests/fixtures/fake_site/sites/default/settings.php new file mode 100644 index 0000000000..15b43d2812 --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/default/settings.php @@ -0,0 +1,6 @@ +<?php + +/** + * @file + * This file should never be staged. + */ diff --git a/package_manager/tests/fixtures/fake_site/sites/example.com/files/ignore.txt b/package_manager/tests/fixtures/fake_site/sites/example.com/files/ignore.txt new file mode 100644 index 0000000000..08874eba8b --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/example.com/files/ignore.txt @@ -0,0 +1 @@ +This file should never be staged. diff --git a/package_manager/tests/fixtures/fake_site/sites/example.com/services.yml b/package_manager/tests/fixtures/fake_site/sites/example.com/services.yml new file mode 100644 index 0000000000..e11552b41d --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/example.com/services.yml @@ -0,0 +1 @@ +# This file should never be staged. diff --git a/package_manager/tests/fixtures/fake_site/sites/example.com/settings.local.php b/package_manager/tests/fixtures/fake_site/sites/example.com/settings.local.php new file mode 100644 index 0000000000..15b43d2812 --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/example.com/settings.local.php @@ -0,0 +1,6 @@ +<?php + +/** + * @file + * This file should never be staged. + */ diff --git a/package_manager/tests/fixtures/fake_site/sites/example.com/settings.php b/package_manager/tests/fixtures/fake_site/sites/example.com/settings.php new file mode 100644 index 0000000000..15b43d2812 --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/example.com/settings.php @@ -0,0 +1,6 @@ +<?php + +/** + * @file + * This file should never be staged. + */ diff --git a/package_manager/tests/fixtures/fake_site/sites/simpletest/ignore.txt b/package_manager/tests/fixtures/fake_site/sites/simpletest/ignore.txt new file mode 100644 index 0000000000..08874eba8b --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/sites/simpletest/ignore.txt @@ -0,0 +1 @@ +This file should never be staged. diff --git a/package_manager/tests/fixtures/fake_site/vendor/web.config b/package_manager/tests/fixtures/fake_site/vendor/web.config new file mode 100644 index 0000000000..08874eba8b --- /dev/null +++ b/package_manager/tests/fixtures/fake_site/vendor/web.config @@ -0,0 +1 @@ +This file should never be staged. diff --git a/package_manager/tests/src/Functional/ExcludedPathsTest.php b/package_manager/tests/src/Functional/ExcludedPathsTest.php new file mode 100644 index 0000000000..442ed640d8 --- /dev/null +++ b/package_manager/tests/src/Functional/ExcludedPathsTest.php @@ -0,0 +1,84 @@ +<?php + +namespace Drupal\Tests\package_manager\Functional; + +use Drupal\Core\Site\Settings; +use Drupal\package_manager\PathLocator; +use Drupal\package_manager\Stage; +use Drupal\Tests\BrowserTestBase; + +/** + * @covers \Drupal\package_manager\EventSubscriber\ExcludedPathsSubscriber + * + * @group package_manager + */ +class ExcludedPathsTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected static $modules = ['package_manager']; + + public function testExcludedPaths(): void { + $active_dir = __DIR__ . '/../../fixtures/fake_site'; + $stage_dir = $this->siteDirectory . '/stage'; + + $path_locator = $this->prophesize(PathLocator::class); + $path_locator->getActiveDirectory()->willReturn($active_dir); + $path_locator->getStageDirectory()->willReturn($stage_dir); + + $settings = Settings::getAll(); + $settings['file_public_path'] = 'sites/example.com/files'; + $settings['file_private_path'] = 'private'; + new Settings($settings); + + /** @var \Drupal\package_manager\EventSubscriber\ExcludedPathsSubscriber $subscriber */ + $subscriber = $this->container->get('package_manager.excluded_paths_subscriber'); + $reflector = new \ReflectionObject($subscriber); + $property = $reflector->getProperty('sitePath'); + $property->setAccessible(TRUE); + $property->setValue($subscriber, 'sites/example.com'); + + $stage = new Stage( + $path_locator->reveal(), + $this->container->get('package_manager.beginner'), + $this->container->get('package_manager.stager'), + $this->container->get('package_manager.committer'), + $this->container->get('package_manager.cleaner'), + $this->container->get('event_dispatcher') + ); + $stage->create(); + + $this->assertDirectoryExists($stage_dir); + $this->assertDirectoryNotExists("$stage_dir/sites/simpletest"); + $this->assertFileNotExists("$stage_dir/vendor/web.config"); + $this->assertDirectoryNotExists("$stage_dir/sites/example.com/files"); + $this->assertDirectoryNotExists("$stage_dir/private"); + $this->assertFileNotExists("$stage_dir/sites/example.com/settings.php"); + $this->assertFileNotExists("$stage_dir/sites/example.com/settings.local.php"); + $this->assertFileNotExists("$stage_dir/sites/example.com/services.yml"); + $this->assertFileNotExists("$stage_dir/sites/default/settings.php"); + $this->assertFileNotExists("$stage_dir/sites/default/settings.local.php"); + $this->assertFileNotExists("$stage_dir/sites/default/services.yml"); + + $files = [ + 'sites/default/no-copy.txt', + 'web.config', + ]; + foreach ($files as $file) { + $file = "$stage_dir/$file"; + touch($file); + $this->assertFileExists($file); + } + $stage->apply(); + foreach ($files as $file) { + $this->assertFileNotExists("$active_dir/$file"); + } + } + +} -- GitLab