WordPress.org

Make WordPress Core


Ignore:
Timestamp:
12/21/2016 05:07:05 AM (3 years ago)
Author:
pento
Message:

Tests: Restore the database connection earlier when switching test groups.

When plugins don't disable the backupGlobals PHPUnit option in their own tests, $wpdb is backed up and restored between classes of tests. The serialisation process used for this broke the database connection. This previously wasn't a problem, as it was reconnecting before each test.

[38398] introduced some changes that required the connection to be available in setUpBeforeClass(), earlier than in was previously reconnecting. This didn't cause warnings in Core, but it did cause warnings for plugins that don't disable the backupGlobals option.

The database connection now reconnects in setUpBeforeClass(). This change also fixes a few Core tests that weren't calling parent::setUpBeforeClass() or parent::tearDown() correctly.

Merges [39626] to the 4.7 branch.

Fixes #39327.

Location:
branches/4.7
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/tests/phpunit/tests/db.php

    r39275 r39627  
    2121
    2222    public static function setUpBeforeClass() {
     23        parent::setUpBeforeClass();
    2324        self::$_wpdb = new wpdb_exposed_methods_for_testing();
    2425    }
     
    6465
    6566        $var = $wpdb->get_var( "SELECT ID FROM $wpdb->users LIMIT 1" );
     67
     68        // Ensure all database handles have been properly reconnected after this test.
     69        $wpdb->db_connect();
     70        self::$_wpdb->db_connect();
     71
    6672        $this->assertGreaterThan( 0, $var );
    6773    }
Note: See TracChangeset for help on using the changeset viewer.