From 76f6592d12bf2006e0a06efbae105012f10a1a77 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Tue, 24 Sep 2024 17:58:22 +0100 Subject: [PATCH] ext/standard: Add tests for Directory class --- .../DirectoryClass_cannot_clone.phpt | 28 +++++++++++++++++ .../DirectoryClass_cannot_construct.phpt | 20 +++++++++++++ .../DirectoryClass_cannot_serialize.phpt | 16 ++++++++++ .../directory/DirectoryClass_error_001.phpt | 27 ----------------- .../DirectoryClass_readonly_handle.phpt | 26 ++++++++++++++++ .../DirectoryClass_readonly_path.phpt | 26 ++++++++++++++++ ...flection_create_instance_no_construct.phpt | 30 +++++++++++++++++++ ... DirectoryClass_reflection_structure.phpt} | 18 ----------- 8 files changed, 146 insertions(+), 45 deletions(-) create mode 100644 ext/standard/tests/directory/DirectoryClass_cannot_clone.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_cannot_construct.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_cannot_serialize.phpt delete mode 100644 ext/standard/tests/directory/DirectoryClass_error_001.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_readonly_handle.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_readonly_path.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_reflection_create_instance_no_construct.phpt rename ext/standard/tests/directory/{DirectoryClass_basic_001.phpt => DirectoryClass_reflection_structure.phpt} (73%) diff --git a/ext/standard/tests/directory/DirectoryClass_cannot_clone.phpt b/ext/standard/tests/directory/DirectoryClass_cannot_clone.phpt new file mode 100644 index 00000000000..7e521f4bf31 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_cannot_clone.phpt @@ -0,0 +1,28 @@ +--TEST-- +Cannot serialize instance of Directory class constructed via Reflection. +--FILE-- +read()){ + $cloned_files[] = $row; + } + var_dump(count($cloned_files)); + echo "Using original object:\n"; + $original_files = []; + while ($row = $d->read()){ + $original_files[] = $row; + } + var_dump(count($original_files)); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +int(17) +Using original object: +int(0) diff --git a/ext/standard/tests/directory/DirectoryClass_cannot_construct.phpt b/ext/standard/tests/directory/DirectoryClass_cannot_construct.phpt new file mode 100644 index 00000000000..800e2904235 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_cannot_construct.phpt @@ -0,0 +1,20 @@ +--TEST-- +Cannot directly instantiate Directory class. +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +object(Directory)#1 (0) { + ["path"]=> + uninitialized(string) + ["handle"]=> + uninitialized(mixed) +} diff --git a/ext/standard/tests/directory/DirectoryClass_cannot_serialize.phpt b/ext/standard/tests/directory/DirectoryClass_cannot_serialize.phpt new file mode 100644 index 00000000000..b2e7caa258b --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_cannot_serialize.phpt @@ -0,0 +1,16 @@ +--TEST-- +Cannot serialize instance of Directory class constructed via Reflection. +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECTF-- +string(%d) "O:9:"Directory":2:{s:4:"path";s:%d:"%s";s:6:"handle";i:%d;}" diff --git a/ext/standard/tests/directory/DirectoryClass_error_001.phpt b/ext/standard/tests/directory/DirectoryClass_error_001.phpt deleted file mode 100644 index 251c6b64885..00000000000 --- a/ext/standard/tests/directory/DirectoryClass_error_001.phpt +++ /dev/null @@ -1,27 +0,0 @@ ---TEST-- -Changing Directory::$handle property ---FILE-- -handle = "Havoc!"; -} catch (Error $e) { - echo $e->getMessage(), "\n"; -} -var_dump($d->handle); - -$d = dir(getcwd()); -try { - unset($d->handle); -} catch (Error $e) { - echo $e->getMessage(), "\n"; -} -var_dump($d->handle); - -?> ---EXPECTF-- -Cannot modify readonly property Directory::$handle -resource(%d) of type (stream) -Cannot unset readonly property Directory::$handle -resource(%d) of type (stream) diff --git a/ext/standard/tests/directory/DirectoryClass_readonly_handle.phpt b/ext/standard/tests/directory/DirectoryClass_readonly_handle.phpt new file mode 100644 index 00000000000..f3f70a6b22a --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_readonly_handle.phpt @@ -0,0 +1,26 @@ +--TEST-- +Changing Directory::$handle property +--FILE-- +handle = "Havoc!"; +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($d->handle); + +try { + unset($d->handle); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($d->handle); + +?> +--EXPECTF-- +Error: Cannot modify readonly property Directory::$handle +resource(%d) of type (stream) +Error: Cannot unset readonly property Directory::$handle +resource(%d) of type (stream) diff --git a/ext/standard/tests/directory/DirectoryClass_readonly_path.phpt b/ext/standard/tests/directory/DirectoryClass_readonly_path.phpt new file mode 100644 index 00000000000..1dcf8ac8e52 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_readonly_path.phpt @@ -0,0 +1,26 @@ +--TEST-- +Changing Directory::$handle property +--FILE-- +path = "Havoc!"; +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($d->path == __DIR__); + +try { + unset($d->path); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($d->path == __DIR__); + +?> +--EXPECTF-- +Error: Cannot modify readonly property Directory::$path +bool(true) +Error: Cannot unset readonly property Directory::$path +bool(true) diff --git a/ext/standard/tests/directory/DirectoryClass_reflection_create_instance_no_construct.phpt b/ext/standard/tests/directory/DirectoryClass_reflection_create_instance_no_construct.phpt new file mode 100644 index 00000000000..35b07591635 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_reflection_create_instance_no_construct.phpt @@ -0,0 +1,30 @@ +--TEST-- +Cannot use instance of Directory class constructed via Reflection. +--FILE-- +isInstantiable()); +try { + $d = $rc->newInstanceWithoutConstructor(); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} + +var_dump($d); +try { + var_dump($d->read()); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +bool(true) +object(Directory)#2 (0) { + ["path"]=> + uninitialized(string) + ["handle"]=> + uninitialized(mixed) +} +Error: Unable to find my handle property diff --git a/ext/standard/tests/directory/DirectoryClass_basic_001.phpt b/ext/standard/tests/directory/DirectoryClass_reflection_structure.phpt similarity index 73% rename from ext/standard/tests/directory/DirectoryClass_basic_001.phpt rename to ext/standard/tests/directory/DirectoryClass_reflection_structure.phpt index c345ea30b84..549b6c870eb 100644 --- a/ext/standard/tests/directory/DirectoryClass_basic_001.phpt +++ b/ext/standard/tests/directory/DirectoryClass_reflection_structure.phpt @@ -11,16 +11,6 @@ echo "Structure of Directory class:\n"; $rc = new ReflectionClass("Directory"); echo $rc; -echo "Cannot instantiate a valid Directory directly:\n"; -$d = new Directory(getcwd()); -var_dump($d); - -try { - var_dump($d->read()); -} catch (\Error $e) { - echo $e->getMessage() . "\n"; -} - ?> --EXPECTF-- Structure of Directory class: @@ -63,11 +53,3 @@ Class [ class Directory ] { } } } -Cannot instantiate a valid Directory directly: -object(Directory)#%d (0) { - ["path"]=> - uninitialized(string) - ["handle"]=> - uninitialized(mixed) -} -Unable to find my handle property