CRM_AllTests - Fix hidden GroupTest/TransactionTest interaction (#8115)
authorTim Otten <totten@civicrm.org>
Tue, 12 Apr 2016 22:19:46 +0000 (15:19 -0700)
committerEileen McNaughton <eileen@mcnaughty.com>
Tue, 12 Apr 2016 22:19:46 +0000 (10:19 +1200)
There's a hidden test interaction where CRM_Contact_BAO_GroupTest causes
CRM_Core_TransactionTest to fail, and this seems to involve munging the
active DB connection.

With this revision, CRM_Contact_BAO_GroupTest uses the same DB connection as
everything else.

The failure was reproducible using this command:

```
env CIVICRM_UF=UnitTests PHPUNIT_TESTS="CRM_Contact_BAO_GroupTest::testGroupData CRM_Core_TransactionTest::testBasicCommit" phpunit4  tests/phpunit/EnvTests.php
```

CRM/Core/DAO.php
CRM/Utils/File.php
tests/phpunit/CRM/Contact/BAO/GroupTest.php

index dc987eb6cdf7ba58bfbc2747a6f6f6b12f9d7f1a..c124c0957dbe632fd6cf6b35e1c1326dca92b2ef 100644 (file)
@@ -115,6 +115,15 @@ class CRM_Core_DAO extends DB_DataObject {
     CRM_Core_DAO::executeQuery('SET @uniqueID = %1', array(1 => array(CRM_Utils_Request::id(), 'String')));
   }
 
+  /**
+   * @return DB_common
+   */
+  public static function getConnection() {
+    global $_DB_DATAOBJECT;
+    $dao = new CRM_Core_DAO();
+    return $_DB_DATAOBJECT['CONNECTIONS'][$dao->_database_dsn_md5];
+  }
+
   /**
    * @param string $fieldName
    * @param $fieldDef
index 686c7dcd95b49f9e2b8ede607eef3565abacb257..16996e8f2462d066e762a0b5b8df89c5fabaff36 100644 (file)
@@ -287,16 +287,23 @@ class CRM_Utils_File {
   }
 
   /**
-   * @param $dsn
+   * @param string|NULL $dsn
+   *   Use NULL to load the default/active connection from CRM_Core_DAO.
+   *   Otherwise, give a full DSN string.
    * @param string $fileName
    * @param null $prefix
    * @param bool $isQueryString
    * @param bool $dieOnErrors
    */
   public static function sourceSQLFile($dsn, $fileName, $prefix = NULL, $isQueryString = FALSE, $dieOnErrors = TRUE) {
-    require_once 'DB.php';
+    if ($dsn === NULL) {
+      $db = CRM_Core_DAO::getConnection();
+    }
+    else {
+      require_once 'DB.php';
+      $db = DB::connect($dsn);
+    }
 
-    $db = DB::connect($dsn);
     if (PEAR::isError($db)) {
       die("Cannot open $dsn: " . $db->getMessage());
     }
index 58cd7fb614212431149a708f1076199feb0462c0..2a9c928c8fa139440b82a49840fde99fe1508201 100644 (file)
@@ -111,9 +111,8 @@ class CRM_Contact_BAO_GroupTest extends CiviUnitTestCase {
    * Load saved search sql files into the DB.
    */
   public function loadSavedSearches() {
-    $dsn = CRM_Core_Config::singleton()->dsn;
     foreach (glob(dirname(__FILE__) . "/SavedSearchDataSets/*.sql") as $file) {
-      CRM_Utils_File::sourceSQLFile($dsn, $file);
+      CRM_Utils_File::sourceSQLFile(NULL, $file);
     }
   }