diff --git a/src/Downloader.php b/src/Downloader.php index a2b23ba..0d798a2 100644 --- a/src/Downloader.php +++ b/src/Downloader.php @@ -52,9 +52,10 @@ public function downloadPatch(Patch $patch) } foreach ($this->getDownloaders() as $downloader) { - if (in_array(get_class($downloader), $this->disabledDownloaders, true)) { + $class = "\\" . get_class($downloader); + if (in_array($class, $this->disabledDownloaders, true)) { $this->io->write( - ' - Skipping downloader ' . get_class($downloader) . '', + ' - Skipping downloader ' . $class . '', true, IOInterface::VERBOSE ); diff --git a/src/Patcher.php b/src/Patcher.php index ce7114a..35f4fd5 100644 --- a/src/Patcher.php +++ b/src/Patcher.php @@ -41,9 +41,10 @@ public function __construct(Composer $composer, IOInterface $io, array $disabled public function applyPatch(Patch $patch, string $path): bool { foreach ($this->getPatchers() as $patcher) { - if (in_array(get_class($patcher), $this->disabledPatchers, true)) { + $class = "\\" . get_class($patcher); + if (in_array($class, $this->disabledPatchers, true)) { $this->io->write( - ' - Skipping patcher ' . get_class($patcher) . '', + ' - Skipping patcher ' . $class . '', true, IOInterface::VERBOSE ); diff --git a/src/Resolver.php b/src/Resolver.php index b1d9630..1824303 100644 --- a/src/Resolver.php +++ b/src/Resolver.php @@ -45,9 +45,11 @@ public function loadFromResolvers(): PatchCollection // Let each resolver discover patches and add them to the PatchCollection. /** @var ResolverInterface $resolver */ foreach ($this->getPatchResolvers() as $resolver) { - if (in_array(get_class($resolver), $this->disabledResolvers, true)) { + $class = "\\" . get_class($resolver); + + if (in_array($class, $this->disabledResolvers, true)) { $this->io->write( - ' - Skipping resolver ' . get_class($resolver) . '', + ' - Skipping resolver ' . $class . '', true, IOInterface::VERBOSE ); diff --git a/tests/_data/fixtures/disable-dependency-patches/composer.json b/tests/_data/fixtures/disable-dependency-patches/composer.json new file mode 100644 index 0000000..7c13947 --- /dev/null +++ b/tests/_data/fixtures/disable-dependency-patches/composer.json @@ -0,0 +1,33 @@ +{ + "name": "cweagans/composer-patches-test-project", + "description": "Project for use in cweagans/composer-patches acceptance tests.", + "type": "project", + "license": "BSD-3-Clause", + "repositories": [ + { + "type": "path", + "url": "../../../../" + }, + { + "type": "path", + "url": "../../dep-test-package" + } + ], + "require": { + "cweagans/composer-patches": "*@dev", + "cweagans/composer-patches-testrepo": "~1.0", + "cweagans/dep-test-package": "*@dev" + }, + "config": { + "allow-plugins": { + "cweagans/composer-patches": true + } + }, + "extra": { + "composer-patches": { + "disable-resolvers": [ + "\\cweagans\\Composer\\Resolver\\Dependencies" + ] + } + } +} diff --git a/tests/_data/fixtures/no-patchers-available/composer.json b/tests/_data/fixtures/no-patchers-available/composer.json index c0555c9..2b68989 100644 --- a/tests/_data/fixtures/no-patchers-available/composer.json +++ b/tests/_data/fixtures/no-patchers-available/composer.json @@ -16,11 +16,9 @@ "extra": { "composer-patches": { "disable-patchers": [ - "cweagans\\Composer\\Patcher\\BsdPatchPatcher", - "cweagans\\Composer\\Patcher\\GitPatcher", - "cweagans\\Composer\\Patcher\\GitInitPatcher", - "cweagans\\Composer\\Patcher\\GnuGPatchPatcher", - "cweagans\\Composer\\Patcher\\GnuPatchPatcher" + "\\cweagans\\Composer\\Patcher\\FreeformPatcher", + "\\cweagans\\Composer\\Patcher\\GitPatcher", + "\\cweagans\\Composer\\Patcher\\GitInitPatcher" ] }, "patches": { diff --git a/tests/acceptance/DisableDependencyPatchesCept.php b/tests/acceptance/DisableDependencyPatchesCept.php new file mode 100644 index 0000000..8e30932 --- /dev/null +++ b/tests/acceptance/DisableDependencyPatchesCept.php @@ -0,0 +1,17 @@ +wantTo('disable resolving patches from dependencies (and test disabling resolvers in general)'); +$I->amInPath(codecept_data_dir('fixtures/disable-dependency-patches')); +$I->runComposerCommand('install', ['-vvv']); +$I->dontSeeInComposerOutput('Resolving patches from dependencies'); +$I->dontSeeInComposerOutput('Patching cweagans/commposer-patches-testrepo'); +$I->dontSeeFileFound('OneMoreTest.php', 'vendor/cweagans/composer-patches-testrepo/src'); +$I->openFile('patches.lock.json'); +$I->seeInThisFile('6142bfcb78f54dfbf5247ae5e463f25bdb8fff1890806e2e45aa81a59c211653');