Annotation of embedaddon/php/ext/pdo/tests/pdo_test.inc, revision 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>