L337xyz
Server: LiteSpeed
System: Linux in-mum-web831.main-hosting.eu 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
User: u786315844 (786315844)
PHP: 7.4.33
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/.wp-cli/packages/vendor/wp-cli/extension-command/features/theme-update.feature
Feature: Update WordPress themes

  Scenario: Updating a theme with no version in the WordPress.org directory shouldn't delete the original theme
    Given a WP install

    When I run `wp scaffold underscores wpclitesttheme`
    Then STDOUT should contain:
      """
      Success: Created theme
      """
    And the wp-content/themes/wpclitesttheme directory should exist

    When I try `wp theme update wpclitesttheme --version=100.0.0`
    Then STDERR should contain:
      """
      Error: No themes installed
      """
    And the wp-content/themes/wpclitesttheme directory should exist

  Scenario: Install a theme, then update to a specific version of that theme
    Given a WP install
    And I run `wp theme delete --all --force`

    When I run `wp theme install twentytwelve --version=3.0`
    Then STDOUT should not be empty

    When I run `wp theme update twentytwelve --version=4.0`
    Then STDOUT should not be empty

    When I run `wp theme list --fields=name,version`
    Then STDOUT should be a table containing rows:
      | name         | version   |
      | twentytwelve | 4.0       |

  @require-wp-4.5
  Scenario: Not giving a slug on update should throw an error unless --all given
    Given a WP install
    And I run `wp theme path`
    And save STDOUT as {THEME_DIR}
    And an empty {THEME_DIR} directory

    # No themes installed. Don't give an error if --all given for BC.
    When I run `wp theme update --all`
    Then STDOUT should be:
      """
      Success: No themes installed.
      """

    When I run `wp theme update --version=0.6 --all`
    Then STDOUT should be:
      """
      Success: No themes installed.
      """

    # One theme installed.
    Given I run `wp theme install moina --version=1.0.2`

    When I try `wp theme update`
    Then the return code should be 1
    And STDERR should be:
      """
      Error: Please specify one or more themes, or use --all.
      """
    And STDOUT should be empty

    When I run `wp theme update --all`
    Then STDOUT should contain:
      """
      Success: Updated
      """

    When I run the previous command again
    Then STDOUT should be:
      """
      Success: Theme already updated.
      """

    # Note: if given version then re-installs.
    When I run `wp theme update --version=1.0.2 --all`
    Then STDOUT should contain:
      """
      Success: Installed 1 of 1 themes.
      """

    When I run the previous command again
    Then STDOUT should contain:
      """
      Success: Installed 1 of 1 themes.
      """

    # Two themes installed.
    Given I run `wp theme install --force twentytwelve --version=1.0`

    When I run `wp theme update --all`
    Then STDOUT should contain:
      """
      Success: Updated
      """

    When I run the previous command again
    # BUG: Message should be in plural.
    Then STDOUT should be:
      """
      Success: Theme already updated.
      """

    # Using version with all rarely makes sense and should probably error and do nothing.
    When I try `wp theme update --version=1.0.3 --all`
    Then the return code should be 1
    And STDOUT should contain:
      """
      Success: Installed 1 of 1 themes.
      """
    And STDERR should be:
      """
      Error: Can't find the requested theme's version 1.0.3 in the WordPress.org theme repository (HTTP code 404).
      """

  Scenario: Error when both --minor and --patch are provided
    Given a WP install

    When I try `wp theme update --patch --minor --all`
    Then STDERR should be:
      """
      Error: --minor and --patch cannot be used together.
      """
    And the return code should be 1

  Scenario: Update a theme to its latest minor release
    Given a WP install
    And I run `wp theme install --force twentytwelve --version=3.0`

    When I run `wp theme update twentytwelve --minor`
    Then STDOUT should contain:
      """
      Success: Updated 1 of 1 themes.
      """

    When I run `wp theme get twentytwelve --field=version`
    Then STDOUT should be:
      """
      3.9
      """

  Scenario: Update a theme to its latest patch release
    Given a WP install
    And I run `wp theme install --force twentytwelve --version=1.1`

    When I run `wp theme update twentytwelve --patch`
    Then STDOUT should contain:
      """
      Success: Updated 1 of 1 themes.
      """

    When I run `wp theme get twentytwelve --field=version`
    Then STDOUT should be:
      """
      1.1.1
      """