CiviTest - Configure autoloader for test classes
authorTim Otten <totten@civicrm.org>
Fri, 29 Jan 2016 06:14:07 +0000 (22:14 -0800)
committerTim Otten <totten@civicrm.org>
Tue, 2 Feb 2016 04:56:23 +0000 (21:56 -0700)
CRM/Core/ClassLoader.php
tests/phpunit/CiviTest/CiviSeleniumTestCase.php
tests/phpunit/CiviTest/CiviTestPdoUtils.php [moved from tests/phpunit/Utils.php with 99% similarity]
tests/phpunit/CiviTest/CiviUnitTestCase.php

index 3002716fbebc5b91ece2b7633292f359acaed8d2..fb91ca0791d986b9d2a62a0b260883bb33868eba 100644 (file)
@@ -42,6 +42,14 @@ class CRM_Core_ClassLoader {
    */
   private static $_singleton = NULL;
 
+  /**
+   * The classes in CiviTest have ucky, non-standard naming.
+   *
+   * @var array
+   *   Array(string $className => string $filePath).
+   */
+  private $civiTestClasses;
+
   /**
    * @param bool $force
    *
@@ -63,6 +71,23 @@ class CRM_Core_ClassLoader {
    */
   protected function __construct() {
     $this->_registered = FALSE;
+    $this->civiTestClasses = array(
+      'CiviCaseTestCase',
+      'CiviDBAssert',
+      'CiviMailUtils',
+      'CiviReportTestCase',
+      'CiviSeleniumTestCase',
+      'CiviTestPdoUtils',
+      'CiviTestSuite',
+      'CiviUnitTestCase',
+      'Contact',
+      'ContributionPage',
+      'Custom',
+      'Event',
+      'Membership',
+      'Participant',
+      'PaypalPro',
+    );
   }
 
   /**
@@ -170,6 +195,20 @@ class CRM_Core_ClassLoader {
         require_once $file;
       }
     }
+    elseif (in_array($class, $this->civiTestClasses)) {
+      $file = "tests/phpunit/CiviTest/{$class}.php";
+      if (FALSE != stream_resolve_include_path($file)) {
+        require_once $file;
+      }
+    }
+    elseif ($class === 'CiviSeleniumSettings') {
+      if (!empty($GLOBALS['_CV'])) {
+        require_once 'tests/phpunit/CiviTest/CiviSeleniumSettings.auto.php';
+      }
+      elseif (CRM_Utils_File::isIncludable('tests/phpunit/CiviTest/CiviSeleniumSettings.php')) {
+        require_once 'tests/phpunit/CiviTest/CiviSeleniumSettings.php';
+      }
+    }
   }
 
 }
index 98f32c166969ace9c9cc62d938c086cce6ae248a..10fc2ca0442215f61463c7a64d9c7830c69ec9a8 100644 (file)
@@ -59,15 +59,6 @@ class CiviSeleniumTestCase extends PHPUnit_Extensions_SeleniumTestCase {
     parent::__construct($name, $data, $dataName, $browser);
     $this->loggedInAs = NULL;
 
-    if (!empty($GLOBALS['_CV'])) {
-      require_once 'CiviSeleniumSettings.auto.php';
-    }
-    elseif (CRM_Utils_File::isIncludable('CiviSeleniumSettings.php')) {
-      require_once 'CiviSeleniumSettings.php';
-    }
-    else {
-      throw new RuntimeException("Cannot initialize Selenium test. Please setup CiviSeleniumSettings.php or configure \"cv\".");
-    }
     $this->settings = new CiviSeleniumSettings();
     if (property_exists($this->settings, 'serverStartupTimeOut') && $this->settings->serverStartupTimeOut) {
       global $CiviSeleniumTestCase_polled;
similarity index 99%
rename from tests/phpunit/Utils.php
rename to tests/phpunit/CiviTest/CiviTestPdoUtils.php
index 30e1def8a80e76da47c7ced0fd820f87c80ac75b..eaccb7a8d5e8a0bcb29b4fd2f415d667c96e1ec3 100644 (file)
@@ -34,7 +34,7 @@
  *  Utility functions
  * @package   CiviCRM
  */
-class Utils {
+class CiviTestPdoUtils {
 
   /**
    *  PDO for the database.
index 8016a45a178e6cdc5ac0929e5d6694cccaa7c74d..b6e06ff0da46fae7982a48a9dc093fcf43ce19e9 100755 (executable)
@@ -31,7 +31,6 @@ use Civi\Payment\System;
 /**
  *  Include class definitions
  */
-require_once 'tests/phpunit/Utils.php';
 require_once 'api/api.php';
 require_once 'CRM/Financial/BAO/FinancialType.php';
 define('API_LATEST_VERSION', 3);
@@ -162,7 +161,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
     self::$_dbName = self::getDBName();
 
     //  create test database
-    self::$utils = new Utils(CIVICRM_DSN);
+    self::$utils = new CiviTestPdoUtils(CIVICRM_DSN);
 
     // also load the class loader
     require_once 'CRM/Core/ClassLoader.php';
@@ -202,7 +201,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
    */
   public static function getDBName() {
     static $dbName = NULL;
-    if ($dbName === NULL ) {
+    if ($dbName === NULL) {
       require_once "DB.php";
       $dsninfo = DB::parseDSN(CIVICRM_DSN);
       $dbName = $dsninfo['database'];
@@ -2755,7 +2754,6 @@ AND    ( TABLE_NAME LIKE 'civicrm_value_%' )
    *   'template_path' Set to TRUE to use the default, FALSE or "" to disable support, or a string path to use another path
    */
   public function customDirectories($customDirs) {
-    require_once 'CRM/Core/Config.php';
     $config = CRM_Core_Config::singleton();
 
     if (empty($customDirs['php_path']) || $customDirs['php_path'] === FALSE) {
@@ -3419,8 +3417,6 @@ AND    ( TABLE_NAME LIKE 'civicrm_value_%' )
    */
   protected function createParticipantWithContribution() {
     // creating price set, price field
-    require_once 'CiviTest/Event.php';
-    require_once 'CiviTest/Contact.php';
     $this->_contactId = Contact::createIndividual();
     $this->_eventId = Event::create($this->_contactId);
     $eventParams = array(