Annotation of embedaddon/php/ext/pdo_mysql/tests/bug_50323.phpt, revision 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>