public function Fixtures::cloneFixtureProjects in Drupal 9
Same name and namespace in other branches
- 8 core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Fixtures.php \Drupal\Tests\Composer\Plugin\Scaffold\Fixtures::cloneFixtureProjects()
- 10 core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Fixtures.php \Drupal\Tests\Composer\Plugin\Scaffold\Fixtures::cloneFixtureProjects()
Creates a temporary copy of all of the fixtures projects into a temp dir.
The fixtures remain dirty if they already exist. Individual tests should first delete any fixture directory that needs to remain pristine. Since all temporary directories are removed in tearDown, this is only an issue when a) the FIXTURE_DIR environment variable has been set, or b) tests are calling cloneFixtureProjects more than once per test method.
Parameters
string $fixturesDir: The directory to place fixtures in.
array $replacements: Key : value mappings for placeholders to replace in composer.json templates.
File
- core/
tests/ Drupal/ Tests/ Composer/ Plugin/ Scaffold/ Fixtures.php, line 332
Class
- Fixtures
- Convenience class for creating fixtures.
Namespace
Drupal\Tests\Composer\Plugin\ScaffoldCode
public function cloneFixtureProjects($fixturesDir, array $replacements = []) {
$filesystem = new Filesystem();
// We will replace 'SYMLINK' with the string 'true' in our composer.json
// fixture.
$replacements += [
'SYMLINK' => 'true',
];
$interpolator = new Interpolator('__', '__');
$interpolator
->setData($replacements);
$filesystem
->copy($this
->allFixturesDir(), $fixturesDir);
$composer_json_templates = glob($fixturesDir . "/*/composer.json.tmpl");
foreach ($composer_json_templates as $composer_json_tmpl) {
// Inject replacements into composer.json.
if (file_exists($composer_json_tmpl)) {
$composer_json_contents = file_get_contents($composer_json_tmpl);
$composer_json_contents = $interpolator
->interpolate($composer_json_contents, [], FALSE);
file_put_contents(dirname($composer_json_tmpl) . "/composer.json", $composer_json_contents);
@unlink($composer_json_tmpl);
}
}
}