HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/local/wp/vendor/wp-cli/db-command/features/db-tables.feature
Feature: List database tables

  Scenario: List database tables on a single WordPress install
    Given a WP install

    When I run `wp db tables`
    Then STDOUT should contain:
      """
      wp_commentmeta
      wp_comments
      wp_links
      wp_options
      wp_postmeta
      wp_posts
      wp_term_relationships
      wp_term_taxonomy
      """
    # Leave out wp_termmeta for old WP compat.
    And STDOUT should contain:
      """
      wp_terms
      wp_usermeta
      wp_users
      """

    When I run `wp db tables --format=csv`
    Then STDOUT should contain:
      """
      ,wp_terms,wp_usermeta,wp_users
      """

    When I run `wp db tables 'wp_post*' --format=csv`
    Then STDOUT should be:
      """
      wp_postmeta,wp_posts
      """

  @require-wp-3.9
  Scenario: List database tables on a multisite WordPress install
    Given a WP multisite install

    When I run `wp db tables`
    # Leave out wp_blog_versions, it was never used and removed in WP 5.3+.
    # See https://core.trac.wordpress.org/ticket/19755

    # Leave out wp_blogmeta for old WP compat.
    Then STDOUT should contain:
      """
      wp_blogs
      wp_commentmeta
      wp_comments
      wp_links
      wp_options
      wp_postmeta
      wp_posts
      wp_registration_log
      wp_signups
      wp_site
      wp_sitemeta
      wp_term_relationships
      wp_term_taxonomy
      """
    # Leave out wp_termmeta for old WP compat.
    And STDOUT should contain:
      """
      wp_terms
      wp_usermeta
      wp_users
      """

    When I run `wp site create --slug=foo`
    And I run `wp db tables --url=example.com/foo`
    Then STDOUT should contain:
      """
      wp_users
      """
    And STDOUT should contain:
      """
      wp_usermeta
      """
    And STDOUT should contain:
      """
      wp_2_posts
      """

    When I run `wp db tables --url=example.com/foo --scope=global`
    Then STDOUT should not contain:
      """
      wp_2_posts
      """

    When I run `wp db tables --all-tables-with-prefix`
    Then STDOUT should contain:
      """
      wp_2_posts
      """
    And STDOUT should contain:
      """
      wp_posts
      """

    When I run `wp db tables --url=example.com/foo --all-tables-with-prefix`
    Then STDOUT should contain:
      """
      wp_2_posts
      """
    And STDOUT should not contain:
      """
      wp_posts
      """

    When I run `wp db tables --url=example.com/foo --network`
    Then STDOUT should contain:
      """
      wp_2_posts
      """
    And STDOUT should contain:
      """
      wp_posts
      """

  Scenario: Listing a site's tables should only list that site's tables
    Given a WP multisite install

    When I run `wp site create --slug=foo --porcelain`
    Then STDOUT should be:
      """
      2
      """

    When I run `wp db query "ALTER TABLE wp_blogs AUTO_INCREMENT=21"`
    Then the return code should be 0

    When I run `wp site create --slug=bar --porcelain`
    Then STDOUT should be:
      """
      21
      """

    When I run `wp db tables --url=example.com/foo --all-tables-with-prefix`
    Then STDOUT should contain:
      """
      wp_2_posts
      """
    And STDOUT should not contain:
      """
      wp_21_posts
      """

  Scenario: List database tables with wildcards on a single WordPress install with custom table prefix
    Given a WP install
    And "$table_prefix = 'wp_';" replaced with "$table_prefix = 'as_wp_';" in the wp-config.php file
    And I try `wp core install --url=example.com --title=example --admin_user=wpcli --admin_email=wpcli@example.com`
    Then STDOUT should contain:
      """
      Success:
      """
    And the return code should be 0

    When I run `wp db tables '*_posts'`
    Then STDOUT should be:
      """
      as_wp_posts
      """

    When I run `wp db tables '*_posts' --network`
    Then STDOUT should be:
      """
      as_wp_posts
      """

    When I run `wp db tables '*_posts' --scope=blog`
    Then STDOUT should be:
      """
      as_wp_posts
      """

    When I try `wp db tables '*_posts' --scope=global`
    Then STDERR should not be empty
    And STDOUT should be empty
    And the return code should be 1

    When I run `wp db tables '*_users' --scope=global`
    Then STDOUT should be:
      """
      as_wp_users
      """

  Scenario: List database tables with wildcards on a multisite WordPress install with custom table prefix
    Given a WP multisite install
    And "$table_prefix = 'wp_';" replaced with "$table_prefix = 'as_wp_';" in the wp-config.php file
    # Use try to cater for wp-db errors in old WPs.
    And I try `wp core multisite-install --url=example.com --title=example --admin_user=wpcli --admin_email=wpcli@example.com`
    Then STDOUT should contain:
      """
      Success:
      """
    And the return code should be 0
    And I run `wp site create --slug=foo`

    When I run `wp db tables '*_posts'`
    Then STDOUT should be:
      """
      as_wp_posts
      """

    When I run `wp db tables '*_posts' --url=example.com/foo`
    Then STDOUT should be:
      """
      as_wp_2_posts
      """

    When I run `wp db tables '*_posts' --network`
    Then STDOUT should be:
      """
      as_wp_2_posts
      as_wp_posts
      """

    When I run `wp db tables '*_posts' --scope=blog`
    Then STDOUT should be:
      """
      as_wp_posts
      """

    When I run `wp db tables '*_posts' --scope=blog --network`
    Then STDOUT should be:
      """
      as_wp_2_posts
      as_wp_posts
      """

    When I try `wp db tables '*_posts' --scope=global`
    Then STDERR should not be empty
    And STDOUT should be empty
    And the return code should be 1

    When I try `wp db tables '*_posts' --scope=global --network`
    Then STDERR should not be empty
    And STDOUT should be empty
    And the return code should be 1

    When I run `wp db tables '*_users' --scope=global`
    Then STDOUT should be:
      """
      as_wp_users
      """

    When I run `wp db tables '*_users' --scope=global --network`
    Then STDOUT should be:
      """
      as_wp_users
      """