summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Wendel <uw@php.net>2007-07-23 12:34:09 +0000
committerUlf Wendel <uw@php.net>2007-07-23 12:34:09 +0000
commit613947afc62633f8ebcec5b9649fd846a7a83e88 (patch)
treefcf11f493bd630b0ec1dbef3f568fcb98ea45c4c
parentfe8c5d1243a47a5c6be886447f82a241f67ed550 (diff)
downloadphp-git-613947afc62633f8ebcec5b9649fd846a7a83e88.tar.gz
Tests which verify that you really cannot clone any of the mysqli
objects. Technically it might be possible to tweak ext/mysqli and make the objects cloneable - tough, we haven't checked in depth. So, if one is interested, raise a discussion.
-rw-r--r--ext/mysqli/tests/mysqli_driver_unclonable.phpt13
-rw-r--r--ext/mysqli/tests/mysqli_result_unclonable.phpt21
-rw-r--r--ext/mysqli/tests/mysqli_stmt_unclonable.phpt22
-rw-r--r--ext/mysqli/tests/mysqli_unclonable.phpt20
-rw-r--r--ext/mysqli/tests/mysqli_warning_unclonable.phpt36
5 files changed, 112 insertions, 0 deletions
diff --git a/ext/mysqli/tests/mysqli_driver_unclonable.phpt b/ext/mysqli/tests/mysqli_driver_unclonable.phpt
new file mode 100644
index 0000000000..0e2438eef9
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_driver_unclonable.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Trying to clone mysqli_driver object
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifemb.inc'); ?>
+--FILE--
+<?php
+ $driver = new mysqli_driver;
+ $driver_clone = clone $driver;
+ print "done!";
+?>
+--EXPECTF--
+Fatal error: Trying to clone an uncloneable object of class mysqli_driver in %s on line %d \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_result_unclonable.phpt b/ext/mysqli/tests/mysqli_result_unclonable.phpt
new file mode 100644
index 0000000000..9820c785e6
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_result_unclonable.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Trying to clone mysqli_result object
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifemb.inc'); ?>
+--FILE--
+<?php
+ include "connect.inc";
+
+ if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
+ if (!($res = mysqli_query($link, "SELECT 'good' AS morning")))
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ $res_clone = clone $res;
+ print "done!";
+?>
+--EXPECTF--
+Fatal error: Trying to clone an uncloneable object of class mysqli_result in %s on line %d \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_stmt_unclonable.phpt b/ext/mysqli/tests/mysqli_stmt_unclonable.phpt
new file mode 100644
index 0000000000..13c3da7674
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_stmt_unclonable.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Trying to clone mysqli_stmt object
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifemb.inc'); ?>
+--FILE--
+<?php
+ include "connect.inc";
+
+ if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
+ if (!$stmt = mysqli_stmt_init($link))
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ /* no, still bails out */
+ $stmt_clone = clone $stmt;
+ print "done!";
+?>
+--EXPECTF--
+Fatal error: Trying to clone an uncloneable object of class mysqli_stmt in %s on line %d \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_unclonable.phpt b/ext/mysqli/tests/mysqli_unclonable.phpt
new file mode 100644
index 0000000000..f7992d71e9
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_unclonable.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Trying to clone mysqli object
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifemb.inc'); ?>
+--FILE--
+<?php
+ include "connect.inc";
+
+ if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
+ $link_clone = clone $link;
+ mysqli_close($link);
+
+ print "done!";
+?>
+--EXPECTF--
+Fatal error: Trying to clone an uncloneable object of class mysqli in %s on line %d \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_warning_unclonable.phpt b/ext/mysqli/tests/mysqli_warning_unclonable.phpt
new file mode 100644
index 0000000000..9a41c75fef
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_warning_unclonable.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Trying to clone mysqli_warning object
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('connect.inc');
+if (!$TEST_EXPERIMENTAL)
+ die("skip - experimental (= unsupported) feature");
+?>
+--FILE--
+<?php
+ include "connect.inc";
+
+ if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
+ if (!mysqli_query($link, "DROP TABLE IF EXISTS test"))
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ if (!mysqli_query($link, "CREATE TABLE test (id SMALLINT)"))
+ printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ if (!mysqli_query($link, "INSERT INTO test (id) VALUES (1000000)"))
+ printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ if (!is_object($warning = mysqli_get_warnings($link)) || 'mysqli_warning' != get_class($warning)) {
+ printf("[005] Expecting object/mysqli_warning, got %s/%s\n", gettype($tmp), (is_object($tmp) ? var_dump($tmp, true) : $tmp));
+ }
+
+ $warning_clone = clone $warning;
+ print "done!";
+?>
+--EXPECTF--
+Fatal error: Trying to clone an uncloneable object of class mysqli_warning in %s on line %d \ No newline at end of file