X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fdoctrine%2Fdbal%2Ftests%2FDoctrine%2FTests%2FTestUtil.php;fp=vendor%2Fdoctrine%2Fdbal%2Ftests%2FDoctrine%2FTests%2FTestUtil.php;h=8701c0a263a021ab1ff1845940705d8ec0210c4b;hb=8b04b2d11798dee4f3e1358e4f43e97a6df851f6;hp=0000000000000000000000000000000000000000;hpb=73568cf05a785a45f94ca3f2351d9e07bf917958;p=zf2.biz%2Fapplication_blanche.git diff --git a/vendor/doctrine/dbal/tests/Doctrine/Tests/TestUtil.php b/vendor/doctrine/dbal/tests/Doctrine/Tests/TestUtil.php new file mode 100644 index 0000000..8701c0a --- /dev/null +++ b/vendor/doctrine/dbal/tests/Doctrine/Tests/TestUtil.php @@ -0,0 +1,130 @@ +real database connection using the following parameters + * of the $GLOBALS array: + * + * 'db_type' : The name of the Doctrine DBAL database driver to use. + * 'db_username' : The username to use for connecting. + * 'db_password' : The password to use for connecting. + * 'db_host' : The hostname of the database to connect to. + * 'db_name' : The name of the database to connect to. + * 'db_port' : The port of the database to connect to. + * + * Usually these variables of the $GLOBALS array are filled by PHPUnit based + * on an XML configuration file. If no such parameters exist, an SQLite + * in-memory database is used. + * + * IMPORTANT: + * 1) Each invocation of this method returns a NEW database connection. + * 2) The database is dropped and recreated to ensure it's clean. + * + * @return \Doctrine\DBAL\Connection The database connection instance. + */ + public static function getConnection() + { + if (isset($GLOBALS['db_type'], $GLOBALS['db_username'], $GLOBALS['db_password'], + $GLOBALS['db_host'], $GLOBALS['db_name'], $GLOBALS['db_port']) && + isset($GLOBALS['tmpdb_type'], $GLOBALS['tmpdb_username'], $GLOBALS['tmpdb_password'], + $GLOBALS['tmpdb_host'], $GLOBALS['tmpdb_name'], $GLOBALS['tmpdb_port'])) { + $realDbParams = array( + 'driver' => $GLOBALS['db_type'], + 'user' => $GLOBALS['db_username'], + 'password' => $GLOBALS['db_password'], + 'host' => $GLOBALS['db_host'], + 'dbname' => $GLOBALS['db_name'], + 'port' => $GLOBALS['db_port'] + ); + $tmpDbParams = array( + 'driver' => $GLOBALS['tmpdb_type'], + 'user' => $GLOBALS['tmpdb_username'], + 'password' => $GLOBALS['tmpdb_password'], + 'host' => $GLOBALS['tmpdb_host'], + 'dbname' => $GLOBALS['tmpdb_name'], + 'port' => $GLOBALS['tmpdb_port'] + ); + + if (isset($GLOBALS['db_unix_socket'])) { + $realDbParams['unix_socket'] = $GLOBALS['db_unix_socket']; + } + + if (isset($GLOBALS['tmpdb_unix_socket'])) { + $tmpDbParams['unix_socket'] = $GLOBALS['tmpdb_unix_socket']; + } + + $realConn = \Doctrine\DBAL\DriverManager::getConnection($realDbParams); + + $platform = $realConn->getDatabasePlatform(); + + if ($platform->supportsCreateDropDatabase()) { + $dbname = $realConn->getDatabase(); + // Connect to tmpdb in order to drop and create the real test db. + $tmpConn = \Doctrine\DBAL\DriverManager::getConnection($tmpDbParams); + $realConn->close(); + + $tmpConn->getSchemaManager()->dropAndCreateDatabase($dbname); + + $tmpConn->close(); + } else { + $sm = $realConn->getSchemaManager(); + + /* @var $schema Schema */ + $schema = $sm->createSchema(); + $stmts = $schema->toDropSql($realConn->getDatabasePlatform()); + + foreach ($stmts AS $stmt) { + $realConn->exec($stmt); + } + } + + $conn = \Doctrine\DBAL\DriverManager::getConnection($realDbParams, null, null); + } else { + $params = array( + 'driver' => 'pdo_sqlite', + 'memory' => true + ); + if (isset($GLOBALS['db_path'])) { + $params['path'] = $GLOBALS['db_path']; + unlink($GLOBALS['db_path']); + } + $conn = \Doctrine\DBAL\DriverManager::getConnection($params); + } + + if (isset($GLOBALS['db_event_subscribers'])) { + $evm = $conn->getEventManager(); + foreach (explode(",", $GLOBALS['db_event_subscribers']) AS $subscriberClass) { + $subscriberInstance = new $subscriberClass(); + $evm->addEventSubscriber($subscriberInstance); + } + } + + return $conn; + } + + /** + * @return \Doctrine\DBAL\Connection + */ + public static function getTempConnection() + { + $tmpDbParams = array( + 'driver' => $GLOBALS['tmpdb_type'], + 'user' => $GLOBALS['tmpdb_username'], + 'password' => $GLOBALS['tmpdb_password'], + 'host' => $GLOBALS['tmpdb_host'], + 'dbname' => $GLOBALS['tmpdb_name'], + 'port' => $GLOBALS['tmpdb_port'] + ); + + // Connect to tmpdb in order to drop and create the real test db. + return \Doctrine\DBAL\DriverManager::getConnection($tmpDbParams); + } +}