]> granicus.if.org Git - php/commitdiff
Fix tests
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 29 Apr 2019 07:02:13 +0000 (09:02 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 29 Apr 2019 07:04:33 +0000 (09:04 +0200)
These tests are obviously meant to test successful and failing uri:
DSNs, but did not pass proper file:// URIs, so actually ended up
testing for invalid data source URIs twice.  We fix this, and adjust
the expectations accordingly.

We also unfork the -win32 variant, since both test cases are almost
identical, and the expected error message may be either one.

ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt [deleted file]
ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt

diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt
deleted file mode 100644 (file)
index b4609b1..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
---TEST--
-MySQL PDO->__construct() - URI
---SKIPIF--
-<?php
-if (substr(PHP_OS, 0, 3) != 'WIN') {
-    die('skip only for Windows');
-}
-require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
-require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-MySQLPDOTest::skip();
-?>
---FILE--
-<?php
-       require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
-
-       try {
-
-               if ($tmp = MySQLPDOTest::getTempDir()) {
-
-                       $file = $tmp . DIRECTORY_SEPARATOR . 'pdomuri.tst';
-                       $dsn = MySQLPDOTest::getDSN();
-                       $user = PDO_MYSQL_TEST_USER;
-                       $pass = PDO_MYSQL_TEST_PASS;
-                       $uri = sprintf('uri:file:%s', $file);
-
-                       if ($fp = @fopen($file, 'w')) {
-                               // ok, great we can create a file with a DSN in it
-                               fwrite($fp, $dsn);
-                               fclose($fp);
-                               clearstatcache();
-                               assert(file_exists($file));
-                               try {
-                                       $db = new PDO($uri, $user, $pass);
-                               } catch (PDOException $e) {
-                                       printf("[002] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), %s\n",
-                                               $uri, $dsn,
-                                               $file, filesize($file), file_get_contents($file),
-                                               $e->getMessage());
-                               }
-                               unlink($file);
-                       }
-
-                       if ($fp = @fopen($file, 'w')) {
-                               fwrite($fp, sprintf('mysql:dbname=letshopeinvalid;%s%s',
-                                       chr(0), $dsn));
-                               fclose($fp);
-                               clearstatcache();
-                               assert(file_exists($file));
-                               try {
-                                       $db = new PDO($uri, $user, $pass);
-                               } catch (PDOException $e) {
-                                       printf("[003] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), chr(0) test, %s\n",
-                                       $uri, $dsn,
-                                       $file, filesize($file), file_get_contents($file),
-                                       $e->getMessage());
-                               }
-                               unlink($file);
-                       }
-
-               }
-
-               /* TODO: safe mode */
-
-       } catch (PDOException $e) {
-               printf("[001] %s, [%s] %s\n",
-                       $e->getMessage(),
-                       (is_object($db)) ? $db->errorCode() : 'n/a',
-                       (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
-       }
-
-       print "done!";
-?>
---EXPECTF--
-Warning: PDO::__construct(file:%spdomuri.tst): failed to open stream: Invalid argument in %s on line %d
-[002] URI=uri:file:%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=%s'), invalid data source URI
-
-Warning: PDO::__construct(file:%spdomuri.tst): failed to open stream: Invalid argument in %s on line %d
-[003] URI=uri:file:%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=letshopeinvalid%s'), chr(0) test, invalid data source URI
-done!
index 0b1cf3fe65d5974b4e4de971feae98067298324a..afb765c129de3e0cf9ac616c50e78b2bb3e96caf 100644 (file)
@@ -2,9 +2,6 @@
 MySQL PDO->__construct() - URI
 --SKIPIF--
 <?php
-if (substr(PHP_OS, 0, 3) == 'WIN') {
-    die('skip not for Windows');
-}
 require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
 require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
 MySQLPDOTest::skip();
@@ -21,7 +18,7 @@ MySQLPDOTest::skip();
                        $dsn = MySQLPDOTest::getDSN();
                        $user = PDO_MYSQL_TEST_USER;
                        $pass = PDO_MYSQL_TEST_PASS;
-                       $uri = sprintf('uri:file:%s', $file);
+                       $uri = sprintf('uri:file://%s', (substr(PHP_OS, 0, 3) == 'WIN' ? str_replace('\\', '/', $file) : $file));
 
                        if ($fp = @fopen($file, 'w')) {
                                // ok, great we can create a file with a DSN in it
@@ -49,10 +46,14 @@ MySQLPDOTest::skip();
                                try {
                                        $db = new PDO($uri, $user, $pass);
                                } catch (PDOException $e) {
+                                       $expected = array(
+                                               "SQLSTATE[HY000] [1049] Unknown database 'letshopeinvalid'",
+                                               "SQLSTATE[HY000] [2002] No such file or directory"
+                                       );
                                        printf("[003] URI=%s, DSN=%s, File=%s (%d bytes, '%s'), chr(0) test, %s\n",
                                        $uri, $dsn,
                                        $file, filesize($file), file_get_contents($file),
-                                       $e->getMessage());
+                                       (in_array($e->getMessage(), $expected) ? 'EXPECTED ERROR' : $e->getMessage()));
                                }
                                unlink($file);
                        }
@@ -71,9 +72,5 @@ MySQLPDOTest::skip();
        print "done!";
 ?>
 --EXPECTF--
-Warning: PDO::__construct(file:/tmp/pdomuri.tst): failed to open stream: No such file or directory in %s on line %d
-[002] URI=uri:file:%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=%s'), invalid data source URI
-
-Warning: PDO::__construct(file:/tmp/pdomuri.tst): failed to open stream: No such file or directory in %s on line %d
-[003] URI=uri:file:%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=letshopeinvalid%s'), chr(0) test, invalid data source URI
+[003] URI=uri:file://%spdomuri.tst, DSN=mysql%sdbname=%s, File=%spdomuri.tst (%d bytes, 'mysql%sdbname=letshopeinvalid%s'), chr(0) test, EXPECTED ERROR
 done!