80 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * phpcs:disable PSR1.Files.SideEffects
 | 
						|
 * phpcs:disable Squiz.Functions.GlobalFunction
 | 
						|
 * @var string $testFrameworkDir - Must be defined in parent script.
 | 
						|
 * @var \Magento\TestFramework\Bootstrap\Settings $settings - Must be defined in parent script.
 | 
						|
 */
 | 
						|
 | 
						|
/** Copy test modules to app/code/Magento to make them visible for Magento instance */
 | 
						|
$pathToCommittedTestModules = $testFrameworkDir . '/../_files/Magento';
 | 
						|
$pathToInstalledMagentoInstanceModules = $testFrameworkDir . '/../../../../app/code/Magento';
 | 
						|
$iterator = new RecursiveIteratorIterator(
 | 
						|
    new RecursiveDirectoryIterator($pathToCommittedTestModules, RecursiveDirectoryIterator::FOLLOW_SYMLINKS)
 | 
						|
);
 | 
						|
/** @var SplFileInfo $file */
 | 
						|
foreach ($iterator as $file) {
 | 
						|
    if (!$file->isDir()) {
 | 
						|
        $source = $file->getPathname();
 | 
						|
        $relativePath = substr($source, strlen($pathToCommittedTestModules));
 | 
						|
        $destination = $pathToInstalledMagentoInstanceModules . $relativePath;
 | 
						|
        // phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
        $targetDir = dirname($destination);
 | 
						|
        // phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
        if (!is_dir($targetDir)) {
 | 
						|
            // phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
            mkdir($targetDir, 0755, true);
 | 
						|
        }
 | 
						|
        // phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
        copy($source, $destination);
 | 
						|
    }
 | 
						|
}
 | 
						|
unset($iterator, $file);
 | 
						|
 | 
						|
// Register the modules under '_files/'
 | 
						|
$pathPattern = $pathToInstalledMagentoInstanceModules . '/TestModule*/registration.php';
 | 
						|
// phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
$files = glob($pathPattern, GLOB_NOSORT);
 | 
						|
if ($files === false) {
 | 
						|
    throw new \RuntimeException('glob() returned error while searching in \'' . $pathPattern . '\'');
 | 
						|
}
 | 
						|
foreach ($files as $file) {
 | 
						|
    // phpcs:ignore Magento2.Security.IncludeFile
 | 
						|
    include $file;
 | 
						|
}
 | 
						|
 | 
						|
if ((int)$settings->get('TESTS_PARALLEL_RUN') !== 1) {
 | 
						|
    // Only delete modules if we are not using parallel executions
 | 
						|
    // phpcs:ignore Magento2.Functions.DiscouragedFunction
 | 
						|
    register_shutdown_function(
 | 
						|
        'deleteTestModules',
 | 
						|
        $pathToCommittedTestModules,
 | 
						|
        $pathToInstalledMagentoInstanceModules
 | 
						|
    );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Delete all test module directories which have been created before
 | 
						|
 *
 | 
						|
 * @param string $pathToCommittedTestModules
 | 
						|
 * @param string $pathToInstalledMagentoInstanceModules
 | 
						|
 */
 | 
						|
function deleteTestModules($pathToCommittedTestModules, $pathToInstalledMagentoInstanceModules)
 | 
						|
{
 | 
						|
    $filesystem = new \Symfony\Component\Filesystem\Filesystem();
 | 
						|
    $iterator = new DirectoryIterator($pathToCommittedTestModules);
 | 
						|
    /** @var SplFileInfo $file */
 | 
						|
    foreach ($iterator as $file) {
 | 
						|
        if ($file->isDir() && !in_array($file->getFilename(), ['.', '..'])) {
 | 
						|
            $targetDirPath = $pathToInstalledMagentoInstanceModules . '/' . $file->getFilename();
 | 
						|
            $filesystem->remove($targetDirPath);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    unset($iterator, $file);
 | 
						|
}
 |