CiviTest - Eliminate global mysql variables. Simplify bootstrap.php.
authorTim Otten <totten@civicrm.org>
Fri, 29 Jan 2016 05:41:37 +0000 (21:41 -0800)
committerTim Otten <totten@civicrm.org>
Tue, 2 Feb 2016 04:56:23 +0000 (21:56 -0700)
tests/phpunit/CiviTest/CiviUnitTestCase.php
tests/phpunit/CiviTest/bootstrap.php
tests/phpunit/Utils.php

index 2e7fbf1f09d9261e3cdea8acb1c24680508b250d..e3369d995bc3705f1c117f837aeccd2142f49f4d 100755 (executable)
@@ -159,19 +159,10 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
     // we need full error reporting
     error_reporting(E_ALL & ~E_NOTICE);
 
-    if (!empty($GLOBALS['mysql_db'])) {
-      self::$_dbName = $GLOBALS['mysql_db'];
-    }
-    else {
-      self::$_dbName = 'civicrm_tests_dev';
-    }
+    self::$_dbName = self::getDBName();
 
     //  create test database
-    self::$utils = new Utils($GLOBALS['mysql_host'],
-      $GLOBALS['mysql_port'],
-      $GLOBALS['mysql_user'],
-      $GLOBALS['mysql_pass']
-    );
+    self::$utils = new Utils(CIVICRM_DSN);
 
     // also load the class loader
     require_once 'CRM/Core/ClassLoader.php';
@@ -210,7 +201,12 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
    * @return string
    */
   public static function getDBName() {
-    $dbName = !empty($GLOBALS['mysql_db']) ? $GLOBALS['mysql_db'] : 'civicrm_tests_dev';
+    static $dbName = NULL;
+    if ($dbName === NULL ) {
+      require_once "DB.php";
+      $dsninfo = DB::parseDSN(CIVICRM_DSN);
+      $dbName = $dsninfo['database'];
+    }
     return $dbName;
   }
 
@@ -527,11 +523,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
    *  FIXME: Maybe a better way to do it
    */
   public function foreignKeyChecksOff() {
-    self::$utils = new Utils($GLOBALS['mysql_host'],
-      $GLOBALS['mysql_port'],
-      $GLOBALS['mysql_user'],
-      $GLOBALS['mysql_pass']
-    );
+    self::$utils = new Utils(CIVICRM_DSN);
     $dbName = self::getDBName();
     $query = "USE {$dbName};" . "SET foreign_key_checks = 1";
     if (self::$utils->do_query($query) === FALSE) {
index 2dd6a2c442982d054e43497a26fb2bce04f7c26b..84b52d71635d8ac90a21fc2b85fc4b7fffc80a0b 100644 (file)
@@ -18,15 +18,6 @@ ini_set('memory_limit', '2G');
 define('CIVICRM_TEST', 1);
 eval(cv('php:boot --level=settings', 'phpcode'));
 
-// This is exists to support CiviUnitTestCase::populateDB(). That doesn't make it a good idea.
-require_once "DB.php";
-$dsninfo = DB::parseDSN(CIVICRM_DSN);
-$GLOBALS['mysql_host'] = $dsninfo['hostspec'];
-$GLOBALS['mysql_port'] = @$dsninfo['port'];
-$GLOBALS['mysql_user'] = $dsninfo['username'];
-$GLOBALS['mysql_pass'] = $dsninfo['password'];
-$GLOBALS['mysql_db'] = $dsninfo['database'];
-
 // ------------------------------------------------------------------------------
 
 /**
index 1e31961069e73f23aa6662eb2aa6868bba770fd0..30e1def8a80e76da47c7ced0fd820f87c80ac75b 100644 (file)
@@ -44,12 +44,15 @@ class Utils {
 
   /**
    *  Construct an object for this database.
-   * @param $host
-   * @param $port
-   * @param $user
-   * @param $pass
    */
-  public function __construct($host, $port, $user, $pass) {
+  public function __construct($dsn) {
+    require_once "DB.php";
+    $dsninfo = DB::parseDSN($dsn);
+    $host = $dsninfo['hostspec'];
+    $port = @$dsninfo['port'];
+    $user = $dsninfo['username'];
+    $pass = $dsninfo['password'];
+
     try {
       $this->pdo = new PDO("mysql:host={$host}" . ($port ? ";port=$port" : ""),
         $user, $pass,