Annotation of embedaddon/php/ext/pdo_mysql/tests/bug_50323.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #50323 (No ability to connect to database named 't;', no chance to escape semicolon)
                      3: --SKIPIF--
                      4: <?php
                      5: if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
                      6: require dirname(__FILE__) . '/config.inc';
                      7: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
                      8: PDOTest::skip();
                      9: ?>
                     10: --FILE--
                     11: <?php
                     12: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
                     13: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
                     14: 
                     15:     function changeDSN($original, $new_options) {
                     16:         $old_options = array();
                     17:         $dsn = substr($original,
                     18:                 strpos($original, ':') + 1,
                     19:                 strlen($original));
                     20: 
                     21:         // no real parser - any excotic setting can fool us
                     22:         $parts = explode(';', $dsn);
                     23:         foreach ($parts as $k => $v) {
                     24:             $tmp = explode('=', $v);
                     25:             if (count($tmp) == 2)
                     26:                     $old_options[$tmp[0]] = $tmp[1];
                     27:         }
                     28: 
                     29:         $options = $old_options;
                     30:         foreach ($new_options as $k => $v)
                     31:             $options[$k] = $v;
                     32: 
                     33:         $dsn = 'mysql:';
                     34:         foreach ($options as $k => $v)
                     35:             $dsn .= sprintf('%s=%s;', $k, $v);
                     36: 
                     37:         $dsn = substr($dsn, 0, strlen($dsn) -1);
                     38: 
                     39:         return $dsn;
                     40:     }
                     41: 
                     42: 
                     43: if (1 === @$db->exec('CREATE DATABASE `crazy;dbname`')) {
                     44:     $dsn = changeDSN(getenv('PDOTEST_DSN'), array('dbname' => 'crazy;;dbname'));
                     45:     $user = getenv('PDOTEST_USER');
                     46:     $pass = getenv('PDOTEST_PASS');
                     47:     
                     48:     new PDO($dsn, $user, $pass);
                     49: }
                     50: echo 'done!';
                     51: ?>
                     52: --CLEAN--
                     53: <?php
                     54: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
                     55: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
                     56: 
                     57: @$db->exec('DROP DATABASE IF EXISTS `crazy;dbname`');
                     58: ?>
                     59: --EXPECTF--
                     60: done!
                     61: 

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