]> granicus.if.org Git - php/commitdiff
fork test
authorAnatol Belski <ab@php.net>
Wed, 19 Aug 2015 23:07:57 +0000 (01:07 +0200)
committerAnatol Belski <ab@php.net>
Thu, 20 Aug 2015 11:32:29 +0000 (13:32 +0200)
ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt [new file with mode: 0644]
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
new file mode 100644 (file)
index 0000000..b4609b1
--- /dev/null
@@ -0,0 +1,79 @@
+--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 d5dd3e67f98e3bf675c1c0de3ba91f9384d93aa3..0b1cf3fe65d5974b4e4de971feae98067298324a 100644 (file)
@@ -2,6 +2,9 @@
 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();