function FixtureManipulatorTest::testAddDotGitFolder

@covers ::addDotGitFolder

File

core/modules/package_manager/tests/src/Kernel/FixtureManipulatorTest.php, line 218

Class

FixtureManipulatorTest
@coversDefaultClass \Drupal\fixture_manipulator\FixtureManipulator[[api-linebreak]]

Namespace

Drupal\Tests\package_manager\Kernel

Code

public function testAddDotGitFolder() : void {
  $path_locator = $this->container
    ->get(PathLocator::class);
  $project_root = $path_locator->getProjectRoot();
  $this->assertFalse(is_dir($project_root . "/relative/path/.git"));
  // We should not be able to add a git folder to a non-existing directory.
  try {
    (new FixtureManipulator())->addDotGitFolder($project_root . "/relative/path")
      ->commitChanges($project_root);
    $this->fail('Trying to create a .git directory that already exists should raise an error.');
  } catch (\LogicException $e) {
    $this->assertSame('No directory exists at ' . $project_root . '/relative/path.', $e->getMessage());
  }
  mkdir($project_root . "/relative/path", 0777, TRUE);
  $fixture_manipulator = (new FixtureManipulator())->addPackage([
    'name' => 'relative/project_path',
    'type' => 'drupal-module',
  ])
    ->addDotGitFolder($path_locator->getVendorDirectory() . "/relative/project_path")
    ->addDotGitFolder($project_root . "/relative/path");
  $this->assertTrue(!is_dir($project_root . "/relative/project_path/.git"));
  $fixture_manipulator->commitChanges($project_root);
  $this->assertTrue(is_dir($project_root . "/relative/path/.git"));
  // We should not be able to create already existing directory.
  try {
    (new FixtureManipulator())->addDotGitFolder($project_root . "/relative/path")
      ->commitChanges($project_root);
    $this->fail('Trying to create a .git directory that already exists should raise an error.');
  } catch (\LogicException $e) {
    $this->assertStringContainsString("A .git directory already exists at " . $project_root, $e->getMessage());
  }
}

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