Commit 3fa8c166bd0 for php.net

commit 3fa8c166bd04c4d6414212fb32703e35d78f78c9
Author: NickSdot <32384907+NickSdot@users.noreply.github.com>
Date:   Tue Aug 4 22:59:20 2026 +0700

    ext/zip: applied fixers to improve test robustness (#23034)

diff --git a/ext/zip/tests/ZipArchive_closeString_error.phpt b/ext/zip/tests/ZipArchive_closeString_error.phpt
index d5dca14a97f..34309078727 100644
--- a/ext/zip/tests/ZipArchive_closeString_error.phpt
+++ b/ext/zip/tests/ZipArchive_closeString_error.phpt
@@ -11,7 +11,7 @@
 try {
 	$zip->closeString();
 } catch (Error $e) {
-	echo $e->getMessage() . "\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }

 echo "2.\n";
@@ -21,7 +21,7 @@
 try {
 	$zip->closeString();
 } catch (Error $e) {
-	echo $e->getMessage() . "\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }

 echo "3.\n";
@@ -31,17 +31,17 @@
 try {
 	$zip->closeString();
 } catch (Error $e) {
-	echo $e->getMessage() . "\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }

 ?>
 --EXPECT--
 1.
 bool(true)
-ZipArchive::closeString can only be called on an archive opened with ZipArchive::openString
+Error: ZipArchive::closeString can only be called on an archive opened with ZipArchive::openString
 2.
 Not a zip archive
-Invalid or uninitialized Zip object
+ValueError: Invalid or uninitialized Zip object
 3.
 string
-Invalid or uninitialized Zip object
+ValueError: Invalid or uninitialized Zip object
diff --git a/ext/zip/tests/bug72434.phpt b/ext/zip/tests/bug72434.phpt
index e2ccebad375..842ad2aa2b8 100644
--- a/ext/zip/tests/bug72434.phpt
+++ b/ext/zip/tests/bug72434.phpt
@@ -10,8 +10,8 @@
     $unserialized_payload = unserialize($serialized_payload);
     var_dump($unserialized_payload);
 } catch (Exception $e) {
-    echo $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Unserialization of 'ZipArchive' is not allowed, override __serialize() and __unserialize() to implement it
+Exception: Unserialization of 'ZipArchive' is not allowed, override __serialize() and __unserialize() to implement it
diff --git a/ext/zip/tests/bug_gh8781.phpt b/ext/zip/tests/bug_gh8781.phpt
index 31fac9bc613..196e11630ef 100644
--- a/ext/zip/tests/bug_gh8781.phpt
+++ b/ext/zip/tests/bug_gh8781.phpt
@@ -16,4 +16,3 @@
 --EXPECT--
 bool(true)
 bool(false)
-
diff --git a/ext/zip/tests/doubleclose.phpt b/ext/zip/tests/doubleclose.phpt
index 611a3b713f8..6ea24e270f5 100644
--- a/ext/zip/tests/doubleclose.phpt
+++ b/ext/zip/tests/doubleclose.phpt
@@ -14,7 +14,7 @@
 try {
     var_dump(zip_close($zip));
 } catch (TypeError $e) {
-    echo $e->getMessage(), "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }

 echo "Object\n";
@@ -27,7 +27,7 @@
     try {
         $zip->close();
     } catch (ValueError $err) {
-        echo $err->getMessage(), PHP_EOL;
+        echo $err::class, ': ', $err->getMessage(), PHP_EOL;
     }
 } else {
     die("Failure");
@@ -44,8 +44,8 @@
 NULL

 Deprecated: Function zip_close() is deprecated since 8.0, use ZipArchive::close() instead in %s on line %d
-zip_close(): supplied resource is not a valid Zip Directory resource
+TypeError: zip_close(): supplied resource is not a valid Zip Directory resource
 Object
 bool(true)
-Invalid or uninitialized Zip object
+ValueError: Invalid or uninitialized Zip object
 Done
diff --git a/ext/zip/tests/gh19932.phpt b/ext/zip/tests/gh19932.phpt
index 760fa1c9e76..766ed38b991 100644
--- a/ext/zip/tests/gh19932.phpt
+++ b/ext/zip/tests/gh19932.phpt
@@ -22,4 +22,3 @@
 ?>
 --EXPECT--
 OK
-
diff --git a/ext/zip/tests/gh21682.phpt b/ext/zip/tests/gh21682.phpt
index ee09c73e5c4..cee4e8732b1 100644
--- a/ext/zip/tests/gh21682.phpt
+++ b/ext/zip/tests/gh21682.phpt
@@ -9,8 +9,8 @@
     serialize($a);
     echo "ERROR: should have thrown\n";
 } catch (\Exception $e) {
-    echo $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Serialization of 'ZipArchive' is not allowed, override __serialize() and __unserialize() to implement it
+Exception: Serialization of 'ZipArchive' is not allowed, override __serialize() and __unserialize() to implement it
diff --git a/ext/zip/tests/gh21682_subclass_no_overrides.phpt b/ext/zip/tests/gh21682_subclass_no_overrides.phpt
index 04fb49d9848..ff06a668da2 100644
--- a/ext/zip/tests/gh21682_subclass_no_overrides.phpt
+++ b/ext/zip/tests/gh21682_subclass_no_overrides.phpt
@@ -11,16 +11,16 @@ class MyZip extends ZipArchive {}
     serialize($zip);
     echo "ERROR: should have thrown\n";
 } catch (\Exception $e) {
-    echo $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }

 try {
     unserialize('O:5:"MyZip":0:{}');
     echo "ERROR: should have thrown\n";
 } catch (\Exception $e) {
-    echo $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Serialization of 'MyZip' is not allowed, override __serialize() and __unserialize() to implement it
-Unserialization of 'MyZip' is not allowed, override __serialize() and __unserialize() to implement it
+Exception: Serialization of 'MyZip' is not allowed, override __serialize() and __unserialize() to implement it
+Exception: Unserialization of 'MyZip' is not allowed, override __serialize() and __unserialize() to implement it
diff --git a/ext/zip/tests/oo_addglob2.phpt b/ext/zip/tests/oo_addglob2.phpt
index a98a2227120..298041cc065 100644
--- a/ext/zip/tests/oo_addglob2.phpt
+++ b/ext/zip/tests/oo_addglob2.phpt
@@ -41,7 +41,7 @@
 try {
 	$zip->addGlob($dirname. 'bar.*', GLOB_BRACE, $options);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 $options['comp_flags'] = 65536;
@@ -49,7 +49,7 @@
 try {
 	$zip->addGlob($dirname. 'bar.*', GLOB_BRACE, $options);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 $options['comp_flags'] = 5;
diff --git a/ext/zip/tests/oo_getcomment.phpt b/ext/zip/tests/oo_getcomment.phpt
index a43c5ae38a5..62915841e03 100644
--- a/ext/zip/tests/oo_getcomment.phpt
+++ b/ext/zip/tests/oo_getcomment.phpt
@@ -20,7 +20,7 @@
 try {
     echo $zip->getCommentName('') . "\n";
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 $zip->close();
@@ -30,4 +30,4 @@
 Zip archive comment
 string(11) "foo comment"
 string(11) "foo comment"
-ZipArchive::getCommentName(): Argument #1 ($name) must not be empty
+ValueError: ZipArchive::getCommentName(): Argument #1 ($name) must not be empty
diff --git a/ext/zip/tests/oo_getexternalattributesname_error.phpt b/ext/zip/tests/oo_getexternalattributesname_error.phpt
index 175fdc4b7bb..40dc2430829 100644
--- a/ext/zip/tests/oo_getexternalattributesname_error.phpt
+++ b/ext/zip/tests/oo_getexternalattributesname_error.phpt
@@ -16,8 +16,8 @@
 try {
     $zip->getExternalAttributesName("", $a, $b);
 } catch(ValueError $e) {
-    echo $e->getMessage();
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }
 ?>
 --EXPECT--
-ZipArchive::getExternalAttributesName(): Argument #1 ($name) must not be empty
+ValueError: ZipArchive::getExternalAttributesName(): Argument #1 ($name) must not be empty
diff --git a/ext/zip/tests/oo_open.phpt b/ext/zip/tests/oo_open.phpt
index 44fa46a9a6e..7352d6fc20f 100644
--- a/ext/zip/tests/oo_open.phpt
+++ b/ext/zip/tests/oo_open.phpt
@@ -26,7 +26,7 @@
 try {
     $zip->open('');
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 if (!$zip->open($dirname . 'test.zip')) {
@@ -42,5 +42,5 @@
 --EXPECT--
 ER_OPEN: ok
 create: ok
-ZipArchive::open(): Argument #1 ($filename) must not be empty
+ValueError: ZipArchive::open(): Argument #1 ($filename) must not be empty
 OK
diff --git a/ext/zip/tests/oo_readonly_properties.phpt b/ext/zip/tests/oo_readonly_properties.phpt
index 40eb29f68a7..385b7de0e85 100644
--- a/ext/zip/tests/oo_readonly_properties.phpt
+++ b/ext/zip/tests/oo_readonly_properties.phpt
@@ -10,13 +10,13 @@
 try {
     $zip->lastId = 1;
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 try {
     $zip->lastId += 1;
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->lastId);
@@ -24,7 +24,7 @@
 try {
     $zip->status = 1;
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->status);
@@ -32,7 +32,7 @@
 try {
     $zip->statusSys = 1;
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->statusSys);
@@ -40,7 +40,7 @@
 try {
     $zip->numFiles = 1;
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->numFiles);
@@ -48,7 +48,7 @@
 try {
     $zip->filename = "a";
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->filename);
@@ -56,23 +56,23 @@
 try {
     $zip->comment = "a";
 } catch (Error $exception) {
-    echo $exception->getMessage() . "\n";
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }

 var_dump($zip->comment);

 ?>
 --EXPECT--
-Cannot write read-only property ZipArchive::$lastId
-Cannot write read-only property ZipArchive::$lastId
+Error: Cannot write read-only property ZipArchive::$lastId
+Error: Cannot write read-only property ZipArchive::$lastId
 int(-1)
-Cannot write read-only property ZipArchive::$status
+Error: Cannot write read-only property ZipArchive::$status
 int(0)
-Cannot write read-only property ZipArchive::$statusSys
+Error: Cannot write read-only property ZipArchive::$statusSys
 int(0)
-Cannot write read-only property ZipArchive::$numFiles
+Error: Cannot write read-only property ZipArchive::$numFiles
 int(0)
-Cannot write read-only property ZipArchive::$filename
+Error: Cannot write read-only property ZipArchive::$filename
 string(0) ""
-Cannot write read-only property ZipArchive::$comment
+Error: Cannot write read-only property ZipArchive::$comment
 string(0) ""
diff --git a/ext/zip/tests/oo_setcomment_error.phpt b/ext/zip/tests/oo_setcomment_error.phpt
index 82b718ee187..f94ba228252 100644
--- a/ext/zip/tests/oo_setcomment_error.phpt
+++ b/ext/zip/tests/oo_setcomment_error.phpt
@@ -21,25 +21,25 @@
 try {
     var_dump($zip->setArchiveComment($longComment));
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }
 try {
     var_dump($zip->setCommentName('entry1.txt', $longComment));
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }
 try {
     var_dump($zip->setCommentIndex(1, $longComment));
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 $zip->close();
 ?>
 --EXPECT--
-ZipArchive::setArchiveComment(): Argument #1 ($comment) must be less than 65535 bytes
-ZipArchive::setCommentName(): Argument #2 ($comment) must be less than 65535 bytes
-ZipArchive::setCommentIndex(): Argument #2 ($comment) must be less than 65535 bytes
+ValueError: ZipArchive::setArchiveComment(): Argument #1 ($comment) must be less than 65535 bytes
+ValueError: ZipArchive::setCommentName(): Argument #2 ($comment) must be less than 65535 bytes
+ValueError: ZipArchive::setCommentIndex(): Argument #2 ($comment) must be less than 65535 bytes
 --CLEAN--
 <?php
 @unlink(__DIR__ . '/__tmp_oo_set_comment_error.zip');
diff --git a/ext/zip/tests/oo_setcompression.phpt b/ext/zip/tests/oo_setcompression.phpt
index 1b7e817688d..663345ef16a 100644
--- a/ext/zip/tests/oo_setcompression.phpt
+++ b/ext/zip/tests/oo_setcompression.phpt
@@ -31,13 +31,13 @@
 try {
 	$zip->setCompressionName('entry5.txt', PHP_INT_MIN);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 try {
 	$zip->setCompressionIndex(4, PHP_INT_MIN);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 var_dump($zip->setCompressionIndex(4, ZipArchive::CM_STORE));
@@ -69,8 +69,8 @@
 bool(true)
 bool(true)
 bool(true)
-ZipArchive::setCompressionName(): Argument #2 ($method) must be between -1 and %d
-ZipArchive::setCompressionIndex(): Argument #2 ($method) must be between -1 and %d
+ValueError: ZipArchive::setCompressionName(): Argument #2 ($method) must be between -1 and %d
+ValueError: ZipArchive::setCompressionIndex(): Argument #2 ($method) must be between -1 and %d
 bool(true)
 bool(true)
 bool(true)
diff --git a/ext/zip/tests/oo_setcompression_64bit.phpt b/ext/zip/tests/oo_setcompression_64bit.phpt
index cb093e8ccfc..70de8fade44 100644
--- a/ext/zip/tests/oo_setcompression_64bit.phpt
+++ b/ext/zip/tests/oo_setcompression_64bit.phpt
@@ -14,16 +14,16 @@
 try {
 	$zip->setCompressionName('entry5.txt', PHP_INT_MAX);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 try {
 	$zip->setCompressionIndex(4, PHP_INT_MAX);
 } catch (\ValueError $e) {
-	echo $e->getMessage(), PHP_EOL;
+	echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 ?>
 --EXPECTF--
-ZipArchive::setCompressionName(): Argument #2 ($method) must be between -1 and %d
-ZipArchive::setCompressionIndex(): Argument #2 ($method) must be between -1 and %d
+ValueError: ZipArchive::setCompressionName(): Argument #2 ($method) must be between -1 and %d
+ValueError: ZipArchive::setCompressionIndex(): Argument #2 ($method) must be between -1 and %d
diff --git a/ext/zip/tests/zip_entry_close.phpt b/ext/zip/tests/zip_entry_close.phpt
index 8e05c762f77..bdfbeea6783 100644
--- a/ext/zip/tests/zip_entry_close.phpt
+++ b/ext/zip/tests/zip_entry_close.phpt
@@ -11,7 +11,7 @@
 try {
     echo "entry_close: "; var_dump(zip_entry_close($entry));
 } catch (TypeError $e) {
-    echo $e->getMessage(), "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 zip_close($zip);
 ?>
@@ -28,7 +28,7 @@
 bool(true)
 entry_close:
 Deprecated: Function zip_entry_close() is deprecated since 8.0 in %s on line %d
-zip_entry_close(): supplied resource is not a valid Zip Entry resource
+TypeError: zip_entry_close(): supplied resource is not a valid Zip Entry resource

 Deprecated: Function zip_close() is deprecated since 8.0, use ZipArchive::close() instead in %s on line %d
 Done
diff --git a/ext/zip/tests/zip_open_error.phpt b/ext/zip/tests/zip_open_error.phpt
index 2e43ac29713..24f049647f0 100644
--- a/ext/zip/tests/zip_open_error.phpt
+++ b/ext/zip/tests/zip_open_error.phpt
@@ -11,7 +11,7 @@
 try {
     $zip = zip_open("");
 } catch (\ValueError $e) {
-    echo $e->getMessage() . \PHP_EOL;
+    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
 }

 echo "Test case 2:\n";
@@ -21,7 +21,7 @@
 --EXPECTF--
 Test case 1:
 Deprecated: Function zip_open() is deprecated since 8.0, use ZipArchive::open() instead in %s on line %d
-zip_open(): Argument #1 ($filename) must not be empty
+ValueError: zip_open(): Argument #1 ($filename) must not be empty
 Test case 2:

 Deprecated: Function zip_open() is deprecated since 8.0, use ZipArchive::open() instead in %s on line %d