function Composer::vendorTestCodeCleanup

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Composer/Composer.php \Drupal\Core\Composer\Composer::vendorTestCodeCleanup()

Remove possibly problematic test files from vendored projects.

Parameters

\Composer\Installer\PackageEvent $event: A PackageEvent object to get the configured composer vendor directories from.

Deprecated

in drupal:9.5.0 and is removed from drupal:10.0.0. Any "scripts" section mentioning this in composer.json can be removed and replaced with the drupal/core-vendor-hardening Composer plugin, as needed.

See also

https://www.drupal.org/node/3260624

1 call to Composer::vendorTestCodeCleanup()
ComposerDeprecationTest::testVendorTestCodeCleanup in core/tests/Drupal/Tests/Core/Composer/ComposerDeprecationTest.php
@covers ::vendorTestCodeCleanup[[api-linebreak]] @group legacy

File

core/lib/Drupal/Core/Composer/Composer.php, line 192

Class

Composer
Provides static functions for composer script events.

Namespace

Drupal\Core\Composer

Code

public static function vendorTestCodeCleanup(PackageEvent $event) {
  trigger_error('Calling ' . __METHOD__ . ' from composer.json is deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. Any "scripts" section mentioning this in composer.json can be removed and replaced with the drupal/core-vendor-hardening Composer plugin, as needed. See https://www.drupal.org/node/3260624', E_USER_DEPRECATED);
  $vendor_dir = $event->getComposer()
    ->getConfig()
    ->get('vendor-dir');
  $io = $event->getIO();
  $op = $event->getOperation();
  if ($op instanceof UpdateOperation) {
    $package = $op->getTargetPackage();
  }
  else {
    $package = $op->getPackage();
  }
  $package_key = static::findPackageKey($package->getName());
  $message = sprintf("    Processing <comment>%s</comment>", $package->getPrettyName());
  if ($io->isVeryVerbose()) {
    $io->write($message);
  }
  if ($package_key) {
    foreach (static::$packageToCleanup[$package_key] as $path) {
      $dir_to_remove = $vendor_dir . '/' . $package_key . '/' . $path;
      $print_message = $io->isVeryVerbose();
      if (is_dir($dir_to_remove)) {
        if (static::deleteRecursive($dir_to_remove)) {
          $message = sprintf("      <info>Removing directory '%s'</info>", $path);
        }
        else {
          // Always display a message if this fails as it means something has
          // gone wrong. Therefore the message has to include the package name
          // as the first informational message might not exist.
          $print_message = TRUE;
          $message = sprintf("      <error>Failure removing directory '%s'</error> in package <comment>%s</comment>.", $path, $package->getPrettyName());
        }
      }
      else {
        // If the package has changed or the --prefer-dist version does not
        // include the directory this is not an error.
        $message = sprintf("      Directory '%s' does not exist", $path);
      }
      if ($print_message) {
        $io->write($message);
      }
    }
    if ($io->isVeryVerbose()) {
      // Add a new line to separate this output from the next package.
      $io->write("");
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.