summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwynne Raskind <gwynne@php.net>2008-03-07 23:20:54 +0000
committerGwynne Raskind <gwynne@php.net>2008-03-07 23:20:54 +0000
commit8bbef4f940c4df2b319196a8a3d2c6110ac0782b (patch)
tree50b91f0d9452c7491388b6a1ef55b15813a8aefa
parent3e99d5cc5b1c3f47e3c65d39d73cdd1943d9782f (diff)
downloadphp-git-8bbef4f940c4df2b319196a8a3d2c6110ac0782b.tar.gz
Forgot one file in last commit
-rw-r--r--ext/session/tests/bug32330.phpt85
1 files changed, 85 insertions, 0 deletions
diff --git a/ext/session/tests/bug32330.phpt b/ext/session/tests/bug32330.phpt
new file mode 100644
index 0000000000..c0d3370e01
--- /dev/null
+++ b/ext/session/tests/bug32330.phpt
@@ -0,0 +1,85 @@
+--TEST--
+Bug #32330 (session_destroy, "Failed to initialize storage module", custom session handler)
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--INI--
+session.use_trans_sid=0
+session.use_cookies=1
+session.name=sid
+session.save_path=/
+session.gc_probability=1
+session.gc_divisor=1
+--FILE--
+<?php
+error_reporting(E_ALL);
+
+function sOpen($path, $name)
+{
+ echo "open: path = {$path}, name = {$name}\n";
+ return TRUE;
+}
+
+function sClose()
+{
+ echo "close\n";
+ return TRUE;
+}
+
+function sRead($id)
+{
+ echo "read: id = {$id}\n";
+ return '';
+}
+
+function sWrite($id, $data)
+{
+ echo "write: id = {$id}, data = {$data}\n";
+ return TRUE;
+}
+
+function sDestroy($id)
+{
+ echo "destroy: id = {$id}\n";
+ return TRUE;
+}
+
+function sGC($maxlifetime)
+{
+ echo "gc: maxlifetime = {$maxlifetime}\n";
+ return TRUE;
+}
+
+session_set_save_handler( 'sOpen', 'sClose', 'sRead', 'sWrite', 'sDestroy', 'sGC' );
+
+// without output buffering, the debug messages will cause all manner of warnings
+ob_start();
+
+session_start();
+$_SESSION['A'] = 'B';
+session_write_close();
+
+session_start();
+$_SESSION['C'] = 'D';
+session_destroy();
+
+session_start();
+$_SESSION['E'] = 'F';
+// Don't try to destroy this time!
+
+?>
+--EXPECTF--
+open: path = /, name = sid
+read: id = %s
+gc: maxlifetime = %d
+write: id = %s, data = A|s:1:"B";
+close
+open: path = /, name = sid
+read: id = %s
+gc: maxlifetime = %d
+destroy: id = %s
+close
+open: path = /, name = sid
+read: id = %s
+gc: maxlifetime = %d
+write: id = %s, data = E|s:1:"F";
+close