1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-23 03:05:48 +03:00
aports/community/php8-pecl-apcu/3d96f1aaf6e1eae26dd637a4795f8fee95b79c02.patch

310 lines
6 KiB
Diff

From 3d96f1aaf6e1eae26dd637a4795f8fee95b79c02 Mon Sep 17 00:00:00 2001
From: Nikita Popov <nikita.ppv@gmail.com>
Date: Thu, 10 Jun 2021 10:48:12 +0200
Subject: [PATCH] Fix tests for PHP 8.1
---
tests/apc_003b.phpt | 15 ++---
tests/apc_003b_legacy.phpt | 113 +++++++++++++++++++++++++++++++++++++
tests/apc_006_php73.phpt | 1 +
tests/apc_006_php81.phpt | 83 +++++++++++++++++++++++++++
tests/bug76145.phpt | 1 +
5 files changed, 206 insertions(+), 7 deletions(-)
create mode 100644 tests/apc_003b_legacy.phpt
create mode 100644 tests/apc_006_php81.phpt
diff --git a/tests/apc_003b.phpt b/tests/apc_003b.phpt
index 18b0d20..d7a18cc 100644
--- a/tests/apc_003b.phpt
+++ b/tests/apc_003b.phpt
@@ -2,7 +2,8 @@
APC: apcu_store/fetch with objects
--SKIPIF--
<?php
- require_once(dirname(__FILE__) . '/skipif.inc');
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (PHP_VERSION_ID < 80100) die("skip For PHP >= 8.1");
?>
--INI--
apc.enabled=1
@@ -68,42 +69,42 @@ object(foo)#%d (1) {
bool(true)
}
object(baz)#%d (6) {
- ["pri":"baz":private]=>
- string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "bar"
+ ["pri":"baz":private]=>
+ string(3) "baz"
["bar"]=>
bool(true)
["baz"]=>
bool(true)
}
object(baz)#%d (6) {
- ["pri":"baz":private]=>
- string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "mod"
+ ["pri":"baz":private]=>
+ string(3) "baz"
["bar"]=>
bool(true)
["baz"]=>
bool(true)
}
object(baz)#%d (6) {
- ["pri":"baz":private]=>
- string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "mod"
+ ["pri":"baz":private]=>
+ string(3) "baz"
["bar"]=>
bool(true)
["baz"]=>
diff --git a/tests/apc_003b_legacy.phpt b/tests/apc_003b_legacy.phpt
new file mode 100644
index 0000000..ca2fa08
--- /dev/null
+++ b/tests/apc_003b_legacy.phpt
@@ -0,0 +1,113 @@
+--TEST--
+APC: apcu_store/fetch with objects
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (PHP_VERSION_ID >= 80100) die("skip For PHP < 8.1");
+?>
+--INI--
+apc.enabled=1
+apc.enable_cli=1
+--FILE--
+<?php
+
+class foo { }
+$foo = new foo;
+var_dump($foo);
+apcu_store('foo',$foo);
+unset($foo);
+$bar = apcu_fetch('foo');
+var_dump($bar);
+$bar->a = true;
+var_dump($bar);
+
+class bar extends foo
+{
+ public $pub = 'bar';
+ protected $pro = 'bar';
+ private $pri = 'bar'; // we don't see this, we'd need php 5.1 new serialization
+
+ function __construct()
+ {
+ $this->bar = true;
+ }
+
+ function change()
+ {
+ $this->pri = 'mod';
+ }
+}
+
+class baz extends bar
+{
+ private $pri = 'baz';
+
+ function __construct()
+ {
+ parent::__construct();
+ $this->baz = true;
+ }
+}
+
+$baz = new baz;
+var_dump($baz);
+$baz->change();
+var_dump($baz);
+apcu_store('baz', $baz);
+unset($baz);
+var_dump(apcu_fetch('baz'));
+
+?>
+===DONE===
+--EXPECTF--
+object(foo)#%d (0) {
+}
+object(foo)#%d (0) {
+}
+object(foo)#%d (1) {
+ ["a"]=>
+ bool(true)
+}
+object(baz)#%d (6) {
+ ["pri":"baz":private]=>
+ string(3) "baz"
+ ["pub"]=>
+ string(3) "bar"
+ ["pro":protected]=>
+ string(3) "bar"
+ ["pri":"bar":private]=>
+ string(3) "bar"
+ ["bar"]=>
+ bool(true)
+ ["baz"]=>
+ bool(true)
+}
+object(baz)#%d (6) {
+ ["pri":"baz":private]=>
+ string(3) "baz"
+ ["pub"]=>
+ string(3) "bar"
+ ["pro":protected]=>
+ string(3) "bar"
+ ["pri":"bar":private]=>
+ string(3) "mod"
+ ["bar"]=>
+ bool(true)
+ ["baz"]=>
+ bool(true)
+}
+object(baz)#%d (6) {
+ ["pri":"baz":private]=>
+ string(3) "baz"
+ ["pub"]=>
+ string(3) "bar"
+ ["pro":protected]=>
+ string(3) "bar"
+ ["pri":"bar":private]=>
+ string(3) "mod"
+ ["bar"]=>
+ bool(true)
+ ["baz"]=>
+ bool(true)
+}
+===DONE===
diff --git a/tests/apc_006_php73.phpt b/tests/apc_006_php73.phpt
index 42bdfde..adc09b9 100644
--- a/tests/apc_006_php73.phpt
+++ b/tests/apc_006_php73.phpt
@@ -4,6 +4,7 @@ APC: apcu_store/fetch reference test
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
if (PHP_VERSION_ID < 70300) die('skip Only for PHP >= 7.3');
+if (PHP_VERSION_ID >= 80100) die('skip Only for PHP < 8.1');
?>
--INI--
apc.enabled=1
diff --git a/tests/apc_006_php81.phpt b/tests/apc_006_php81.phpt
new file mode 100644
index 0000000..94219dc
--- /dev/null
+++ b/tests/apc_006_php81.phpt
@@ -0,0 +1,83 @@
+--TEST--
+APC: apcu_store/fetch reference test
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . '/skipif.inc');
+if (PHP_VERSION_ID < 80100) die('skip Only for PHP >= 8.1');
+?>
+--INI--
+apc.enabled=1
+apc.enable_cli=1
+apc.serializer=php
+report_memleaks=0
+--FILE--
+<?php
+
+$a = 'a';
+$b = array($a);
+$c = array('c');
+$b[] = &$c;
+$b[] = &$c;
+$d = 'd';
+$b[] = &$d;
+$b[] = &$d;
+$b[] = &$d;
+$e = 'e';
+$b[] = $e;
+$b[] = $e;
+$f = array('f');
+$f[] = &$f;
+$b[] = &$f;
+apcu_store('test', $b);
+$x = apcu_fetch('test');
+debug_zval_dump($x);
+
+?>
+===DONE===
+--EXPECTF--
+array(9) refcount(2){
+ [0]=>
+ string(1) "a" interned
+ [1]=>
+ reference refcount(2) {
+ array(1) refcount(1){
+ [0]=>
+ string(1) "c" interned
+ }
+ }
+ [2]=>
+ reference refcount(2) {
+ array(1) refcount(1){
+ [0]=>
+ string(1) "c" interned
+ }
+ }
+ [3]=>
+ reference refcount(3) {
+ string(1) "d" interned
+ }
+ [4]=>
+ reference refcount(3) {
+ string(1) "d" interned
+ }
+ [5]=>
+ reference refcount(3) {
+ string(1) "d" interned
+ }
+ [6]=>
+ string(1) "e" interned
+ [7]=>
+ string(1) "e" interned
+ [8]=>
+ reference refcount(2) {
+ array(2) refcount(1){
+ [0]=>
+ string(1) "f" interned
+ [1]=>
+ reference refcount(2) {
+ *RECURSION*
+ }
+ }
+ }
+}
+===DONE===
diff --git a/tests/bug76145.phpt b/tests/bug76145.phpt
index 8959a44..56f7e10 100644
--- a/tests/bug76145.phpt
+++ b/tests/bug76145.phpt
@@ -3,6 +3,7 @@ Bug #76145: Data corruption reading from APCu while unserializing
--INI--
apc.enabled=1
apc.enable_cli=1
+error_reporting=E_ALL&~E_DEPRECATED
--FILE--
<?php