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>