summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/t/php/construct.t
diff options
context:
space:
mode:
Diffstat (limited to 'debian/perl-framework/t/php/construct.t')
-rw-r--r--debian/perl-framework/t/php/construct.t66
1 files changed, 66 insertions, 0 deletions
diff --git a/debian/perl-framework/t/php/construct.t b/debian/perl-framework/t/php/construct.t
new file mode 100644
index 0000000..b047315
--- /dev/null
+++ b/debian/perl-framework/t/php/construct.t
@@ -0,0 +1,66 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+
+plan tests => 2, need_php4;
+
+## testing PHP OO bug (#7515)
+## php src:
+## <?php
+## class obj {
+## function method() {}
+## }
+##
+## function test($o_copy) {
+## $o_copy->root->set_in_copied_o=TRUE;
+## var_dump($o_copy);?><BR><?php }
+##
+## $o->root=new obj();
+##
+## ob_start();
+## var_dump($o);
+## $x=ob_get_contents();
+## ob_end_clean();
+##
+## $o->root->method();
+##
+## ob_start();
+## var_dump($o);
+## $y=ob_get_contents();
+## ob_end_clean();
+##
+## // $o->root->method() makes ob_get_contents() have a '&' in front of object
+## // so this does not work.
+## // echo ($x==$y) ? 'success':'failure';
+##
+## echo "x = $x";
+## echo "y = $y";
+## ?>
+##
+## output should be:
+## x = object(stdClass)(1) {
+## ["root"]=>
+## object(obj)(0) {
+## }
+## }
+## y = object(stdClass)(1) {
+## ["root"]=>
+## &object(obj)(0) {
+## }
+## }
+
+my $result = GET_BODY "/php/construct.php";
+
+## get rid of newlines to make compairon easier.
+$result =~ s/\n//g;
+
+my ($x, $y);
+if ($result =~ /x = (.*)y = (.*)/) {
+ $x = $1;
+ $y = $2;
+}
+
+ok $x eq "object(stdClass)(1) { [\"root\"]=> object(obj)(0) { }}";
+ok $y eq "object(stdClass)(1) { [\"root\"]=> &object(obj)(0) { }}";