Verified Commit 7512b901 authored by Jess's avatar Jess
Browse files

Issue #3302654 by bnjmnm, xjm, quietone, lauriii, phenaproxima: Create Starterkit readme

(cherry picked from commit 7e4c0f96)
parent e2a229fb
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -97,6 +97,13 @@ protected function execute(InputInterface $input, OutputInterface $output) {
    $tmp_dir = $this->getUniqueTmpDirPath();
    $this->copyRecursive($source, $tmp_dir);

    // Readme is specific to Starterkit, so remove it from the generated theme.
    $readme_file = "$tmp_dir/README.md";
    if (!file_put_contents($readme_file, "$destination_theme theme, generated from $source_theme_name. Additional information on generating themes can be found in the [Starterkit documentation](https://www.drupal.org/docs/core-modules-and-themes/core-themes/starterkit-theme).")) {
      $io->getErrorStyle()->error("The readme could not be rewritten.");
      return 1;
    }

    // Rename files based on the theme machine name.
    $file_pattern = "/$source_theme_name\.(theme|[^.]+\.yml)/";
    if ($files = @scandir($tmp_dir)) {
+38 −0
Original line number Diff line number Diff line
@@ -99,6 +99,10 @@ public function test() {
    self::assertArrayHasKey('generator', $info);
    self::assertEquals('starterkit_theme:9.4.0', $info['generator']);

    // Confirm readme is rewritten.
    $readme_file = $this->getWorkspaceDirectory() . "/$theme_path_relative/README.md";
    $this->assertSame('test_custom_theme theme, generated from starterkit_theme. Additional information on generating themes can be found in the [Starterkit documentation](https://www.drupal.org/docs/core-modules-and-themes/core-themes/starterkit-theme).', file_get_contents($readme_file));

    // Ensure that the generated theme can be installed.
    $this->installQuickStart('minimal');
    $this->formLogin($this->adminUsername, $this->adminPassword);
@@ -121,6 +125,40 @@ public function test() {
    $this->assertFileDoesNotExist($theme_path_absolute . '/test_custom_theme.theme');
  }

  /**
   * Tests generating a theme from another Starterkit enabled theme.
   */
  public function testGeneratingFromAnotherTheme() {
    // 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();
    $exit_code = $process->run();
    $this->assertSame('Theme generated successfully to themes/test_custom_theme', trim($process->getOutput()), $process->getErrorOutput());
    $this->assertSame(0, $exit_code);
    $install_command = [
      $this->php,
      'core/scripts/drupal',
      'generate-theme',
      'generated_from_another_theme',
      '--name="Generated from another theme"',
      '--description="Custom theme generated from a theme other than starterkit_theme"',
      '--starterkit=test_custom_theme',
    ];
    $process = new Process($install_command);
    $exit_code = $process->run();
    $this->assertSame('Theme generated successfully to themes/generated_from_another_theme', trim($process->getOutput()), $process->getErrorOutput());
    $this->assertSame(0, $exit_code);

    // Confirm readme is rewritten.
    $readme_file = $this->getWorkspaceDirectory() . '/themes/generated_from_another_theme/README.md';
    $this->assertSame('generated_from_another_theme theme, generated from test_custom_theme. Additional information on generating themes can be found in the [Starterkit documentation](https://www.drupal.org/docs/core-modules-and-themes/core-themes/starterkit-theme).', file_get_contents($readme_file));
  }

  /**
   * Tests the generate-theme command on a dev snapshot of Drupal core.
   */
+11 −0
Original line number Diff line number Diff line
# Starterkit Theme

## How to use Starterkit
The Starterkit theme is not directly used by Drupal, nor is it used as a base theme.
**Starterkit is for generating new themes** that include
reasonably un-opinionated templates and styles that eliminate much of the
the initial work required to create a theme.

Starterkit is the recommended approach for creating new themes. For more
information, consult the
[Starterkit documentation on Drupal.org](https://www.drupal.org/docs/core-modules-and-themes/core-themes/starterkit-theme).