public function GenerateThemeTest::test in Drupal 10
Same name and namespace in other branches
- 9 core/tests/Drupal/Tests/Core/Command/GenerateThemeTest.php \Drupal\Tests\Core\Command\GenerateThemeTest::test()
Tests the generate-theme command.
File
- core/
tests/ Drupal/ Tests/ Core/ Command/ GenerateThemeTest.php, line 83
Class
- GenerateThemeTest
- Tests the generate-theme commands.
Namespace
Drupal\Tests\Core\CommandCode
public function test() {
// Do not rely on \Drupal::VERSION: change the version to a concrete version
// number, to simulate using a tagged core release.
$starterkit_info_yml = $this
->getWorkspaceDirectory() . '/core/themes/starterkit_theme/starterkit_theme.info.yml';
$info = Yaml::decode(file_get_contents($starterkit_info_yml));
$info['version'] = '9.4.0';
file_put_contents($starterkit_info_yml, Yaml::encode($info));
$process = $this
->generateThemeFromStarterkit();
$result = $process
->run();
$this
->assertEquals('Theme generated successfully to themes/test_custom_theme', trim($process
->getOutput()), $process
->getErrorOutput());
$this
->assertSame(0, $result);
$theme_path_relative = 'themes/test_custom_theme';
$info = $this
->assertThemeExists($theme_path_relative);
self::assertArrayNotHasKey('hidden', $info);
self::assertArrayHasKey('generator', $info);
self::assertEquals('starterkit_theme:9.4.0', $info['generator']);
// Ensure that the generated theme can be installed.
$this
->installQuickStart('minimal');
$this
->formLogin($this->adminUsername, $this->adminPassword);
$this
->visit('/admin/appearance');
$this
->getMink()
->assertSession()
->pageTextContains('Test custom starterkit');
$this
->getMink()
->assertSession()
->pageTextContains('Custom theme generated from a starterkit theme');
$this
->getMink()
->getSession()
->getPage()
->clickLink('Install "Test custom starterkit theme" theme');
$this
->getMink()
->assertSession()
->pageTextContains('The "Test custom starterkit theme" theme has been installed.');
// Ensure that a new theme cannot be generated when the destination
// directory already exists.
$theme_path_absolute = $this
->getWorkspaceDirectory() . "/{$theme_path_relative}";
$this
->assertFileExists($theme_path_absolute . '/test_custom_theme.theme');
unlink($theme_path_absolute . '/test_custom_theme.theme');
$process = $this
->generateThemeFromStarterkit();
$result = $process
->run();
$this
->assertStringContainsString('Theme could not be generated because the destination directory', $process
->getErrorOutput());
$this
->assertStringContainsString($theme_path_relative, $process
->getErrorOutput());
$this
->assertSame(1, $result);
$this
->assertFileDoesNotExist($theme_path_absolute . '/test_custom_theme.theme');
}