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/plugin-uninstall.feature
Feature: Uninstall a WordPress plugin

  Background:
    Given a WP install

  Scenario: Uninstall an installed plugin should uninstall, delete files
    When I run `wp plugin uninstall akismet`
    Then STDOUT should be:
      """
      Uninstalled and deleted 'akismet' plugin.
      Success: Uninstalled 1 of 1 plugins.
      """
    And the return code should be 0
    And STDERR should be empty
    And the wp-content/plugins/akismet directory should not exist

  Scenario: Uninstall an installed plugin but do not delete its files
    When I run `wp plugin uninstall akismet --skip-delete`
    Then STDOUT should be:
      """
      Ran uninstall procedure for 'akismet' plugin without deleting.
      Success: Uninstalled 1 of 1 plugins.
      """
    And the return code should be 0
    And STDERR should be empty
    And the wp-content/plugins/akismet directory should exist

  Scenario: Uninstall a plugin that is not in a folder and has custom name
    When I run `wp plugin uninstall hello`
    Then STDOUT should be:
      """
      Uninstalled and deleted 'hello' plugin.
      Success: Uninstalled 1 of 1 plugins.
      """
    And the return code should be 0
    And STDERR should be empty
    And the wp-content/plugins/hello.php file should not exist

  Scenario: Missing required inputs
    When I try `wp plugin uninstall`
    Then STDERR should be:
      """
      Error: Please specify one or more plugins, or use --all.
      """
    And the return code should be 1
    And STDOUT should be empty

  Scenario: Attempting to uninstall a plugin that's activated
    When I run `wp plugin activate akismet`
    Then STDOUT should not be empty

    When I try `wp plugin uninstall akismet`
    Then STDERR should be:
      """
      Warning: The 'akismet' plugin is active.
      Error: No plugins uninstalled.
      """
    And STDOUT should be empty
    And the return code should be 1

  Scenario: Attempting to uninstall a plugin that's activated (using --deactivate)
    When I run `wp plugin activate akismet`
    Then STDOUT should not be empty

    When I try `wp plugin uninstall akismet --deactivate`
    Then STDOUT should be:
      """
      Deactivating 'akismet'...
      Plugin 'akismet' deactivated.
      Uninstalled and deleted 'akismet' plugin.
      Success: Uninstalled 1 of 1 plugins.
      """
    And STDERR should be empty
    And the return code should be 0

  Scenario: Attempting to uninstall a plugin that doesn't exist
    When I try `wp plugin uninstall debug-bar`
    Then STDERR should be:
      """
      Warning: The 'debug-bar' plugin could not be found.
      Error: No plugins uninstalled.
      """
    And the return code should be 1

  Scenario: Uninstall all installed plugins
    When I run `wp plugin uninstall --all`
    Then STDOUT should be:
      """
      Uninstalled and deleted 'akismet' plugin.
      Uninstalled and deleted 'hello' plugin.
      Success: Uninstalled 2 of 2 plugins.
      """
    And the return code should be 0
    And STDERR should be empty

    When I run the previous command again
    Then STDOUT should be:
      """
      Success: No plugins uninstalled.
      """
    And STDERR should be empty

  Scenario:  Uninstall all installed plugins when one or more activated
    When I run `wp plugin activate --all`
    Then STDOUT should contain:
      """
      Success: Activated 2 of 2 plugins.
      """

    When I try `wp plugin uninstall --all`
    Then STDERR should be:
      """
      Warning: The 'akismet' plugin is active.
      Warning: The 'hello' plugin is active.
      Error: No plugins uninstalled.
      """
    And the return code should be 1
    And STDOUT should be empty

    When I run `wp plugin uninstall --deactivate --all`
    Then STDOUT should contain:
      """
      Success: Uninstalled 2 of 2 plugins.
      """
    And STDERR should be empty

  Scenario: Excluding a plugin from uninstallation when using --all switch
    When I try `wp plugin uninstall --all --exclude=akismet,hello`
    Then STDOUT should be:
      """
      Success: No plugins uninstalled.
      """
    And the return code should be 0
    And STDERR should be empty

  Scenario: Excluding a missing plugin should not throw an error
    Given a WP install
    And I run `wp plugin uninstall --all --exclude=missing-plugin`
    Then STDERR should be empty
    And STDOUT should contain:
      """
      Success:
      """
    And the return code should be 0

  @require-wp-5.2
  Scenario: Uninstalling a plugin should remove its language pack
    Given a WP install
    And I run `wp plugin install wordpress-importer`
    And I run `wp core language install fr_FR`
    And I run `wp site switch-language fr_FR`

    When I run `wp language plugin install wordpress-importer fr_FR`
    Then STDOUT should contain:
      """
      Success:
      """
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.mo file should exist
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.po file should exist
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.l10n.php file should exist

    When I run `wp plugin uninstall wordpress-importer`
    Then STDOUT should contain:
      """
      Success:
      """
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.mo file should not exist
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.po file should not exist
    And the wp-content/languages/plugins/wordpress-importer-fr_FR.l10n.php file should not exist
    And STDERR should be empty

  @require-wp-5.2
  Scenario: Uninstalling a plugin should remove its update info
    Given a WP install
    And I run `wp plugin install wordpress-importer --version=0.6`
    And I run `wp plugin status wordpress-importer`

    And I run `wp transient get --network update_plugins`
    Then STDOUT should contain:
      """
      wordpress-importer
      """

    When I run `wp plugin uninstall wordpress-importer`
    Then STDOUT should contain:
      """
      Success:
      """

    When I run `wp transient get --network update_plugins`
    Then STDOUT should not contain:
      """
      wordpress-importer
      """