From 3d96f1aaf6e1eae26dd637a4795f8fee95b79c02 Mon Sep 17 00:00:00 2001 From: Nikita Popov 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-- = 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-- += 80100) die("skip For PHP < 8.1"); +?> +--INI-- +apc.enabled=1 +apc.enable_cli=1 +--FILE-- +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 = 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-- += 8.1'); +?> +--INI-- +apc.enabled=1 +apc.enable_cli=1 +apc.serializer=php +report_memleaks=0 +--FILE-- + +===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--