Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / dbal / tests / Doctrine / Tests / DbalFunctionalTestCase.php
diff --git a/vendor/doctrine/dbal/tests/Doctrine/Tests/DbalFunctionalTestCase.php b/vendor/doctrine/dbal/tests/Doctrine/Tests/DbalFunctionalTestCase.php
new file mode 100644 (file)
index 0000000..27dd149
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+namespace Doctrine\Tests;
+
+class DbalFunctionalTestCase extends DbalTestCase
+{
+    /**
+     * Shared connection when a TestCase is run alone (outside of it's functional suite)
+     *
+     * @var \Doctrine\DBAL\Connection
+     */
+    private static $_sharedConn;
+
+    /**
+     * @var \Doctrine\DBAL\Connection
+     */
+    protected $_conn;
+
+    /**
+     * @var \Doctrine\DBAL\Logging\DebugStack
+     */
+    protected $_sqlLoggerStack;
+
+    protected function resetSharedConn()
+    {
+        if (self::$_sharedConn) {
+            self::$_sharedConn->close();
+            self::$_sharedConn = null;
+        }
+    }
+
+    protected function setUp()
+    {
+        if ( ! isset(self::$_sharedConn)) {
+            self::$_sharedConn = TestUtil::getConnection();
+        }
+        $this->_conn = self::$_sharedConn;
+
+        $this->_sqlLoggerStack = new \Doctrine\DBAL\Logging\DebugStack();
+        $this->_conn->getConfiguration()->setSQLLogger($this->_sqlLoggerStack);
+    }
+
+    protected function onNotSuccessfulTest(\Exception $e)
+    {
+        if ($e instanceof \PHPUnit_Framework_AssertionFailedError) {
+            throw $e;
+        }
+
+        if(isset($this->_sqlLoggerStack->queries) && count($this->_sqlLoggerStack->queries)) {
+            $queries = "";
+            $i = count($this->_sqlLoggerStack->queries);
+            foreach (array_reverse($this->_sqlLoggerStack->queries) AS $query) {
+                $params = array_map(function($p) { if (is_object($p)) return get_class($p); else return "'".$p."'"; }, $query['params'] ?: array());
+                $queries .= ($i+1).". SQL: '".$query['sql']."' Params: ".implode(", ", $params).PHP_EOL;
+                $i--;
+            }
+
+            $trace = $e->getTrace();
+            $traceMsg = "";
+            foreach($trace AS $part) {
+                if(isset($part['file'])) {
+                    if(strpos($part['file'], "PHPUnit/") !== false) {
+                        // Beginning with PHPUnit files we don't print the trace anymore.
+                        break;
+                    }
+
+                    $traceMsg .= $part['file'].":".$part['line'].PHP_EOL;
+                }
+            }
+
+            $message = "[".get_class($e)."] ".$e->getMessage().PHP_EOL.PHP_EOL."With queries:".PHP_EOL.$queries.PHP_EOL."Trace:".PHP_EOL.$traceMsg;
+
+            throw new \Exception($message, (int)$e->getCode(), $e);
+        }
+        throw $e;
+    }
+}