summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-04-29 09:02:13 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2019-04-29 09:04:33 +0200
commit9bf11045db09d87020c66c21e0a4df30f63c415d (patch)
tree1acbe834b0335a630b816a9c8433aa63577e4295
parentfc9cdb723bcd02dfdb83962ca1eda57ec4c10296 (diff)
downloadphp-git-9bf11045db09d87020c66c21e0a4df30f63c415d.tar.gz
Fix tests
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.
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt79
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt17
2 files changed, 7 insertions, 89 deletions
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
index b4609b1629..0000000000
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_uri-win32.phpt
+++ /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!
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
index 0b1cf3fe65..afb765c129 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_uri.phpt
@@ -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!