Annotation of embedaddon/php/ext/pdo/tests/pdo_test.inc, revision 1.1.1.1

1.1       misho       1: <?php
                      2: # PDO test framework utilities
                      3: 
                      4: if (getenv('PDOTEST_DSN') === false) {
                      5:        $common = '';
                      6:        $append = false;
                      7:        foreach(file(dirname($_SERVER['PHP_SELF']).'/common.phpt') as $line) {
                      8:                if ($append) {
                      9:                        $common .= $line;
                     10:                } elseif (trim($line) == '--REDIRECTTEST--') {
                     11:                        $append = true;
                     12:                }
                     13:        }
                     14:        if (ini_get('magic_quotes_runtime')) $common = stripslashes($common);
                     15:        $conf = eval($common);
                     16:        foreach($conf['ENV'] as $n=>$v) putenv("$n=$v");
                     17: }
                     18: 
                     19: class PDOTest {
                     20:        // create an instance of the PDO driver, based on
                     21:        // the current environment
                     22:        static function factory($classname = 'PDO', $drop_test_tables = true) {
                     23:                $dsn = getenv('PDOTEST_DSN');
                     24:                $user = getenv('PDOTEST_USER');
                     25:                $pass = getenv('PDOTEST_PASS');
                     26:                $attr = getenv('PDOTEST_ATTR');
                     27:                if (is_string($attr) && strlen($attr)) {
                     28:                        $attr = unserialize($attr);
                     29:                } else {
                     30:                        $attr = null;
                     31:                }
                     32: 
                     33:                if ($user === false) $user = NULL;
                     34:                if ($pass === false) $pass = NULL;
                     35: 
                     36:                $db = new $classname($dsn, $user, $pass, $attr);
                     37: 
                     38:                if (!$db) {
                     39:                        die("Could not create PDO object (DSN=$dsn, user=$user)\n");
                     40:                }
                     41: 
                     42:                // clean up any crufty test tables we might have left behind
                     43:                // on a previous run
                     44:                static $test_tables = array(
                     45:                        'test',
                     46:                        'test2',
                     47:                        'classtypes'
                     48:                        );
                     49:                if ($drop_test_tables) {
                     50:                        foreach ($test_tables as $table) {
                     51:                                $db->exec("DROP TABLE $table");
                     52:                        }
                     53:                }
                     54: 
                     55:                $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
                     56:                $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
                     57:                $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
                     58:                return $db;
                     59:        }
                     60: 
                     61:        static function skip() {
                     62:                try {
                     63:                        $db = PDOTest::factory();
                     64:                } catch (PDOException $e) {
                     65:                        die("skip " . $e->getMessage());
                     66:                }
                     67:        }
                     68: 
                     69:        static function test_factory($file) {
                     70:                $data = file_get_contents($file);
                     71:                $data = preg_replace('/^.*--REDIRECTTEST--/s', '', $data);
                     72:                $config = eval($data);
                     73:                foreach ($config['ENV'] as $k => $v) {
                     74:                        putenv("$k=$v");
                     75:                }
                     76:                return self::factory();
                     77:        }
                     78: }
                     79: ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>