diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/standard/tests/dir | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/standard/tests/dir')
71 files changed, 7470 insertions, 0 deletions
diff --git a/ext/standard/tests/dir/chdir_basic.phpt b/ext/standard/tests/dir/chdir_basic.phpt new file mode 100644 index 0000000..5fc0e5b --- /dev/null +++ b/ext/standard/tests/dir/chdir_basic.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test chdir() function : basic functionality +--FILE-- +<?php +/* Prototype : bool chdir(string $directory) + * Description: Change the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Test basic functionality of chdir() with absolute and relative paths + */ + +echo "*** Testing chdir() : basic functionality ***\n"; +$base_dir_path = dirname(__FILE__); + +$level_one_dir_name = "level_one"; +$level_one_dir_path = "$base_dir_path/$level_one_dir_name"; + +$level_two_dir_name = "level_two"; +$level_two_dir_path = "$base_dir_path/$level_one_dir_name/$level_two_dir_name"; + +// create directories +mkdir($level_one_dir_path); +mkdir($level_two_dir_path); + +echo "\n-- Testing chdir() with absolute path: --\n"; +chdir($base_dir_path); +var_dump(chdir($level_one_dir_path)); +var_dump(getcwd()); + +echo "\n-- Testing chdir() with relative paths: --\n"; +var_dump(chdir($level_two_dir_name)); +var_dump(getcwd()); +?> +===DONE=== +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +rmdir("$file_path/level_one/level_two"); +rmdir("$file_path/level_one"); +?> +--EXPECTF-- +*** Testing chdir() : basic functionality *** + +-- Testing chdir() with absolute path: -- +bool(true) +string(%d) "%slevel_one" + +-- Testing chdir() with relative paths: -- +bool(true) +string(%d) "%slevel_one%elevel_two" +===DONE=== diff --git a/ext/standard/tests/dir/chdir_error1.phpt b/ext/standard/tests/dir/chdir_error1.phpt new file mode 100644 index 0000000..0f57ff5 --- /dev/null +++ b/ext/standard/tests/dir/chdir_error1.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test chdir() function : error conditions - Incorrect number of arguments +--FILE-- +<?php +/* Prototype : bool chdir(string $directory) + * Description: Change the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Pass incorrect number of arguments to chdir() to test behaviour + */ + +echo "*** Testing chdir() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing chdir() function with Zero arguments --\n"; +var_dump( chdir() ); + +//Test chdir with one more than the expected number of arguments +echo "\n-- Testing chdir() function with more than expected no. of arguments --\n"; +$directory = __FILE__; +$extra_arg = 10; +var_dump( chdir($directory, $extra_arg) ); +?> +===DONE=== +--EXPECTF-- +*** Testing chdir() : error conditions *** + +-- Testing chdir() function with Zero arguments -- + +Warning: chdir() expects exactly 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing chdir() function with more than expected no. of arguments -- + +Warning: chdir() expects exactly 1 parameter, 2 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/chdir_error2.phpt b/ext/standard/tests/dir/chdir_error2.phpt new file mode 100644 index 0000000..a3bbb63 --- /dev/null +++ b/ext/standard/tests/dir/chdir_error2.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test chdir() function : error conditions - Non-existent directory +--FILE-- +<?php +/* Prototype : bool chdir(string $directory) + * Description: Change the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory that does not exist as $directory to chdir() to test behaviour + */ + +echo "*** Testing chdir() : error conditions ***\n"; + +$directory = __FILE__ . '/idonotexist'; + +var_dump(chdir($directory)); +?> +===DONE=== +--EXPECTF-- +*** Testing chdir() : error conditions *** + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/chdir_variation1.phpt b/ext/standard/tests/dir/chdir_variation1.phpt new file mode 100644 index 0000000..c4c0431 --- /dev/null +++ b/ext/standard/tests/dir/chdir_variation1.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test chdir() function : usage variations - different data type as $directory arg +--FILE-- +<?php +/* Prototype : bool chdir(string $directory) + * Description: Change the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $directory argument to test behaviour + */ + +echo "*** Testing chdir() : usage variations ***\n"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/chdir_basic"; +@mkdir($dir_path); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA { + var $dir_path; + + function __construct($dir) { + $this->dir_path = $dir; + } + + public function __toString() { + return "$this->dir_path"; + } +} + +// heredoc string +$heredoc = <<<EOT +$dir_path +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $directory argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "$dir_path", + 'string', + $heredoc, + + // object data +/*22*/ new classA($dir_path), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of chdir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( chdir($input) ); + $iterator++; +}; + +fclose($fp); + +?> +===DONE=== +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +$dir_path = $file_path."/chdir_basic"; + +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing chdir() : usage variations *** + +-- Iteration 1 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: chdir() expects parameter 1 to be a valid path, array given in %s on line %d +bool(false) + +-- Iteration 19 -- +bool(true) + +-- Iteration 20 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 21 -- +bool(true) + +-- Iteration 22 -- +bool(true) + +-- Iteration 23 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: chdir(): %s (errno %d) in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: chdir() expects parameter 1 to be a valid path, resource given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/chdir_variation2.phpt b/ext/standard/tests/dir/chdir_variation2.phpt new file mode 100644 index 0000000..fa70f9e --- /dev/null +++ b/ext/standard/tests/dir/chdir_variation2.phpt @@ -0,0 +1,104 @@ +--TEST-- +Test chdir() function : usage variations - relative paths +--FILE-- +<?php +/* Prototype : bool chdir(string $directory) + * Description: Change the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Test chdir() with variations of relative paths + */ + +echo "*** Testing chdir() : usage variations ***\n"; + +$base_dir_path = dirname(__FILE__); + +$level_one_dir_name = "level_one"; +$level_one_dir_path = "$base_dir_path/$level_one_dir_name"; + +$level_two_dir_name = "level_two"; +$level_two_dir_path = "$base_dir_path/$level_one_dir_name/$level_two_dir_name"; + +// create directories +mkdir($level_one_dir_path); +mkdir($level_two_dir_path); + +echo "\n-- \$directory = './level_one': --\n"; +var_dump(chdir($base_dir_path)); +var_dump(chdir("./$level_one_dir_name")); +var_dump(getcwd()); + +echo "\n-- \$directory = 'level_one/level_two': --\n"; +var_dump(chdir($base_dir_path)); +var_dump(chdir("$level_one_dir_name/$level_two_dir_name")); +var_dump(getcwd()); + +echo "\n-- \$directory = '..': --\n"; +var_dump(chdir('..')); +var_dump(getcwd()); + +echo "\n-- \$directory = 'level_two', '.': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(chdir('.')); +var_dump(getcwd()); + +echo "\n-- \$directory = '../': --\n"; +var_dump(chdir('../')); +var_dump(getcwd()); + +echo "\n-- \$directory = './': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(chdir('./')); +var_dump(getcwd()); + +echo "\n-- \$directory = '../../'level_one': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(chdir("../../$level_one_dir_name")); +var_dump(getcwd()); + +?> +===DONE=== +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +rmdir("$file_path/level_one/level_two"); +rmdir("$file_path/level_one"); +?> +--EXPECTF-- +*** Testing chdir() : usage variations *** + +-- $directory = './level_one': -- +bool(true) +bool(true) +string(%d) "%slevel_one" + +-- $directory = 'level_one/level_two': -- +bool(true) +bool(true) +string(%d) "%slevel_one%elevel_two" + +-- $directory = '..': -- +bool(true) +string(%d) "%slevel_one" + +-- $directory = 'level_two', '.': -- +bool(true) +bool(true) +string(%d) "%slevel_one%elevel_two" + +-- $directory = '../': -- +bool(true) +string(%d) "%slevel_one" + +-- $directory = './': -- +bool(true) +bool(true) +string(%d) "%slevel_one%elevel_two" + +-- $directory = '../../'level_one': -- +bool(true) +bool(true) +string(%d) "%slevel_one" +===DONE=== diff --git a/ext/standard/tests/dir/closedir_basic.phpt b/ext/standard/tests/dir/closedir_basic.phpt new file mode 100644 index 0000000..49080bb --- /dev/null +++ b/ext/standard/tests/dir/closedir_basic.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test closedir() function : basic functionality +--FILE-- +<?php +/* Prototype : void closedir([resource $dir_handle]) + * Description: Close directory connection identified by the dir_handle + * Source code: ext/standard/dir.c + * Alias to functions: close + */ + +/* + * Test basic functionality of closedir() + */ + +echo "*** Testing closedir() : basic functionality ***\n"; + +$base_dir = dirname(__FILE__); +$dir_path = $base_dir . '/closedir_basic'; +mkdir($dir_path); + +echo "\n-- Call closedir() with no arguments: --\n"; +$dh1 = opendir($dir_path); +var_dump(closedir()); +echo "-- Check Directory Handle: --\n"; +var_dump($dh1); + +echo "\n-- Call closedir() with \$dir_handle argument supplied: --\n"; +$dh2 = opendir($dir_path); + +if ((int)$dh1 === (int)$dh2) { + echo "\nNo new resource created\n"; +} +var_dump(closedir($dh2)); +echo "-- Check Directory Handle: --\n"; +var_dump($dh2); +?> +===DONE=== +--CLEAN-- +<?php +$base_dir = dirname(__FILE__); +$dir_path = $base_dir . '/closedir_basic'; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing closedir() : basic functionality *** + +-- Call closedir() with no arguments: -- +NULL +-- Check Directory Handle: -- +resource(%d) of type (Unknown) + +-- Call closedir() with $dir_handle argument supplied: -- +NULL +-- Check Directory Handle: -- +resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/standard/tests/dir/closedir_error.phpt b/ext/standard/tests/dir/closedir_error.phpt new file mode 100644 index 0000000..c2f7647 --- /dev/null +++ b/ext/standard/tests/dir/closedir_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test closedir() function : error conditions - Pass incorrect number of arguments +--FILE-- +<?php +/* Prototype : void closedir([resource $dir_handle]) + * Description: Close directory connection identified by the dir_handle + * Source code: ext/standard/dir.c + * Alias to functions: close + */ + +/* + * Pass incorrect number of arguments to closedir() to test behaviour + */ + +echo "*** Testing closedir() : error conditions ***\n"; + + +//Test closedir with one more than the expected number of arguments +echo "\n-- Testing closedir() function with more than expected no. of arguments --\n"; + +$dir_path = dirname(__FILE__) . '\closedir_error'; +mkdir($dir_path); +$dir_handle = opendir($dir_path); + +$extra_arg = 10; +var_dump( closedir($dir_handle, $extra_arg) ); + +//successfully close the directory handle so can delete in CLEAN section +closedir($dir_handle); +?> +===DONE=== +--CLEAN-- +<?php +$base_dir = dirname(__FILE__); +$dir_path = $base_dir . '\closedir_error'; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing closedir() : error conditions *** + +-- Testing closedir() function with more than expected no. of arguments -- + +Warning: closedir() expects at most 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/closedir_variation1.phpt b/ext/standard/tests/dir/closedir_variation1.phpt new file mode 100644 index 0000000..ecc4477 --- /dev/null +++ b/ext/standard/tests/dir/closedir_variation1.phpt @@ -0,0 +1,212 @@ +--TEST-- +Test closedir() function : usage variations - different data types as $dir_handle arg +--FILE-- +<?php +/* Prototype : void closedir([resource $dir_handle]) + * Description: Close directory connection identified by the dir_handle + * Source code: ext/standard/dir.c + * Alias to functions: close + */ + +/* + * Pass different data types as $dir_handle argument to closedir() to test behaviour + */ + +echo "*** Testing closedir() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// unexpected values to be passed to $dir_handle argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, +); + +// loop through each element of $inputs to check the behavior of closedir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( closedir($input) ); + $iterator++; +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing closedir() : usage variations *** + +-- Iteration 1 -- + +Warning: closedir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: closedir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: closedir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: closedir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: closedir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: closedir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: closedir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: closedir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: closedir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: closedir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: closedir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: closedir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: closedir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: closedir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: closedir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: closedir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: closedir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: closedir() expects parameter 1 to be resource, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: closedir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: closedir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: closedir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: closedir() expects parameter 1 to be resource, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: closedir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: closedir() expects parameter 1 to be resource, null given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/closedir_variation2.phpt b/ext/standard/tests/dir/closedir_variation2.phpt new file mode 100644 index 0000000..015176c --- /dev/null +++ b/ext/standard/tests/dir/closedir_variation2.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test closedir() function : usage variations - close directory handle twice +--FILE-- +<?php +/* Prototype : void closedir([resource $dir_handle]) + * Description: Close directory connection identified by the dir_handle + * Source code: ext/standard/dir.c + * Alias to functions: close + */ + +/* + * close the directory handle twice using closedir() to test behaviour + */ + +echo "*** Testing closedir() : usage variations ***\n"; + +//create temporary directory for test, removed in CLEAN section +$directory = dirname(__FILE__) . "/closedir_variation2"; +mkdir($directory); + +$dh = opendir($directory); + +echo "\n-- Close directory handle first time: --\n"; +var_dump(closedir($dh)); +echo "Directory Handle: "; +var_dump($dh); + +echo "\n-- Close directory handle second time: --\n"; +var_dump(closedir($dh)); +echo "Directory Handle: "; +var_dump($dh); +?> +===DONE=== +--CLEAN-- +<?php +$directory = dirname(__FILE__) . "/closedir_variation2"; +rmdir($directory); +?> +--EXPECTF-- +*** Testing closedir() : usage variations *** + +-- Close directory handle first time: -- +NULL +Directory Handle: resource(%d) of type (Unknown) + +-- Close directory handle second time: -- + +Warning: closedir(): %d is not a valid Directory resource in %s on line %d +bool(false) +Directory Handle: resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/standard/tests/dir/closedir_variation3.phpt b/ext/standard/tests/dir/closedir_variation3.phpt new file mode 100644 index 0000000..b9b5e67 --- /dev/null +++ b/ext/standard/tests/dir/closedir_variation3.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test closedir() function : usage variations - close a file pointer +--FILE-- +<?php +/* Prototype : void closedir([resource $dir_handle]) + * Description: Close directory connection identified by the dir_handle + * Source code: ext/standard/dir.c + * Alias to functions: close + */ + +/* + * Create a file pointer using fopen() then try to close it using closedir() + */ + +echo "*** Testing closedir() : usage variations ***\n"; + +echo "\n-- Open a file using fopen() --\n"; +var_dump($fp = fopen(__FILE__, 'r')); + +echo "\n-- Try to close the file pointer using closedir() --\n"; +var_dump(closedir($fp)); + +echo "\n-- Check file pointer: --\n"; +var_dump($fp); + +if(is_resource($fp)) { + fclose($fp); +} +?> +===DONE=== +--EXPECTF-- +*** Testing closedir() : usage variations *** + +-- Open a file using fopen() -- +resource(%d) of type (stream) + +-- Try to close the file pointer using closedir() -- + +Warning: closedir(): %d is not a valid Directory resource in %s on line %d +bool(false) + +-- Check file pointer: -- +resource(%d) of type (stream) +===DONE=== diff --git a/ext/standard/tests/dir/dir_basic.phpt b/ext/standard/tests/dir/dir_basic.phpt new file mode 100644 index 0000000..dba49db --- /dev/null +++ b/ext/standard/tests/dir/dir_basic.phpt @@ -0,0 +1,86 @@ +--TEST-- +Test dir() function : basic functionality +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +echo "*** Testing dir() : basic functionality ***\n"; + +// include the file.inc for Function: function create_files() +include(dirname(__FILE__)."/../file/file.inc"); + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_basic"; +@mkdir($dir_path); + +// create files within the temporary directory +create_files($dir_path, 3, "alphanumeric", 0755, 1, "w", "dir_basic"); + +echo "Get Directory instance:\n"; +$d = dir($dir_path); +var_dump( $d ); + +echo "\nRead and rewind:\n"; +var_dump( $d->read() ); +var_dump( $d->read() ); +var_dump( $d->rewind() ); + +echo "\nTest using handle directly:\n"; +var_dump( readdir($d->handle) ); +var_dump( readdir($d->handle) ); + +echo "\nClose directory:\n"; +var_dump( $d->close() ); +var_dump( $d ); + +echo "\nTest read after closing the dir:"; +var_dump( $d->read() ); + +// delete temp files +delete_files($dir_path, 3, "dir_basic", 1, ".tmp"); +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_basic"; + +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing dir() : basic functionality *** +Get Directory instance: +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_basic" + ["handle"]=> + resource(%d) of type (stream) +} + +Read and rewind: +string(%d) "%s" +string(%d) "%s" +NULL + +Test using handle directly: +string(%d) "%s" +string(%d) "%s" + +Close directory: +NULL +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_basic" + ["handle"]=> + resource(%d) of type (Unknown) +} + +Test read after closing the dir: +Warning: Directory::read(): %d is not a valid Directory resource in %s on line %d +bool(false) +Done
\ No newline at end of file diff --git a/ext/standard/tests/dir/dir_error.phpt b/ext/standard/tests/dir/dir_error.phpt new file mode 100644 index 0000000..f2ef25c --- /dev/null +++ b/ext/standard/tests/dir/dir_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test dir() function : error conditions +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +echo "*** Testing dir() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing dir() function with zero arguments --"; +var_dump( dir() ); + +// With one more than expected number of arguments +echo "\n-- Testing dir() function with one more than expected number of arguments --"; +$extra_arg = 10; +var_dump( dir(getcwd(), "stream", $extra_arg) ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : error conditions *** + +-- Testing dir() function with zero arguments -- +Warning: dir() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing dir() function with one more than expected number of arguments -- +Warning: dir() expects at most 2 parameters, 3 given in %s on line %d +NULL +Done diff --git a/ext/standard/tests/dir/dir_variation1-win32.phpt b/ext/standard/tests/dir/dir_variation1-win32.phpt new file mode 100644 index 0000000..1f7f4a2 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation1-win32.phpt @@ -0,0 +1,170 @@ +--TEST-- +Test dir() function : usage variations - unexpected value for 'dir' argument +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing non string values to 'directory' argument of dir() and see + * that the function outputs proper warning messages wherever expected. + */ + +echo "*** Testing dir() : unexpected values for \$directory argument ***\n"; + +// get an unset variable +$unset_var = 10; +unset($unset_var); + +class A +{ + public $var; + public function init() { + $this->var = 10; + } +} + +// get a resource variable +$fp = fopen(__FILE__, "r"); // get a file handle +$dfp = opendir( dirname(__FILE__) ); // get a dir handle + +// unexpected values to be passed to $directory argument +$unexpected_values = array ( + + // array data +/*1*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // null data +/*6*/ NULL, + null, + + // boolean data +/*8*/ true, + false, + TRUE, + FALSE, + + // empty data +/*12*/ "", + '', + + // undefined data +/*14*/ @$undefined_var, + + // unset data +/*15*/ @$unset_var, + + // resource variable(dir and file handle) +/*16*/ $fp, + $dfp, + + // object data +/*18*/ new A() +); + +// loop through various elements of $unexpected_values to check the behavior of dir() +$iterator = 1; +foreach( $unexpected_values as $unexpected_value ) { + echo "\n-- Iteration $iterator --\n"; + var_dump( dir($unexpected_value) ); + $iterator++; +} + +fclose($fp); +closedir($dfp); +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : unexpected values for $directory argument *** + +-- Iteration 1 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- + +Warning: dir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: dir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- + +Warning: dir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: dir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- + +Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: dir() expects parameter 1 to be string, object given in %s on line %d +NULL +Done
\ No newline at end of file diff --git a/ext/standard/tests/dir/dir_variation1.phpt b/ext/standard/tests/dir/dir_variation1.phpt new file mode 100644 index 0000000..abb4719 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation1.phpt @@ -0,0 +1,166 @@ +--TEST-- +Test dir() function : usage variations - unexpected value for 'dir' argument +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing non string values to 'directory' argument of dir() and see + * that the function outputs proper warning messages wherever expected. + */ + +echo "*** Testing dir() : unexpected values for \$directory argument ***\n"; + +// get an unset variable +$unset_var = 10; +unset($unset_var); + +class A +{ + public $var; + public function init() { + $this->var = 10; + } +} + +// get a resource variable +$fp = fopen(__FILE__, "r"); // get a file handle +$dfp = opendir( dirname(__FILE__) ); // get a dir handle + +// unexpected values to be passed to $directory argument +$unexpected_values = array ( + + // array data +/*1*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // null data +/*6*/ NULL, + null, + + // boolean data +/*8*/ true, + false, + TRUE, + FALSE, + + // empty data +/*12*/ "", + '', + + // undefined data +/*14*/ @$undefined_var, + + // unset data +/*15*/ @$unset_var, + + // resource variable(dir and file handle) +/*16*/ $fp, + $dfp, + + // object data +/*18*/ new A() +); + +// loop through various elements of $unexpected_values to check the behavior of dir() +$iterator = 1; +foreach( $unexpected_values as $unexpected_value ) { + echo "\n-- Iteration $iterator --\n"; + var_dump( dir($unexpected_value) ); + $iterator++; +} + +fclose($fp); +closedir($dfp); +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : unexpected values for $directory argument *** + +-- Iteration 1 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: dir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- + +Warning: dir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- + +Warning: dir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- + +Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: dir() expects parameter 1 to be string, object given in %s on line %d +NULL +Done
\ No newline at end of file diff --git a/ext/standard/tests/dir/dir_variation2.phpt b/ext/standard/tests/dir/dir_variation2.phpt new file mode 100644 index 0000000..ee42900 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation2.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test dir() function : usage variations - unexpected value for 'context' argument +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing non resource values to 'context' argument of dir() and see + * that the function outputs proper warning messages wherever expected. + */ + +echo "*** Testing dir() : unexpected values for \$context argument ***\n"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$directory = $file_path."/dir_variation2"; +@mkdir($directory); + +// get an unset variable +$unset_var = stream_context_create(); +unset($unset_var); + +class classA +{ + public $var; + public function init() { + $this->var = 10; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// unexpected values to be passed to $directory argument +$unexpected_values = array ( + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // array data +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // string data +/*23*/ "string", + 'string', + $heredoc, + + // object data +/*26*/ new classA(), + + // undefined data +/*27*/ @$undefined_var, + + // unset data +/*28*/ @$unset_var +); + +// loop through various elements of $unexpected_values to check the behavior of dir() +$iterator = 1; +foreach( $unexpected_values as $unexpected_value ) { + echo "\n-- Iteration $iterator --"; + var_dump( dir($directory, $unexpected_value) ); + $iterator++; +} + +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +$directory = $file_path."/dir_variation2"; + +rmdir($directory); +?> +--EXPECTF-- +*** Testing dir() : unexpected values for $context argument *** + +-- Iteration 1 -- +Warning: dir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- +Warning: dir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- +Warning: dir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- +Warning: dir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- +Warning: dir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- +Warning: dir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- +Warning: dir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- +Warning: dir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- +Warning: dir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- +Warning: dir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 11 -- +Warning: dir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 12 -- +Warning: dir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 13 -- +Warning: dir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 14 -- +Warning: dir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 15 -- +Warning: dir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 16 -- +Warning: dir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 17 -- +Warning: dir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 18 -- +Warning: dir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 19 -- +Warning: dir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 20 -- +Warning: dir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 21 -- +Warning: dir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- +Warning: dir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 23 -- +Warning: dir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 24 -- +Warning: dir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 25 -- +Warning: dir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 26 -- +Warning: dir() expects parameter 2 to be resource, object given in %s on line %d +NULL + +-- Iteration 27 -- +Warning: dir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 28 -- +Warning: dir() expects parameter 2 to be resource, null given in %s on line %d +NULL +Done
\ No newline at end of file diff --git a/ext/standard/tests/dir/dir_variation3.phpt b/ext/standard/tests/dir/dir_variation3.phpt new file mode 100644 index 0000000..f8d3258 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation3.phpt @@ -0,0 +1,204 @@ +--TEST-- +Test dir() function : usage variations - different directory permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__)."/dir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Providing various permissions to the directory to be opened and checking + * to see if dir() function opens the directory successfully. + */ + +echo "*** Testing dir() : different directory permissions ***"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation3"; +@mkdir($dir_path); + +/* different values for directory permissions */ +$permission_values = array( +/*1*/ 0477, // owner has read only, other and group has rwx + 0677, // owner has rw only, other and group has rwx + +/*3*/ 0444, // all have read only + 0666, // all have rw only + +/*5*/ 0400, // owner has read only, group and others have no permission + 0600, // owner has rw only, group and others have no permission + +/*7*/ 0470, // owner has read only, group has rwx & others have no permission + 0407, // owner has read only, other has rwx & group has no permission + +/*9*/ 0670, // owner has rw only, group has rwx & others have no permission +/*10*/ 0607 // owner has rw only, group has no permission and others have rwx +); + +// Open directory with different permission values, read and close, expected: none of them to succeed. +for($count = 0; $count < count($permission_values); $count++) { + echo "\n-- Iteration ".($count + 1)." --\n"; + + // try to remove the dir if exists & create + $file_path = dirname(__FILE__); + $dir_path = $file_path."/dir_variation3"; + @chmod ($dir_path, 0777); // change dir permission to allow all operation + @rmdir ($dir_path); // try n delete the dir + + // create the dir now + @mkdir($dir_path); + + // change the dir permisson to test dir on it + var_dump( chmod($dir_path, $permission_values[$count]) ); + + // try to get dir handle + $d = dir($dir_path); + var_dump($d); // dump the handle + + // try read directory, expected : false + echo "-- reading contents --\n"; + var_dump($d->read()); + + // close directory + $d->close(); +} + +echo "Done"; +?> +--CLEAN-- +<?php +// deleting temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation3"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing dir() : different directory permissions *** +-- Iteration 1 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 2 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 3 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 4 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 5 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 6 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 7 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 8 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 9 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" + +-- Iteration 10 -- +bool(true) +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation3" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading contents -- +string(%d) "%s" +Done diff --git a/ext/standard/tests/dir/dir_variation4.phpt b/ext/standard/tests/dir/dir_variation4.phpt new file mode 100644 index 0000000..62b10b2 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation4.phpt @@ -0,0 +1,72 @@ +--TEST-- +Test dir() function : usage variations - operate on previously opened directory +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Testing the behavior of dir() function by trying to open a + * directory which is already open. + */ + +echo "*** Testing dir() : operate on previously opened directory ***\n"; + +// include the file.inc for Function: function create_files() +include( dirname(__FILE__)."/../file/file.inc"); + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation4"; +@mkdir($dir_path); + +// create files within the temporary directory +create_files($dir_path, 3, "alphanumeric", 0755, 1, "w", "dir_variation4"); + +// open the directory +$d = dir($dir_path); +var_dump( $d ); + +// open the same directory again without closing it +$e = dir($dir_path); +var_dump( $e ); + +echo "-- reading directory contents with previous handle --\n"; +var_dump( $d->read() ); // with previous handle + +echo "-- reading directory contents with current handle --\n"; +var_dump( $e->read() ); // with current handle + +// delete temporary files +delete_files($dir_path, 3, "dir_variation4"); +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation4"; + +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing dir() : operate on previously opened directory *** +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation4" + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation4" + ["handle"]=> + resource(%d) of type (stream) +} +-- reading directory contents with previous handle -- +string(%d) "%s" +-- reading directory contents with current handle -- +string(%d) "%s" +Done diff --git a/ext/standard/tests/dir/dir_variation5-win32.phpt b/ext/standard/tests/dir/dir_variation5-win32.phpt new file mode 100644 index 0000000..e70b9d3 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation5-win32.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test dir() function : usage variations - open a file instead of directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing a file as argument to dir() function instead of a directory + * and checking if proper warning message is generated. + */ + +echo "*** Testing dir() : open a file instead of a directory ***\n"; + +// open the file instead of directory +$d = dir(__FILE__); +var_dump( $d ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : open a file instead of a directory *** + +Warning: dir(%s): The directory name is invalid. (code: %d) in %s on line %d + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation5.phpt b/ext/standard/tests/dir/dir_variation5.phpt new file mode 100644 index 0000000..c7450ea --- /dev/null +++ b/ext/standard/tests/dir/dir_variation5.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test dir() function : usage variations - open a file instead of directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing a file as argument to dir() function instead of a directory + * and checking if proper warning message is generated. + */ + +echo "*** Testing dir() : open a file instead of a directory ***\n"; + +// open the file instead of directory +$d = dir(__FILE__); +var_dump( $d ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : open a file instead of a directory *** + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation6-win32.phpt b/ext/standard/tests/dir/dir_variation6-win32.phpt new file mode 100644 index 0000000..e0e4749 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation6-win32.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test dir() function : usage variations - non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing a non-existent directory as argument to dir() function + * and checking to see if proper warning message is output. + */ +echo "*** Testing dir() : open a non-existent directory ***\n"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation6"; +@mkdir($dir_path); + +// open existent directory +$d = dir($dir_path); +$d->close(); //close the dir + +// remove directory and try to open the same(non-existent) directory again +rmdir($dir_path); +clearstatcache(); + +echo "-- opening previously removed directory --\n"; +var_dump( dir($dir_path) ); + +// point to a non-existent directory +$non_existent_dir = $file_path."/non_existent_dir"; +echo "-- opening non-existent directory --\n"; +$d = dir($non_existent_dir); +var_dump( $d ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : open a non-existent directory *** +-- opening previously removed directory -- + +Warning: dir(%s): The system cannot find the file specified. (code: %d) in %s on line %d + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +-- opening non-existent directory -- + +Warning: dir(%s): The system cannot find the file specified. (code: %d) in %s on line %d + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation6.phpt b/ext/standard/tests/dir/dir_variation6.phpt new file mode 100644 index 0000000..71cbf1f --- /dev/null +++ b/ext/standard/tests/dir/dir_variation6.phpt @@ -0,0 +1,57 @@ +--TEST-- +Test dir() function : usage variations - non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Passing a non-existent directory as argument to dir() function + * and checking to see if proper warning message is output. + */ +echo "*** Testing dir() : open a non-existent directory ***\n"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation6"; +@mkdir($dir_path); + +// open existent directory +$d = dir($dir_path); +$d->close(); //close the dir + +// remove directory and try to open the same(non-existent) directory again +rmdir($dir_path); +clearstatcache(); + +echo "-- opening previously removed directory --\n"; +var_dump( dir($dir_path) ); + +// point to a non-existent directory +$non_existent_dir = $file_path."/non_existent_dir"; +echo "-- opening non-existent directory --\n"; +$d = dir($non_existent_dir); +var_dump( $d ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : open a non-existent directory *** +-- opening previously removed directory -- + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +-- opening non-existent directory -- + +Warning: dir(%s): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation7.phpt b/ext/standard/tests/dir/dir_variation7.phpt new file mode 100644 index 0000000..ca168f9 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation7.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test dir() function : usage variations - directories with restricted permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__)."/dir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * remove the execute permission from the parent dir and test dir() on child dir + * 1) remove write & execute permission from the 1st parent and test dir() + * 2) remove execute permission from 2nd parent and test dir() + */ + +echo "*** Testing dir() : remove execute permission from the parent dir ***\n"; + +/* create the temporary directory : + dir_variation7 ( parent ) + |-> sub_dir ( sub parent ) + |-> child_dir ( child dir) +*/ +$file_path = dirname(__FILE__); +$parent_dir_path = $file_path."/dir_variation7"; +@mkdir($parent_dir_path); +chmod($parent_dir_path, 0777); + +// create sub_dir +$sub_dir_path = $parent_dir_path."/sub_dir"; +@mkdir($sub_dir_path); +chmod($sub_dir_path, 0777); + +//create sub_sub_dir +$child_dir_path = $sub_dir_path."/child_dir"; +@mkdir($child_dir_path); + +// remove the write and execute permisson from sub parent +chmod($sub_dir_path, 0444); +echo "-- After restricting 1st level parent directory --\n"; +$d = dir($child_dir_path); // try to open, expected failure +var_dump( $d ); // dump it + +// remove the execute permisson from parent dir, allowing all permission for sub dir +chmod($sub_dir_path, 0777); // all permisson to sub dir +chmod($parent_dir_path, 0666); // restricting parent directory +echo "-- After restricting parent directory --\n"; +$d = dir($child_dir_path); // try to open, expected failure +var_dump( $d ); // dump it + +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +$parent_dir_path = $file_path."/dir_variation7"; +$sub_dir_path = $parent_dir_path."/sub_dir"; +$child_dir_path = $sub_dir_path."/child_dir"; + +// changing permissions for each temporary directory to delete them +chmod($parent_dir_path, 0777); +chmod($sub_dir_path, 0777); +chmod($child_dir_path, 0777); + +rmdir($child_dir_path); +rmdir($sub_dir_path); +rmdir($parent_dir_path); +?> +--EXPECTF-- +*** Testing dir() : remove execute permission from the parent dir *** +-- After restricting 1st level parent directory -- + +Warning: dir(%s/dir_variation7/sub_dir/child_dir): failed to open dir: %s in %s on line %d +bool(false) +-- After restricting parent directory -- + +Warning: dir(%s/dir_variation7/sub_dir/child_dir): failed to open dir: %s in %s on line %d +bool(false) +Done
\ No newline at end of file diff --git a/ext/standard/tests/dir/dir_variation8-win32.phpt b/ext/standard/tests/dir/dir_variation8-win32.phpt new file mode 100644 index 0000000..a56c98b --- /dev/null +++ b/ext/standard/tests/dir/dir_variation8-win32.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test dir() function : usage variations - checking with wildcard characters +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Create more than one temporary directory & subdirectory and check if dir() function can open + * those directories when wildcard characters are used to refer to them. + */ + +echo "*** Testing dir() : checking with wildcard characters ***\n"; + +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation81"; +$sub_dir_path = $dir_path."/sub_dir1"; + +@mkdir($dir_path1); +@mkdir($sub_dir_path); + +/* with different wildcard characters */ + +echo "-- wildcard = '*' --\n"; +var_dump( dir($file_path."/dir_var*") ); +var_dump( dir($file_path."/*") ); + +echo "-- wildcard = '?' --\n"; +var_dump( dir($dir_path."/sub_dir?") ); +var_dump( dir($dir_path."/sub?dir1") ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : checking with wildcard characters *** +-- wildcard = '*' -- + +Warning: dir(%s/dir_var*,%s/dir_var*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d + +Warning: dir(%s/dir_var*): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/*,%s/*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d + +Warning: dir(%s/*): failed to open dir: %s in %s on line %d +bool(false) +-- wildcard = '?' -- + +Warning: dir(%s/dir_variation81/sub_dir?,%s/dir_variation81/sub_dir?): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d + +Warning: dir(%s/dir_variation81/sub_dir?): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/dir_variation81/sub?dir1,%s/dir_variation81/sub?dir1): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d + +Warning: dir(%s/dir_variation81/sub?dir1): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation8.phpt b/ext/standard/tests/dir/dir_variation8.phpt new file mode 100644 index 0000000..5ecf449 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation8.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test dir() function : usage variations - checking with wildcard characters +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Create more than one temporary directory & subdirectory and check if dir() function can open + * those directories when wildcard characters are used to refer to them. + */ + +echo "*** Testing dir() : checking with wildcard characters ***\n"; + +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path."/dir_variation81"; +$sub_dir_path = $dir_path."/sub_dir1"; + +@mkdir($dir_path1); +@mkdir($sub_dir_path); + +/* with different wildcard characters */ + +echo "-- wildcard = '*' --\n"; +var_dump( dir($file_path."/dir_var*") ); +var_dump( dir($file_path."/*") ); + +echo "-- wildcard = '?' --\n"; +var_dump( dir($dir_path."/sub_dir?") ); +var_dump( dir($dir_path."/sub?dir1") ); + +echo "Done"; +?> +--EXPECTF-- +*** Testing dir() : checking with wildcard characters *** +-- wildcard = '*' -- + +Warning: dir(%s/dir_var*): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/*): failed to open dir: %s in %s on line %d +bool(false) +-- wildcard = '?' -- + +Warning: dir(%s/dir_variation81/sub_dir?): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/dir_variation81/sub?dir1): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation9-win32.phpt b/ext/standard/tests/dir/dir_variation9-win32.phpt new file mode 100644 index 0000000..32b0bd9 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation9-win32.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test dir() function : usage variations - relative valid and invalid paths +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Checking the behavior of dir() function by passing directories which + * have valid and invalid relative path. + */ + +echo "*** Testing dir() : checking with valid and invalid paths ***\n"; + +/* create the temporary directories */ + +$file_path = dirname(__FILE__); + +// directory dir_variation91 with one sub-directory sub_dir11 and sub-sub-directory sub_dir111 +$dir_path1 = $file_path."/dir_variation91"; +$sub_dir11 = $dir_path1."/sub_dir11"; +$sub_dir111 = $sub_dir11."/sub_dir111"; + +// directory dir_variation92 with one sub-directory sub_dir21 +$dir_path2 = $file_path."/dir_variation92"; +$sub_dir21 = $dir_path2."/sub_dir21"; + +@mkdir($dir_path1); +@mkdir($dir_path2); +@mkdir($sub_dir11); +@mkdir($sub_dir111); +@mkdir($sub_dir21); + +// open the directory with valid paths +echo "\n-- With valid paths --\n"; +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/..") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91/sub_dir11/..") ); +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/../../../dir_variation92/sub_dir21/..") ); + +// open the directory with invalid path +echo "\n-- With invalid paths --\n"; +var_dump( dir("$dir_path1/sub_dir12/sub_dir111/..") ); +var_dump( dir("$dir_path2/sub_dir21/../dir_variation91") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91/sub_dir12/..") ); +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..") ); + +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); + +$dir_path1 = $file_path."/dir_variation91"; +$sub_dir11 = $dir_path1."/sub_dir11"; +$sub_dir111 = $sub_dir11."/sub_dir111"; +$dir_path2 = $file_path."/dir_variation92"; +$sub_dir21 = $dir_path2."/sub_dir21"; + +rmdir($sub_dir21); +rmdir($sub_dir111); +rmdir($sub_dir11); +rmdir($dir_path1); +rmdir($dir_path2); +?> +--EXPECTF-- +*** Testing dir() : checking with valid and invalid paths *** + +-- With valid paths -- +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation91/sub_dir11/sub_dir111/.." + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation92/sub_dir21/../../dir_variation91" + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation92/sub_dir21/../../dir_variation91/sub_dir11/.." + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation91/sub_dir11/sub_dir111/../../../dir_variation92/sub_dir21/.." + ["handle"]=> + resource(%d) of type (stream) +} + +-- With invalid paths -- + +Warning: dir(%sdir_variation91/sub_dir12/sub_dir111/..,%sdir_variation91/sub_dir12/sub_dir111/..): The system cannot find the path specified. (code: 3) in %sdir_variation9-win32.php on line %d + +Warning: dir(%s/dir_variation91/sub_dir12/sub_dir111/..): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%sdir_variation92/sub_dir21/../dir_variation91,%sdir_variation92/sub_dir21/../dir_variation91): The system cannot find the file specified. (code: 2) in %sdir_variation9-win32.php on line %d + +Warning: dir(%s/dir_variation92/sub_dir21/../dir_variation91): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%sdir_variation92/sub_dir21/../../dir_variation91/sub_dir12/..,%sdir_variation92/sub_dir21/../../dir_variation91/sub_dir12/..): The system cannot find the file specified. (code: 2) in %sdir_variation9-win32.php on line %d + +Warning: dir(%s/dir_variation92/sub_dir21/../../dir_variation91/sub_dir12/..): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%sdir_variation91/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..,%sdir_variation91/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..): The system cannot find the path specified. (code: 3) in %sdir_variation9-win32.php on line %d + +Warning: dir(%s/dir_variation91/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/dir_variation9.phpt b/ext/standard/tests/dir/dir_variation9.phpt new file mode 100644 index 0000000..458d0b8 --- /dev/null +++ b/ext/standard/tests/dir/dir_variation9.phpt @@ -0,0 +1,117 @@ +--TEST-- +Test dir() function : usage variations - relative valid and invalid paths +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* + * Prototype : object dir(string $directory[, resource $context]) + * Description: Directory class with properties, handle and class and methods read, rewind and close + * Source code: ext/standard/dir.c + */ + +/* + * Checking the behavior of dir() function by passing directories which + * have valid and invalid relative path. + */ + +echo "*** Testing dir() : checking with valid and invalid paths ***\n"; + +/* create the temporary directories */ + +$file_path = dirname(__FILE__); + +// directory dir_variation91 with one sub-directory sub_dir11 and sub-sub-directory sub_dir111 +$dir_path1 = $file_path."/dir_variation91"; +$sub_dir11 = $dir_path1."/sub_dir11"; +$sub_dir111 = $sub_dir11."/sub_dir111"; + +// directory dir_variation92 with one sub-directory sub_dir21 +$dir_path2 = $file_path."/dir_variation92"; +$sub_dir21 = $dir_path2."/sub_dir21"; + +@mkdir($dir_path1); +@mkdir($dir_path2); +@mkdir($sub_dir11); +@mkdir($sub_dir111); +@mkdir($sub_dir21); + +// open the directory with valid paths +echo "\n-- With valid paths --\n"; +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/..") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91/sub_dir11/..") ); +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/../../../dir_variation92/sub_dir21/..") ); + +// open the directory with invalid path +echo "\n-- With invalid paths --\n"; +var_dump( dir("$dir_path1/sub_dir12/sub_dir111/..") ); +var_dump( dir("$dir_path2/sub_dir21/../dir_variation91") ); +var_dump( dir("$dir_path2/sub_dir21/../../dir_variation91/sub_dir12/..") ); +var_dump( dir("$dir_path1/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..") ); + +echo "Done"; +?> +--CLEAN-- +<?php +$file_path = dirname(__FILE__); + +$dir_path1 = $file_path."/dir_variation91"; +$sub_dir11 = $dir_path1."/sub_dir11"; +$sub_dir111 = $sub_dir11."/sub_dir111"; +$dir_path2 = $file_path."/dir_variation92"; +$sub_dir21 = $dir_path2."/sub_dir21"; + +rmdir($sub_dir21); +rmdir($sub_dir111); +rmdir($sub_dir11); +rmdir($dir_path1); +rmdir($dir_path2); +?> +--EXPECTF-- +*** Testing dir() : checking with valid and invalid paths *** + +-- With valid paths -- +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation91/sub_dir11/sub_dir111/.." + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation92/sub_dir21/../../dir_variation91" + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation92/sub_dir21/../../dir_variation91/sub_dir11/.." + ["handle"]=> + resource(%d) of type (stream) +} +object(Directory)#%d (2) { + ["path"]=> + string(%d) "%s/dir_variation91/sub_dir11/sub_dir111/../../../dir_variation92/sub_dir21/.." + ["handle"]=> + resource(%d) of type (stream) +} + +-- With invalid paths -- + +Warning: dir(%s/dir_variation91/sub_dir12/sub_dir111/..): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/dir_variation92/sub_dir21/../dir_variation91): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/dir_variation92/sub_dir21/../../dir_variation91/sub_dir12/..): failed to open dir: %s in %s on line %d +bool(false) + +Warning: dir(%s/dir_variation91/sub_dir11/sub_dir111/../../dir_variation92/sub_dir21/..): failed to open dir: %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/dir/getcwd_basic.phpt b/ext/standard/tests/dir/getcwd_basic.phpt new file mode 100644 index 0000000..ef720d0 --- /dev/null +++ b/ext/standard/tests/dir/getcwd_basic.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test getcwd() function : basic functionality +--FILE-- +<?php +/* Prototype : mixed getcwd(void) + * Description: Gets the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Test basic functionality of getcwd() + */ + +echo "*** Testing getcwd() : basic functionality ***\n"; + +//create temporary directory for test, removed in CLEAN section +$directory = dirname(__FILE__) . "/getcwd_basic"; +mkdir($directory); + +var_dump(getcwd()); +chdir($directory); +var_dump(getcwd()); +?> +===DONE=== +--CLEAN-- +<?php +$directory = dirname(__FILE__) . "/getcwd_basic"; +rmdir($directory); +?> +--EXPECTF-- +*** Testing getcwd() : basic functionality *** +string(%d) "%s" +string(%d) "%s%egetcwd_basic" +===DONE=== diff --git a/ext/standard/tests/dir/getcwd_error.phpt b/ext/standard/tests/dir/getcwd_error.phpt new file mode 100644 index 0000000..153f303 --- /dev/null +++ b/ext/standard/tests/dir/getcwd_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test getcwd() function : error conditions - Incorrect number of arguments +--FILE-- +<?php +/* Prototype : mixed getcwd(void) + * Description: Gets the current directory + * Source code: ext/standard/dir.c + */ + +/* + * Pass incorrect number of arguments to getcwd() to test behaviour + */ + +echo "*** Testing getcwd() : error conditions ***\n"; + +// One argument +echo "\n-- Testing getcwd() function with one argument --\n"; +$extra_arg = 10; +var_dump( getcwd($extra_arg) ); +?> +===DONE=== +--EXPECTF-- +*** Testing getcwd() : error conditions *** + +-- Testing getcwd() function with one argument -- + +Warning: getcwd() expects exactly 0 parameters, 1 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/opendir_basic.phpt b/ext/standard/tests/dir/opendir_basic.phpt new file mode 100644 index 0000000..17ada17 --- /dev/null +++ b/ext/standard/tests/dir/opendir_basic.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test opendir() function : basic functionality +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Test basic functionality of opendir() with absolute and relative paths as $path argument + */ + +echo "*** Testing opendir() : basic functionality ***\n"; + +$base_dir_path = dirname(__FILE__); + +$level_one_dir_name = "level_one"; +$level_one_dir_path = "$base_dir_path/$level_one_dir_name"; + +$level_two_dir_name = "level_two"; +$level_two_dir_path = "$base_dir_path/$level_one_dir_name/$level_two_dir_name"; + +// create temporary directories - will remove in CLEAN section +mkdir($level_one_dir_path); +mkdir($level_two_dir_path); + +echo "\n-- Testing opendir() with absolute path: --\n"; +var_dump($dh1 = opendir($level_one_dir_path)); + + +echo "\n-- Testing opendir() with relative paths: --\n"; +var_dump(chdir($level_one_dir_path)); +var_dump($dh2 = opendir($level_two_dir_name)); + +echo "\n-- Close directory handles: --\n"; +closedir($dh1); +var_dump($dh1); +closedir($dh2); +var_dump($dh2); +?> +===DONE=== +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +rmdir("$file_path/level_one/level_two"); +rmdir("$file_path/level_one"); +?> +--EXPECTF-- +*** Testing opendir() : basic functionality *** + +-- Testing opendir() with absolute path: -- +resource(%d) of type (stream) + +-- Testing opendir() with relative paths: -- +bool(true) +resource(%d) of type (stream) + +-- Close directory handles: -- +resource(%d) of type (Unknown) +resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_error1.phpt b/ext/standard/tests/dir/opendir_error1.phpt new file mode 100644 index 0000000..92b8eee --- /dev/null +++ b/ext/standard/tests/dir/opendir_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test opendir() function : error conditions - Incorrect number of args +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass incorrect number of arguments to opendir() to test behaviour + */ + +echo "*** Testing opendir() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing opendir() function with Zero arguments --\n"; +var_dump( opendir() ); + +//Test opendir with one more than the expected number of arguments +echo "\n-- Testing opendir() function with more than expected no. of arguments --\n"; +$path = dirname(__FILE__) . "/opendir_error"; +mkdir($path); +$context = stream_context_create(); + +$extra_arg = 10; +var_dump( opendir($path, $context, $extra_arg) ); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/opendir_error"; +rmdir($path); +?> +--EXPECTF-- +*** Testing opendir() : error conditions *** + +-- Testing opendir() function with Zero arguments -- + +Warning: opendir() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing opendir() function with more than expected no. of arguments -- + +Warning: opendir() expects at most 2 parameters, 3 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/opendir_error2-win32.phpt b/ext/standard/tests/dir/opendir_error2-win32.phpt new file mode 100644 index 0000000..c3ecd35 --- /dev/null +++ b/ext/standard/tests/dir/opendir_error2-win32.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test opendir() function : error conditions - Non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass a non-existent directory as $path argument to opendir() to test behaviour + */ + +echo "*** Testing opendir() : error conditions ***\n"; + +echo "\n-- Pass a non-existent absolute path: --\n"; +$path = dirname(__FILE__) . "/idonotexist"; +var_dump(opendir($path)); + +echo "\n-- Pass a non-existent relative path: --\n"; +chdir(dirname(__FILE__)); +var_dump(opendir('idonotexist')); +?> +===DONE=== +--EXPECTF-- +*** Testing opendir() : error conditions *** + +-- Pass a non-existent absolute path: -- + +Warning: opendir(%s/idonotexist,%s/idonotexist): The system cannot find the file specified. (code: %d) in %s on line %d + +Warning: opendir(%s/idonotexist): failed to open dir: %s in %s on line %d +bool(false) + +-- Pass a non-existent relative path: -- + +Warning: opendir(idonotexist,idonotexist): The system cannot find the file specified. (code: %d) in %s on line %d + +Warning: opendir(idonotexist): failed to open dir: %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_error2.phpt b/ext/standard/tests/dir/opendir_error2.phpt new file mode 100644 index 0000000..1c72409 --- /dev/null +++ b/ext/standard/tests/dir/opendir_error2.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test opendir() function : error conditions - Non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass a non-existent directory as $path argument to opendir() to test behaviour + */ + +echo "*** Testing opendir() : error conditions ***\n"; + +echo "\n-- Pass a non-existent absolute path: --\n"; +$path = dirname(__FILE__) . "/idonotexist"; +var_dump(opendir($path)); + +echo "\n-- Pass a non-existent relative path: --\n"; +chdir(dirname(__FILE__)); +var_dump(opendir('idonotexist')); +?> +===DONE=== +--EXPECTF-- +*** Testing opendir() : error conditions *** + +-- Pass a non-existent absolute path: -- + +Warning: opendir(%s/idonotexist): failed to open dir: %s in %s on line %d +bool(false) + +-- Pass a non-existent relative path: -- + +Warning: opendir(idonotexist): failed to open dir: %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation1-win32.phpt b/ext/standard/tests/dir/opendir_variation1-win32.phpt new file mode 100644 index 0000000..9a75a5b --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation1-win32.phpt @@ -0,0 +1,248 @@ +--TEST-- +Test opendir() function : usage variations - different data types as $path arg +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $path argument to opendir() to test behaviour + * Where possible, an existing directory has been entered as a string value + */ + +echo "*** Testing opendir() : usage variations ***\n"; + +// create directory to be passed as string value where possible +$path = dirname(__FILE__) . "/opendir_variation1"; +mkdir($path); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA { + + var $path; + function __construct($path) { + $this->path = $path; + } + public function __toString() { + return $this->path; + } +} + +// heredoc string +$heredoc = <<<EOT +$path +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $path argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "$path", + 'string', + $heredoc, + + // object data +/*22*/ new classA($path), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of opendir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( $dh = opendir($input) ); + if ($dh) { + closedir($dh); + } + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/opendir_variation1"; +rmdir($path); +?> +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- Iteration 1 -- + +Warning: opendir(0,0): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(0): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: opendir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: opendir(12345,12345): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(12345): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: opendir(-2345,-2345): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(-2345): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: opendir(10.5,10.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(10.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: opendir(-10.5,-10.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(-10.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: opendir(123456789000,123456789000): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(123456789000): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: opendir(1.23456789E-9,1.23456789E-9): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(1.23456789E-9): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: opendir(0.5,0.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(0.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- + +Warning: opendir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- + +Warning: opendir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- + +Warning: opendir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 19 -- +resource(%d) of type (stream) + +-- Iteration 20 -- + +Warning: opendir(string,string): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: opendir(string): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 21 -- +resource(%d) of type (stream) + +-- Iteration 22 -- +resource(%d) of type (stream) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- + +Warning: opendir() expects parameter 1 to be string, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation1.phpt b/ext/standard/tests/dir/opendir_variation1.phpt new file mode 100644 index 0000000..8d195e1 --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation1.phpt @@ -0,0 +1,224 @@ +--TEST-- +Test opendir() function : usage variations - different data types as $path arg +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $path argument to opendir() to test behaviour + * Where possible, an existing directory has been entered as a string value + */ + +echo "*** Testing opendir() : usage variations ***\n"; + +// create directory to be passed as string value where possible +$path = dirname(__FILE__) . "/opendir_variation1"; +mkdir($path); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA { + + var $path; + function __construct($path) { + $this->path = $path; + } + public function __toString() { + return $this->path; + } +} + +// heredoc string +$heredoc = <<<EOT +$path +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $path argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "$path", + 'string', + $heredoc, + + // object data +/*22*/ new classA($path), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of opendir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( $dh = opendir($input) ); + if ($dh) { + closedir($dh); + } + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/opendir_variation1"; +rmdir($path); +?> +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- Iteration 1 -- + +Warning: opendir(0): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: opendir(12345): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: opendir(-2345): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: opendir(10.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: opendir(-10.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: opendir(123456789000): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: opendir(1.23456789E-9): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: opendir(0.5): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- + +Warning: opendir(1): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- + +Warning: opendir() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Iteration 19 -- +resource(%d) of type (stream) + +-- Iteration 20 -- + +Warning: opendir(string): failed to open dir: %s in %s on line %d +bool(false) + +-- Iteration 21 -- +resource(%d) of type (stream) + +-- Iteration 22 -- +resource(%d) of type (stream) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- + +Warning: opendir() expects parameter 1 to be string, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation2.phpt b/ext/standard/tests/dir/opendir_variation2.phpt new file mode 100644 index 0000000..4236bec --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation2.phpt @@ -0,0 +1,239 @@ +--TEST-- +Test opendir() function : usage variations - different data types as $context arg +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $context argument to opendir() to test behaviour + */ + +echo "*** Testing opendir() : usage variation ***\n"; + + +// Initialise function arguments not being substituted (if any) +// create temporary directory for test, removed in CLEAN section +$path = dirname(__FILE__) . "/opendir_variation2"; +mkdir($path); + + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() + { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $context argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of opendir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump($dh = opendir($path, $input) );# + if ($dh) { + closedir($dh); + } + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/opendir_variation2"; +rmdir($path); +?> +--EXPECTF-- +*** Testing opendir() : usage variation *** + +-- Iteration 1 -- + +Warning: opendir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: opendir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: opendir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: opendir() expects parameter 2 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: opendir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: opendir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: opendir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: opendir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: opendir() expects parameter 2 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: opendir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: opendir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: opendir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: opendir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: opendir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: opendir() expects parameter 2 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: opendir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: opendir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: opendir() expects parameter 2 to be resource, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: opendir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: opendir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: opendir() expects parameter 2 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: opendir() expects parameter 2 to be resource, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: opendir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: opendir() expects parameter 2 to be resource, null given in %s on line %d +NULL + +-- Iteration 25 -- + +Warning: opendir(): supplied resource is not a valid Stream-Context resource in %s on line %d +resource(%d) of type (stream) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation3.phpt b/ext/standard/tests/dir/opendir_variation3.phpt new file mode 100644 index 0000000..3de0dd3 --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation3.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test opendir() function : usage variations - open a directory twice +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Call opendir() twice with the same directory as $path argument + */ + +echo "*** Testing opendir() : usage variation ***\n"; + +$path = dirname(__FILE__) . "/opendir_variation3"; +mkdir($path); + +echo "\n-- Open directory first time: --\n"; +var_dump($dh1 = opendir($path)); + +echo "\n-- Open directory second time: --\n"; +var_dump($dh2 = opendir($path)); + +if ($dh1 !== $dh2) { + echo "\nNew resource created\n"; +} else { + echo "\nNo new resource created\n"; +} + +closedir($dh1); +closedir($dh2); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/opendir_variation3"; +rmdir($path); +?> +--EXPECTF-- +*** Testing opendir() : usage variation *** + +-- Open directory first time: -- +resource(%d) of type (stream) + +-- Open directory second time: -- +resource(%d) of type (stream) + +New resource created +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation4.phpt b/ext/standard/tests/dir/opendir_variation4.phpt new file mode 100644 index 0000000..b206417 --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation4.phpt @@ -0,0 +1,107 @@ +--TEST-- +Test opendir() function : usage variations - different relative paths +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Test opendir() with different relative paths as $path argument + */ + +echo "*** Testing opendir() : usage variation ***\n"; + +$base_dir_path = dirname(__FILE__); + +$level_one_dir_name = "level_one"; +$level_one_dir_path = "$base_dir_path/$level_one_dir_name"; + +$level_two_dir_name = "level_two"; +$level_two_dir_path = "$base_dir_path/$level_one_dir_name/$level_two_dir_name"; + +// create directories +mkdir($level_one_dir_path); +mkdir($level_two_dir_path); + +echo "\n-- \$path = './level_one': --\n"; +var_dump(chdir($base_dir_path)); +var_dump($dh = opendir("./$level_one_dir_name")); +clean_dh($dh); + +echo "\n-- \$path = 'level_one/level_two': --\n"; +var_dump(chdir($base_dir_path)); +var_dump($dh = opendir("$level_one_dir_name/$level_two_dir_name")); +clean_dh($dh); + +echo "\n-- \$path = '..': --\n"; +var_dump($dh = opendir('..')); +clean_dh($dh); + +echo "\n-- \$path = 'level_two', '.': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump($dh = opendir('.')); +clean_dh($dh); + +echo "\n-- \$path = '../': --\n"; +var_dump($dh = opendir('../')); +clean_dh($dh); + +echo "\n-- \$path = './': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump($dh = opendir('./')); +clean_dh($dh); + +echo "\n-- \$path = '../../'level_one': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump($dh = opendir("../../$level_one_dir_name")); +clean_dh($dh); + +/* + * function to remove directory handle before re-using variable name in test + * and to ensure directory is not in use at CLEAN section so can me removed + */ +function clean_dh($dh){ + if (is_resource($dh)) { + closedir($dh); + } + unset($dh); +} +?> +===DONE=== +--CLEAN-- +<?php +$file_path = dirname(__FILE__); +rmdir("$file_path/level_one/level_two"); +rmdir("$file_path/level_one"); +?> +--EXPECTF-- +*** Testing opendir() : usage variation *** + +-- $path = './level_one': -- +bool(true) +resource(%d) of type (stream) + +-- $path = 'level_one/level_two': -- +bool(true) +resource(%d) of type (stream) + +-- $path = '..': -- +resource(%d) of type (stream) + +-- $path = 'level_two', '.': -- +bool(true) +resource(%d) of type (stream) + +-- $path = '../': -- +resource(%d) of type (stream) + +-- $path = './': -- +bool(true) +resource(%d) of type (stream) + +-- $path = '../../'level_one': -- +bool(true) +resource(%d) of type (stream) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation5.phpt b/ext/standard/tests/dir/opendir_variation5.phpt new file mode 100644 index 0000000..f9bb38c --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation5.phpt @@ -0,0 +1,103 @@ +--TEST-- +Test opendir() function : usage variations - directories with restricted permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__)."/dir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * remove the execute permission from the parent dir and test opendir() on child dir + * 1) remove write & execute permission from the 1st parent and test opendir() + * 2) remove execute permission from 2nd parent and test opendir() + */ + +echo "*** Testing opendir() : usage variations ***\n"; + +/* create the temporary directory : + * opendir_variation5 ( parent ) + * |-> sub_dir ( sub parent ) + * |-> child_dir ( child dir) + */ + +$parent_dir_path = dirname(__FILE__) . "/opendir_variation5"; +mkdir($parent_dir_path); +chmod($parent_dir_path, 0777); + +// create sub_dir +$sub_dir_path = $parent_dir_path . "/sub_dir"; +mkdir($sub_dir_path); +chmod($sub_dir_path, 0777); + +//create sub_sub_dir +$child_dir_path = $sub_dir_path."/child_dir"; +mkdir($child_dir_path); + +// remove the write and execute permisson from sub parent +chmod($sub_dir_path, 0444); + +echo "\n-- After restricting 1st level parent directory --\n"; +$dir_handle1 = opendir($child_dir_path); +var_dump( $dir_handle1 ); + +// remove the execute permisson from parent dir, allowing all permission for sub dir +chmod($sub_dir_path, 0777); // all permisson to sub dir +chmod($parent_dir_path, 0666); // restricting parent directory + +echo "\n-- After restricting parent directory --\n"; +$dir_handle2 = opendir($child_dir_path); // try to open, expected failure +var_dump( $dir_handle2 ); // dump it + +if (is_resource($dir_handle1)) { + closedir($dir_handle1); +} +if (is_resource($dir_handle2)) { + closedir($dir_handle2); +} +?> +===DONE=== +--CLEAN-- +<?php +$parent_dir_path = dirname(__FILE__) . "/opendir_variation5"; +$sub_dir_path = $parent_dir_path."/sub_dir"; +$child_dir_path = $sub_dir_path."/child_dir"; + +// changing permissions for each temporary directory to delete them +chmod($parent_dir_path, 0777); +chmod($sub_dir_path, 0777); +chmod($child_dir_path, 0777); + +rmdir($child_dir_path); +rmdir($sub_dir_path); +rmdir($parent_dir_path); +?> + +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- After restricting 1st level parent directory -- + +Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d +bool(false) + +-- After restricting parent directory -- + +Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation6-win32.phpt b/ext/standard/tests/dir/opendir_variation6-win32.phpt new file mode 100644 index 0000000..f54a2ad --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation6-win32.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test opendir() function : usage variations - Different wildcards +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass paths containing wildcards to test if opendir() recognises them + */ + +echo "*** Testing opendir() : usage variations ***\n"; +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path . "/opendir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +mkdir($dir_path); +mkdir($sub_dir_path); + +// with different wildcard characters + +echo "\n-- Wildcard = '*' --\n"; +var_dump( opendir($file_path . "/opendir_var*") ); +var_dump( opendir($file_path . "/*") ); + +echo "\n-- Wildcard = '?' --\n"; +var_dump( opendir($dir_path . "/sub_dir?") ); +var_dump( opendir($dir_path . "/sub?dir1") ); + +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/opendir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +rmdir($sub_dir_path); +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- Wildcard = '*' -- + +Warning: opendir(%s/opendir_var*,%s/opendir_var*): %s in %s on line %d + +Warning: opendir(%s/opendir_var*): failed to open dir: %s in %s on line %d +bool(false) + +Warning: opendir(%s/*,%s/*): %s in %s on line %d + +Warning: opendir(%s/*): failed to open dir: %s in %s on line %d +bool(false) + +-- Wildcard = '?' -- + +Warning: opendir(%s/opendir_variation6/sub_dir?,%s/opendir_variation6/sub_dir?): %s in %s on line %d + +Warning: opendir(%s/opendir_variation6/sub_dir?): failed to open dir: %s in %s on line %d +bool(false) + +Warning: opendir(%s/opendir_variation6/sub?dir1,%s/opendir_variation6/sub?dir1): %s in %s on line %d + +Warning: opendir(%s/opendir_variation6/sub?dir1): failed to open dir: %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation6.phpt b/ext/standard/tests/dir/opendir_variation6.phpt new file mode 100644 index 0000000..f3fc0bd --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation6.phpt @@ -0,0 +1,67 @@ +--TEST-- +Test opendir() function : usage variations - Different wildcards +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass paths containing wildcards to test if opendir() recognises them + */ + +echo "*** Testing opendir() : usage variations ***\n"; +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path . "/opendir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +mkdir($dir_path); +mkdir($sub_dir_path); + +// with different wildcard characters + +echo "\n-- Wildcard = '*' --\n"; +var_dump( opendir($file_path . "/opendir_var*") ); +var_dump( opendir($file_path . "/*") ); + +echo "\n-- Wildcard = '?' --\n"; +var_dump( opendir($dir_path . "/sub_dir?") ); +var_dump( opendir($dir_path . "/sub?dir1") ); + +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/opendir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +rmdir($sub_dir_path); +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- Wildcard = '*' -- + +Warning: opendir(%s/opendir_var*): failed to open dir: %s in %s on line %d +bool(false) + +Warning: opendir(%s/*): failed to open dir: %s in %s on line %d +bool(false) + +-- Wildcard = '?' -- + +Warning: opendir(%s/opendir_variation6/sub_dir?): failed to open dir: %s in %s on line %d +bool(false) + +Warning: opendir(%s/opendir_variation6/sub?dir1): failed to open dir: %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/opendir_variation7.phpt b/ext/standard/tests/dir/opendir_variation7.phpt new file mode 100644 index 0000000..2ad41b1 --- /dev/null +++ b/ext/standard/tests/dir/opendir_variation7.phpt @@ -0,0 +1,127 @@ +--TEST-- +Test opendir() function : usage variations - different directory permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__) . "/opendir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* Prototype : mixed opendir(string $path[, resource $context]) + * Description: Open a directory and return a dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Open a directory using opendir() with different directory permissions + */ + +echo "*** Testing opendir() : usage variations ***\n"; + +// create the temporary directory +$file_path = dirname(__FILE__); +$dir_path = $file_path . "/opendir_variation7"; +mkdir($dir_path); + +/* different values for directory permissions */ +$permission_values = array( +/*1*/ 0477, // owner has read only, other and group has rwx + 0677, // owner has rw only, other and group has rwx + +/*3*/ 0444, // all have read only + 0666, // all have rw only + +/*5*/ 0400, // owner has read only, group and others have no permission + 0600, // owner has rw only, group and others have no permission + +/*7*/ 0470, // owner has read only, group has rwx & others have no permission + 0407, // owner has read only, other has rwx & group has no permission + +/*9*/ 0670, // owner has rw only, group has rwx & others have no permission +/*10*/ 0607 // owner has rw only, group has no permission and others have rwx +); + +// Open directory with different permission values, read and close, expected: none of them to succeed. + +$iterator = 1; +foreach ($permission_values as $perm) { + + echo "\n-- Iteration $iterator --\n"; + // try to remove the dir if exists & create + if (is_dir($dir_path)){ + chmod ($dir_path, 0777); // change dir permission to allow all operation + rmdir ($dir_path); + } + mkdir($dir_path); + + // change the dir permisson to test dir on it + var_dump( chmod($dir_path, $perm) ); + + var_dump($dh = opendir($dir_path)); + + if (is_resource($dh)) { + closedir($dh); + } + $iterator++; +} +?> +===DONE=== +--CLEAN-- +<?php +// deleting temporary directory +$dir_path = dirname(__FILE__) . "/opendir_variation7"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing opendir() : usage variations *** + +-- Iteration 1 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 2 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 3 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 4 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 5 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 6 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 7 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 8 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 9 -- +bool(true) +resource(%d) of type (stream) + +-- Iteration 10 -- +bool(true) +resource(%d) of type (stream) +===DONE=== diff --git a/ext/standard/tests/dir/readdir_basic.phpt b/ext/standard/tests/dir/readdir_basic.phpt new file mode 100644 index 0000000..572a9a0 --- /dev/null +++ b/ext/standard/tests/dir/readdir_basic.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test readdir() function : basic functionality +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.C + */ + +/* + * Test basic functionality of readdir() + */ + +echo "*** Testing readdir() : basic functionality ***\n"; + +// include the file.inc for Function: function create_files() +chdir(dirname(__FILE__)); +include(dirname(__FILE__)."/../file/file.inc"); + +$path = dirname(__FILE__) . '/readdir_basic'; +mkdir($path); +create_files($path, 3); + +echo "\n-- Call readdir() with \$path argument --\n"; +var_dump($dh = opendir($path)); +$a = array(); +while( FALSE !== ($file = readdir($dh)) ) { + $a[] = $file; +} +sort($a); +foreach($a as $file) { + var_dump($file); +} + +echo "\n-- Call readdir() without \$path argument --\n"; +var_dump($dh = opendir($path)); +$a = array(); +while( FALSE !== ( $file = readdir() ) ) { + $a[] = $file; +} +sort($a); +foreach($a as $file) { + var_dump($file); +} + +delete_files($path, 3); +closedir($dh); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . '/readdir_basic'; +rmdir($path); +?> +--EXPECTF-- +*** Testing readdir() : basic functionality *** + +-- Call readdir() with $path argument -- +resource(%d) of type (stream) +string(1) "." +string(2) ".." +string(9) "file1.tmp" +string(9) "file2.tmp" +string(9) "file3.tmp" + +-- Call readdir() without $path argument -- +resource(%d) of type (stream) +string(1) "." +string(2) ".." +string(9) "file1.tmp" +string(9) "file2.tmp" +string(9) "file3.tmp" +===DONE=== diff --git a/ext/standard/tests/dir/readdir_error.phpt b/ext/standard/tests/dir/readdir_error.phpt new file mode 100644 index 0000000..23ba3df --- /dev/null +++ b/ext/standard/tests/dir/readdir_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test readdir() function : error conditions - Incorrect number of args +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass incorrect number of arguments to readdir() to test behaviour + */ + +echo "*** Testing readdir() : error conditions ***\n"; + + +//Test readdir with one more than the expected number of arguments +echo "\n-- Testing readdir() function with more than expected no. of arguments --\n"; + +$path = dirname(__FILE__) . "/readdir_error"; +mkdir($path); +$dir_handle = opendir($path); +$extra_arg = 10; + +var_dump( readdir($dir_handle, $extra_arg) ); + +// close the handle so can remove dir in CLEAN section +closedir($dir_handle); +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . "/readdir_error"; +rmdir($path); +?> +--EXPECTF-- +*** Testing readdir() : error conditions *** + +-- Testing readdir() function with more than expected no. of arguments -- + +Warning: readdir() expects at most 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation1.phpt b/ext/standard/tests/dir/readdir_variation1.phpt new file mode 100644 index 0000000..7fe9970 --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation1.phpt @@ -0,0 +1,210 @@ +--TEST-- +Test readdir() function : usage variations - different data types as $dir_handle arg +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $dir_handle argument to readdir() to test behaviour + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// unexpected values to be passed to $dir_handle argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, +); + +// loop through each element of $inputs to check the behavior of readdir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( readdir($input) ); + $iterator++; +}; +?> +===DONE=== +--EXPECTF-- +*** Testing readdir() : usage variations *** + +-- Iteration 1 -- + +Warning: readdir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: readdir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: readdir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: readdir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: readdir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: readdir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: readdir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: readdir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: readdir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: readdir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: readdir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: readdir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: readdir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: readdir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: readdir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: readdir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: readdir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: readdir() expects parameter 1 to be resource, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: readdir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: readdir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: readdir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: readdir() expects parameter 1 to be resource, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: readdir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: readdir() expects parameter 1 to be resource, null given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation2.phpt b/ext/standard/tests/dir/readdir_variation2.phpt new file mode 100644 index 0000000..c689ed9 --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation2.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test readdir() function : usage variations - empty directories +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass readdir() a directory handle pointing to an empty directory to test behaviour + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +$path = dirname(__FILE__) . '/readdir_variation2'; +mkdir($path); +$dir_handle = opendir($path); + +echo "\n-- Pass an empty directory to readdir() --\n"; +function mysort($a,$b) { + return strlen($a) > strlen($b) ? 1 : -1; +} +$entries = array(); +while(FALSE !== ($file = readdir($dir_handle))){ + $entries[] = $file; +} + +closedir($dir_handle); + +usort($entries, "mysort"); +foreach($entries as $entry) { + var_dump($entry); +} +?> +===DONE=== +--CLEAN-- +<?php +$path = dirname(__FILE__) . '/readdir_variation2'; +rmdir($path); +?> +--EXPECTF-- +*** Testing readdir() : usage variations *** + +-- Pass an empty directory to readdir() -- +string(1) "." +string(2) ".." +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation3.phpt b/ext/standard/tests/dir/readdir_variation3.phpt new file mode 100644 index 0000000..4e73e74 --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation3.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test readdir() function : usage variations - sub-directories +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory handle pointing to a directory that has a sub-directory + * to test behaviour of readdir() + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +// include the file.inc for Function: function create_files() +chdir(dirname(__FILE__)); +include(dirname(__FILE__)."/../file/file.inc"); + +$path_top = dirname(__FILE__) . '/readdir_variation3'; +$path_sub = $path_top . '/sub_folder'; +mkdir($path_top); +mkdir($path_sub); + +create_files($path_top, 2); +create_files($path_sub, 2); + +$dir_handle = opendir($path_top); +while(FALSE !== ($file = readdir($dir_handle))) { + + // different OS order files differently so will + // store file names into an array so can use sorted in expected output + $contents[] = $file; +} + +// more important to check that all contents are present than order they are returned in +sort($contents); +var_dump($contents); + +delete_files($path_top, 2); +delete_files($path_sub, 2); + +closedir($dir_handle); +?> +===DONE=== +--CLEAN-- +<?php +$path_top = dirname(__FILE__) . '/readdir_variation3'; +$path_sub = $path_top . '/sub_folder'; +rmdir($path_sub); +rmdir($path_top); +?> +--EXPECTF-- +*** Testing readdir() : usage variations *** +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file1.tmp" + [3]=> + string(9) "file2.tmp" + [4]=> + string(10) "sub_folder" +} +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation4.phpt b/ext/standard/tests/dir/readdir_variation4.phpt new file mode 100644 index 0000000..9b04a98 --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation4.phpt @@ -0,0 +1,178 @@ +--TEST-- +Test readdir() function : usage variations - different file names +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory handle pointing to a directory that contains + * files with different file names to test how readdir() reads them + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +$dir_path = dirname(__FILE__) . "/readdir_variation4/"; +mkdir($dir_path); + +// heredoc string +$heredoc = <<<EOT +hd_file +EOT; + +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // empty data +/*10*/ "", + array(), + + // string data +/*12*/ "double_file", + 'single_file', + $heredoc, +); + +$iterator = 1; +foreach($inputs as $key => $input) { + echo "\n-- Iteration $iterator --\n"; + $handle = "fp{$iterator}"; + var_dump( $$handle = fopen(@"$dir_path$input.tmp", 'w') ); + var_dump( fwrite($$handle, $key)); + fclose($$handle); + $iterator++; +}; + +echo "\n-- Call to readdir() --\n"; +$dir_handle = opendir($dir_path); +while(FALSE !== ($file = readdir($dir_handle))){ + + // different OS order files differently so will + // store file names into an array so can use sorted in expected output + $contents[] = $file; + + // remove files while going through directory + @unlink($dir_path . $file); +} + +// more important to check that all contents are present than order they are returned in +sort($contents); +var_dump($contents); + +closedir($dir_handle); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/readdir_variation4/"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing readdir() : usage variations *** + +-- Iteration 1 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 2 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 3 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 4 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 5 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 6 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 7 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 8 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 9 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 10 -- +resource(%d) of type (stream) +int(1) + +-- Iteration 11 -- +resource(%d) of type (stream) +int(2) + +-- Iteration 12 -- +resource(%d) of type (stream) +int(2) + +-- Iteration 13 -- +resource(%d) of type (stream) +int(2) + +-- Iteration 14 -- +resource(%d) of type (stream) +int(2) + +-- Call to readdir() -- +array(16) { + [0]=> + string(9) "-10.5.tmp" + [1]=> + string(9) "-2345.tmp" + [2]=> + string(1) "." + [3]=> + string(2) ".." + [4]=> + string(4) ".tmp" + [5]=> + string(7) "0.5.tmp" + [6]=> + string(5) "0.tmp" + [7]=> + string(17) "1.23456789E-9.tmp" + [8]=> + string(5) "1.tmp" + [9]=> + string(8) "10.5.tmp" + [10]=> + string(9) "12345.tmp" + [11]=> + string(16) "123456789000.tmp" + [12]=> + string(9) "Array.tmp" + [13]=> + string(15) "double_file.tmp" + [14]=> + string(11) "hd_file.tmp" + [15]=> + string(15) "single_file.tmp" +} +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation5.phpt b/ext/standard/tests/dir/readdir_variation5.phpt new file mode 100644 index 0000000..8c12f13 --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation5.phpt @@ -0,0 +1,144 @@ +--TEST-- +Test readdir() function : usage variations - different permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__)."/readdir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Open a directory with different premissions then try to read it + * to test behaviour of readdir() + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +// create the temporary directory +$dir_path = dirname(__FILE__) . "/readdir_variation5"; +mkdir($dir_path); + +/* different values for directory permissions */ +$permission_values = array( +/*1*/ 0477, // owner has read only, other and group has rwx + 0677, // owner has rw only, other and group has rwx + +/*3*/ 0444, // all have read only + 0666, // all have rw only + +/*5*/ 0400, // owner has read only, group and others have no permission + 0600, // owner has rw only, group and others have no permission + +/*7*/ 0470, // owner has read only, group has rwx & others have no permission + 0407, // owner has read only, other has rwx & group has no permission + +/*9*/ 0670, // owner has rw only, group has rwx & others have no permission +/*10*/ 0607 // owner has rw only, group has no permission and others have rwx +); + +// Open directory with different permission values, read and close, expected: none of them to succeed. +$iterator = 1; +foreach($permission_values as $perm) { + echo "\n-- Iteration $iterator --\n"; + + if (is_dir($dir_path)) { + chmod ($dir_path, 0777); // change dir permission to allow all operation + rmdir ($dir_path); + } + mkdir($dir_path); + + // change the dir permisson to test dir on it + var_dump( chmod($dir_path, $perm) ); + var_dump($dh = opendir($dir_path)); + + echo "-- Calling readdir() --\n"; + var_dump(readdir($dh)); + + closedir($dh); + $iterator++; +} +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/readdir_variation5"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing readdir() : usage variations *** + +-- Iteration 1 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 2 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 3 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 4 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 5 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 6 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 7 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 8 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 9 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" + +-- Iteration 10 -- +bool(true) +resource(%d) of type (stream) +-- Calling readdir() -- +string(%d) "%s" +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation6.phpt b/ext/standard/tests/dir/readdir_variation6.phpt new file mode 100644 index 0000000..eec673e --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation6.phpt @@ -0,0 +1,80 @@ +--TEST-- +Test readdir() function : usage variations - operate on previously opened directory +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Open two directory handles on the same directory and pass both + * to readdir() to test behaviour + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +// include the file.inc for Function: function create_files() +include( dirname(__FILE__)."/../file/file.inc"); + +// create the temporary directory +$dir_path = dirname(__FILE__) . "/readdir_variation6"; +mkdir($dir_path); + +// create files within the temporary directory +create_files($dir_path, 3, "alphanumeric", 0755, 1, "w", "readdir_variation6"); + +// open the directory +$dir_handle1 = opendir($dir_path); + +// open the same directory again without closing it +opendir($dir_path); + +echo "\n-- Reading Directory Contents with Previous Handle --\n"; +$a = array(); +while (FALSE !== ($file = readdir($dir_handle1))) { + $a[] = $file; +} +sort($a); +foreach ($a as $file) { + var_dump($file); +} + +echo "\n-- Reading Directory Contents with Current Handle (no arguments supplied) --\n"; +$a = array(); +while (FALSE !== ($file = readdir())) { + $a[] = $file; +} +sort($a); +foreach ($a as $file) { + var_dump($file); +} + +// delete temporary files +delete_files($dir_path, 3, "readdir_variation6"); +closedir($dir_handle1); +closedir(); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/readdir_variation6"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing readdir() : usage variations *** + +-- Reading Directory Contents with Previous Handle -- +string(1) "." +string(2) ".." +string(23) "readdir_variation61.tmp" +string(23) "readdir_variation62.tmp" +string(23) "readdir_variation63.tmp" + +-- Reading Directory Contents with Current Handle (no arguments supplied) -- +string(1) "." +string(2) ".." +string(23) "readdir_variation61.tmp" +string(23) "readdir_variation62.tmp" +string(23) "readdir_variation63.tmp" +===DONE=== diff --git a/ext/standard/tests/dir/readdir_variation7.phpt b/ext/standard/tests/dir/readdir_variation7.phpt new file mode 100644 index 0000000..bff87ce --- /dev/null +++ b/ext/standard/tests/dir/readdir_variation7.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test readdir() function : usage variations - use file pointers +--FILE-- +<?php +/* Prototype : string readdir([resource $dir_handle]) + * Description: Read directory entry from dir_handle + * Source code: ext/standard/dir.c + */ + +/* + * Open a file pointer using fopen and pass to readdir() to test behaviour + */ + +echo "*** Testing readdir() : usage variations ***\n"; + +// get a resource variable +var_dump($fp = fopen(__FILE__, "r")); +var_dump( readdir($fp) ); + +?> +===DONE=== +--EXPECTF-- +*** Testing readdir() : usage variations *** +resource(%d) of type (stream) + +Warning: readdir(): %d is not a valid Directory resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_basic.phpt b/ext/standard/tests/dir/rewinddir_basic.phpt new file mode 100644 index 0000000..2d1f783 --- /dev/null +++ b/ext/standard/tests/dir/rewinddir_basic.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test rewinddir() function : basic functionality +--FILE-- +<?php +/* Prototype : void rewinddir([resource $dir_handle]) + * Description: Rewind dir_handle back to the start + * Source code: ext/standard/dir.c + * Alias to functions: rewind + */ + +/* + * Test basic functionality of rewinddir() + */ + +echo "*** Testing rewinddir() : basic functionality ***\n"; + +// include file.inc for create_files function +include(dirname(__FILE__) . "/../file/file.inc"); + +$dir_path1 = dirname(__FILE__) . "/rewinddir_basic_dir1"; +$dir_path2 = dirname(__FILE__) . "/rewinddir_basic_dir2"; +mkdir($dir_path1); +mkdir($dir_path2); + +@create_files($dir_path1, 1); +@create_files($dir_path2, 1, 'numeric', 0755, 1, 'w', 'file', 2); +var_dump($dh1 = opendir($dir_path1)); +var_dump($dh2 = opendir($dir_path2)); + +$data = array(); +echo "\n-- Read and rewind first directory (argument supplied) --\n"; +while(FALSE !== $file1 = readdir($dh1)) { + $data[] = $file1; +} +$first = $data[0]; +sort($data); +var_dump($data); + +var_dump(rewinddir($dh1)); +var_dump(readdir($dh1) == $first); + +$data = array(); +echo "\n-- Read and rewind second directory (no argument supplied) --\n"; +while(FALSE !== $file2 = readdir()) { + $data[] = $file2; +} +$first = $data[0]; +sort($data); +var_dump($data); + +var_dump(rewinddir()); +var_dump(readdir() == $first); + +closedir($dh1); +closedir($dh2); + +delete_files($dir_path1, 1); +delete_files($dir_path2, 1, 'file', 2); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path1 = dirname(__FILE__) . "/rewinddir_basic_dir1"; +$dir_path2 = dirname(__FILE__) . "/rewinddir_basic_dir2"; +rmdir($dir_path1); +rmdir($dir_path2); +?> +--EXPECTF-- +*** Testing rewinddir() : basic functionality *** +resource(%d) of type (stream) +resource(%d) of type (stream) + +-- Read and rewind first directory (argument supplied) -- +array(3) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file1.tmp" +} +NULL +bool(true) + +-- Read and rewind second directory (no argument supplied) -- +array(3) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file2.tmp" +} +NULL +bool(true) +===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_error.phpt b/ext/standard/tests/dir/rewinddir_error.phpt new file mode 100644 index 0000000..b3bb02b --- /dev/null +++ b/ext/standard/tests/dir/rewinddir_error.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test rewinddir() function : error conditions - incorrect number of args +--FILE-- +<?php +/* Prototype : void rewinddir([resource $dir_handle]) + * Description: Rewind dir_handle back to the start + * Source code: ext/standard/dir.c + * Alias to functions: rewind + */ + +/* + * Pass incorrect number of arguments to rewinddir() to test behaviour + */ + +echo "*** Testing rewinddir() : error conditions ***\n"; + + +//Test rewinddir with one more than the expected number of arguments +echo "\n-- Testing rewinddir() function with more than expected no. of arguments --\n"; + +$dir_path = dirname(__FILE__) . "/rewinddir_error"; +mkdir($dir_path); +$dir_handle = opendir($dir_path); +$extra_arg = 10; + +var_dump( rewinddir($dir_handle, $extra_arg) ); +closedir($dir_handle); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/rewinddir_error"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing rewinddir() : error conditions *** + +-- Testing rewinddir() function with more than expected no. of arguments -- + +Warning: rewinddir() expects at most 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_variation1.phpt b/ext/standard/tests/dir/rewinddir_variation1.phpt new file mode 100644 index 0000000..66cd1f6 --- /dev/null +++ b/ext/standard/tests/dir/rewinddir_variation1.phpt @@ -0,0 +1,211 @@ +--TEST-- +Test rewinddir() function : usage variations - different data types as $dir_handle arg +--FILE-- +<?php +/* Prototype : void rewinddir([resource $dir_handle]) + * Description: Rewind dir_handle back to the start + * Source code: ext/standard/dir.c + * Alias to functions: rewind + */ + +/* + * Pass different data types as $dir_handle argument to rewinddir() to test behaviour + */ + +echo "*** Testing rewinddir() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// unexpected values to be passed to $dir_handle argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, +); + +// loop through each element of $inputs to check the behavior of rewinddir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( rewinddir($input) ); + $iterator++; +}; +?> +===DONE=== +--EXPECTF-- +*** Testing rewinddir() : usage variations *** + +-- Iteration 1 -- + +Warning: rewinddir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: rewinddir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: rewinddir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: rewinddir() expects parameter 1 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: rewinddir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: rewinddir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: rewinddir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: rewinddir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: rewinddir() expects parameter 1 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: rewinddir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: rewinddir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: rewinddir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: rewinddir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: rewinddir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: rewinddir() expects parameter 1 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: rewinddir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: rewinddir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: rewinddir() expects parameter 1 to be resource, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: rewinddir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: rewinddir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: rewinddir() expects parameter 1 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: rewinddir() expects parameter 1 to be resource, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: rewinddir() expects parameter 1 to be resource, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: rewinddir() expects parameter 1 to be resource, null given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_variation2.phpt b/ext/standard/tests/dir/rewinddir_variation2.phpt new file mode 100644 index 0000000..7594cc2 --- /dev/null +++ b/ext/standard/tests/dir/rewinddir_variation2.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test rewinddir() function : usage variations - operate on a closed directory +--FILE-- +<?php +/* Prototype : void rewinddir([resource $dir_handle]) + * Description: Rewind dir_handle back to the start + * Source code: ext/standard/dir.c + * Alias to functions: rewind + */ + +/* + * Open and close a directory handle then call rewinddir() to test behaviour + */ + +echo "*** Testing rewinddir() : usage variations ***\n"; + +$dir_path = dirname(__FILE__) . '/rewinddir_variation2'; +mkdir($dir_path); + +echo "\n-- Create the directory handle, read and close the directory --\n"; +var_dump($dir_handle = opendir($dir_path)); +var_dump(readdir($dir_handle)); +closedir($dir_handle); + +echo "\n-- Call to rewinddir() --\n"; +var_dump(rewinddir($dir_handle)); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . '/rewinddir_variation2'; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing rewinddir() : usage variations *** + +-- Create the directory handle, read and close the directory -- +resource(%d) of type (stream) +string(%d) "%s" + +-- Call to rewinddir() -- + +Warning: rewinddir(): %d is not a valid Directory resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_variation3.phpt b/ext/standard/tests/dir/rewinddir_variation3.phpt new file mode 100644 index 0000000..2a2af89 --- /dev/null +++ b/ext/standard/tests/dir/rewinddir_variation3.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test rewinddir() function : usage variations - file pointers +--FILE-- +<?php +/* Prototype : void rewinddir([resource $dir_handle]) + * Description: Rewind dir_handle back to the start + * Source code: ext/standard/dir.c + * Alias to functions: rewind + */ + +/* + * Pass a file pointer to rewinddir() to test behaviour + */ + +echo "*** Testing rewinddir() : usage variations ***\n"; + +echo "\n-- Open a file using fopen --\n"; +var_dump($fp = fopen(__FILE__, 'r')); + +$result1 = fread($fp, 5); +var_dump(rewinddir($fp)); +$result2 = fread($fp, 5); + +echo "\n-- Check if rewinddir() has repositioned the file pointer --\n"; +if ($result1 === $result2) { + echo "rewinddir() works on file pointers\n"; +} else { + echo "rewinddir() does not work on file pointers\n"; +} +?> +===DONE=== +--EXPECTF-- +*** Testing rewinddir() : usage variations *** + +-- Open a file using fopen -- +resource(%d) of type (stream) + +Warning: rewinddir(): %d is not a valid Directory resource in %s on line %d +bool(false) + +-- Check if rewinddir() has repositioned the file pointer -- +rewinddir() does not work on file pointers +===DONE=== diff --git a/ext/standard/tests/dir/scandir_basic.phpt b/ext/standard/tests/dir/scandir_basic.phpt new file mode 100644 index 0000000..7a044da --- /dev/null +++ b/ext/standard/tests/dir/scandir_basic.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test scandir() function : basic functionality +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Test basic functionality of scandir() + */ + +echo "*** Testing scandir() : basic functionality ***\n"; + +// include file.inc for create_files function +include (dirname(__FILE__) . '/../file/file.inc'); + +// set up directory +$directory = dirname(__FILE__) . '/scandir_basic'; +mkdir($directory); +create_files($directory, 3); + +echo "\n-- scandir() with mandatory arguments --\n"; +var_dump(scandir($directory)); + +echo "\n-- scandir() with all arguments --\n"; +$sorting_order = SCANDIR_SORT_DESCENDING; +$context = stream_context_create(); +var_dump(scandir($directory, $sorting_order, $context)); + +delete_files($directory, 3); +?> +===DONE=== +--CLEAN-- +<?php +$directory = dirname(__FILE__) . '/scandir_basic'; +rmdir($directory); +?> +--EXPECTF-- +*** Testing scandir() : basic functionality *** + +-- scandir() with mandatory arguments -- +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file1.tmp" + [3]=> + string(9) "file2.tmp" + [4]=> + string(9) "file3.tmp" +} + +-- scandir() with all arguments -- +array(5) { + [0]=> + string(9) "file3.tmp" + [1]=> + string(9) "file2.tmp" + [2]=> + string(9) "file1.tmp" + [3]=> + string(2) ".." + [4]=> + string(1) "." +} +===DONE=== diff --git a/ext/standard/tests/dir/scandir_error1.phpt b/ext/standard/tests/dir/scandir_error1.phpt new file mode 100644 index 0000000..7fbffba --- /dev/null +++ b/ext/standard/tests/dir/scandir_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test scandir() function : error conditions - Incorrect number of args +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass incorrect number of arguments to scandir() to test behaviour + */ + +echo "*** Testing scandir() : error conditions ***\n"; + +// Zero arguments +echo "\n-- Testing scandir() function with Zero arguments --\n"; +var_dump( scandir() ); + +//Test scandir with one more than the expected number of arguments +echo "\n-- Testing scandir() function with more than expected no. of arguments --\n"; +$dir = dirname(__FILE__) . '/scandir_error'; +mkdir($dir); +$sorting_order = 10; +$context = stream_context_create(); +$extra_arg = 10; +var_dump( scandir($dir, $sorting_order, $context, $extra_arg) ); +?> +===DONE=== +--CLEAN-- +<?php +$directory = dirname(__FILE__) . '/scandir_error'; +rmdir($directory); +?> +--EXPECTF-- +*** Testing scandir() : error conditions *** + +-- Testing scandir() function with Zero arguments -- + +Warning: scandir() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing scandir() function with more than expected no. of arguments -- + +Warning: scandir() expects at most 3 parameters, 4 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/scandir_error2-win32.phpt b/ext/standard/tests/dir/scandir_error2-win32.phpt new file mode 100644 index 0000000..9920be7 --- /dev/null +++ b/ext/standard/tests/dir/scandir_error2-win32.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test scandir() function : error conditions - Non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory that does not exist to scandir() to test error messages + */ + +echo "*** Testing scandir() : error conditions ***\n"; + +$directory = dirname(__FILE__) . '/idonotexist'; + +echo "\n-- Pass scandir() an absolute path that does not exist --\n"; +var_dump(scandir($directory)); + +echo "\n-- Pass scandir() a relative path that does not exist --\n"; +var_dump(scandir('/idonotexist')); +?> +===DONE=== +--EXPECTF-- +*** Testing scandir() : error conditions *** + +-- Pass scandir() an absolute path that does not exist -- + +Warning: scandir(%s/idonotexist,%s/idonotexist): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(%s/idonotexist): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Pass scandir() a relative path that does not exist -- + +Warning: scandir(/idonotexist,/idonotexist): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(/idonotexist): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_error2.phpt b/ext/standard/tests/dir/scandir_error2.phpt new file mode 100644 index 0000000..b5bfc28 --- /dev/null +++ b/ext/standard/tests/dir/scandir_error2.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test scandir() function : error conditions - Non-existent directory +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory that does not exist to scandir() to test error messages + */ + +echo "*** Testing scandir() : error conditions ***\n"; + +$directory = dirname(__FILE__) . '/idonotexist'; + +echo "\n-- Pass scandir() an absolute path that does not exist --\n"; +var_dump(scandir($directory)); + +echo "\n-- Pass scandir() a relative path that does not exist --\n"; +var_dump(scandir('/idonotexist')); +?> +===DONE=== +--EXPECTF-- +*** Testing scandir() : error conditions *** + +-- Pass scandir() an absolute path that does not exist -- + +Warning: scandir(%s/idonotexist): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Pass scandir() a relative path that does not exist -- + +Warning: scandir(/idonotexist): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation1-win32.phpt b/ext/standard/tests/dir/scandir_variation1-win32.phpt new file mode 100644 index 0000000..a2b5bd4 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation1-win32.phpt @@ -0,0 +1,289 @@ +--TEST-- +Test scandir() function : usage variations - different data types as $dir arg +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $dir argument to test behaviour of scandir() + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $dir argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of scandir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( scandir($input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- + +Warning: scandir(0,0): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(0): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: scandir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(1): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: scandir(12345,12345): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(12345): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: scandir(-2345,-2345): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(-2345): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: scandir(10.5,10.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(10.5): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: scandir(-10.5,-10.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(-10.5): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: scandir(123456789000,123456789000): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(123456789000): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: scandir(1.23456789E-9,1.23456789E-9): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(1.23456789E-9): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: scandir(0.5,0.5): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(0.5): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: scandir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(1): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: scandir(1,1): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(1): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: scandir() expects parameter 1 to be a valid path, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: scandir(string,string): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(string): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: scandir(string,string): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(string): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: scandir(hello world,hello world): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(hello world): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: scandir(Class A object,Class A object): The system cannot find the file specified. (code: 2) in %s on line %d + +Warning: scandir(Class A object): failed to open dir: No such file or directory in %sscandir_variation1-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: scandir() expects parameter 1 to be a valid path, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation1.phpt b/ext/standard/tests/dir/scandir_variation1.phpt new file mode 100644 index 0000000..ccd5bb9 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation1.phpt @@ -0,0 +1,259 @@ +--TEST-- +Test scandir() function : usage variations - different data types as $dir arg +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $dir argument to test behaviour of scandir() + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $dir argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of scandir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( scandir($input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- + +Warning: scandir(0): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: scandir(1): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: scandir(12345): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: scandir(-2345): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: scandir(10.5): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: scandir(-10.5): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: scandir(123456789000): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: scandir(1.23456789E-9): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: scandir(0.5): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: scandir(1): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: scandir(1): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: scandir() expects parameter 1 to be a valid path, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: scandir(string): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: scandir(string): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: scandir(hello world): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: scandir(Class A object): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: scandir(): Directory name cannot be empty in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: scandir() expects parameter 1 to be a valid path, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation10.phpt b/ext/standard/tests/dir/scandir_variation10.phpt new file mode 100644 index 0000000..412836b --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation10.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test scandir() function : usage variations - different sorting constants +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +printf("SCANDIR_SORT_ASCENDING: %d\n", SCANDIR_SORT_ASCENDING); +printf("SCANDIR_SORT_DESCENDING: %d\n", SCANDIR_SORT_DESCENDING); +printf("SCANDIR_SORT_NONE: %d\n", SCANDIR_SORT_NONE); + +/* + * Pass different integers as $sorting_order argument to test how scandir() + * re-orders the array + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// include for create_files/delete_files functions +include(dirname(__FILE__) . '/../file/file.inc'); + +// create directory and files +$dir = dirname(__FILE__) . '/scandir_variation10'; +mkdir($dir); +@create_files($dir, 2); + +// Deterministic tests. +var_dump(scandir($dir, SCANDIR_SORT_ASCENDING)); +var_dump(scandir($dir, SCANDIR_SORT_DESCENDING)); + +// Non-deterministic tests. +$files = scandir($dir, SCANDIR_SORT_NONE); +var_dump(count($files)); +var_dump(in_array('.', $files)); +var_dump(in_array('..', $files)); +var_dump(in_array('file1.tmp', $files)); +var_dump(in_array('file2.tmp', $files)); + +delete_files($dir, 2); +?> +===DONE=== +--CLEAN-- +<?php +$dir = dirname(__FILE__) . '/scandir_variation10'; +rmdir($dir); +?> +--EXPECTF-- +SCANDIR_SORT_ASCENDING: 0 +SCANDIR_SORT_DESCENDING: 1 +SCANDIR_SORT_NONE: 2 +*** Testing scandir() : usage variations *** +array(4) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file1.tmp" + [3]=> + string(9) "file2.tmp" +} +array(4) { + [0]=> + string(9) "file2.tmp" + [1]=> + string(9) "file1.tmp" + [2]=> + string(2) ".." + [3]=> + string(1) "." +} +int(4) +bool(true) +bool(true) +bool(true) +bool(true) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation2.phpt b/ext/standard/tests/dir/scandir_variation2.phpt new file mode 100644 index 0000000..e6033f2 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation2.phpt @@ -0,0 +1,283 @@ +--TEST-- +Test scandir() function : usage variations - diff data types as $sorting_order arg +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $sorting_order argument to test how scandir() behaves + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// Initialise function arguments not being substituted +$dir = dirname(__FILE__) . '/scandir_variation2'; +mkdir($dir); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $sorting_order argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of scandir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( scandir($dir, $input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- +<?php +$dir = dirname(__FILE__) . '/scandir_variation2'; +rmdir($dir); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 2 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 3 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 4 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 5 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 6 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 7 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 8 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 9 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 10 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 11 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 12 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 13 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 14 -- +array(2) { + [0]=> + string(2) ".." + [1]=> + string(1) "." +} + +-- Iteration 15 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 16 -- + +Warning: scandir() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: scandir() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: scandir() expects parameter 2 to be long, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: scandir() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: scandir() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: scandir() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: scandir() expects parameter 2 to be long, object given in %s on line %d +NULL + +-- Iteration 23 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 24 -- +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 25 -- + +Warning: scandir() expects parameter 2 to be long, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation3.phpt b/ext/standard/tests/dir/scandir_variation3.phpt new file mode 100644 index 0000000..58da5e2 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation3.phpt @@ -0,0 +1,238 @@ +--TEST-- +Test scandir() function : usage variations - diff data types as $context arg +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass different data types as $context argument to test how scandir() behaves + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// Initialise function arguments not being substituted +$dir = dirname(__FILE__) . '/scandir_variation3'; +mkdir($dir); +$sorting_order = SCANDIR_SORT_ASCENDING; + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = <<<EOT +hello world +EOT; + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $context argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of scandir() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( scandir($dir, $sorting_order, $input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- +<?php +$dir = dirname(__FILE__) . '/scandir_variation3'; +rmdir($dir); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- + +Warning: scandir() expects parameter 3 to be resource, integer given in %s on line %d +NULL + +-- Iteration 2 -- + +Warning: scandir() expects parameter 3 to be resource, integer given in %s on line %d +NULL + +-- Iteration 3 -- + +Warning: scandir() expects parameter 3 to be resource, integer given in %s on line %d +NULL + +-- Iteration 4 -- + +Warning: scandir() expects parameter 3 to be resource, integer given in %s on line %d +NULL + +-- Iteration 5 -- + +Warning: scandir() expects parameter 3 to be resource, double given in %s on line %d +NULL + +-- Iteration 6 -- + +Warning: scandir() expects parameter 3 to be resource, double given in %s on line %d +NULL + +-- Iteration 7 -- + +Warning: scandir() expects parameter 3 to be resource, double given in %s on line %d +NULL + +-- Iteration 8 -- + +Warning: scandir() expects parameter 3 to be resource, double given in %s on line %d +NULL + +-- Iteration 9 -- + +Warning: scandir() expects parameter 3 to be resource, double given in %s on line %d +NULL + +-- Iteration 10 -- + +Warning: scandir() expects parameter 3 to be resource, null given in %s on line %d +NULL + +-- Iteration 11 -- + +Warning: scandir() expects parameter 3 to be resource, null given in %s on line %d +NULL + +-- Iteration 12 -- + +Warning: scandir() expects parameter 3 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 13 -- + +Warning: scandir() expects parameter 3 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 14 -- + +Warning: scandir() expects parameter 3 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 15 -- + +Warning: scandir() expects parameter 3 to be resource, boolean given in %s on line %d +NULL + +-- Iteration 16 -- + +Warning: scandir() expects parameter 3 to be resource, string given in %s on line %d +NULL + +-- Iteration 17 -- + +Warning: scandir() expects parameter 3 to be resource, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: scandir() expects parameter 3 to be resource, array given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: scandir() expects parameter 3 to be resource, string given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: scandir() expects parameter 3 to be resource, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: scandir() expects parameter 3 to be resource, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: scandir() expects parameter 3 to be resource, object given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: scandir() expects parameter 3 to be resource, null given in %s on line %d +NULL + +-- Iteration 24 -- + +Warning: scandir() expects parameter 3 to be resource, null given in %s on line %d +NULL + +-- Iteration 25 -- + +Warning: scandir(): supplied resource is not a valid Stream-Context resource in %s on line %d +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation4.phpt b/ext/standard/tests/dir/scandir_variation4.phpt new file mode 100644 index 0000000..f756cf1 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation4.phpt @@ -0,0 +1,169 @@ +--TEST-- +Test scandir() function : usage variations - different relative paths +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Test scandir() with relative paths as $dir argument + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// include for create_files/delete_files functions +include (dirname(__FILE__) . '/../file/file.inc'); + +$base_dir_path = dirname(__FILE__); + +$level_one_dir_path = "$base_dir_path/level_one"; +$level_two_dir_path = "$level_one_dir_path/level_two"; + +// create directories and files +mkdir($level_one_dir_path); +create_files($level_one_dir_path, 2, 'numeric', 0755, 1, 'w', 'level_one', 1); +mkdir($level_two_dir_path); +create_files($level_two_dir_path, 2, 'numeric', 0755, 1, 'w', 'level_two', 1); + +echo "\n-- \$path = './level_one': --\n"; +var_dump(chdir($base_dir_path)); +var_dump(scandir('./level_one')); + +echo "\n-- \$path = 'level_one/level_two': --\n"; +var_dump(chdir($base_dir_path)); +var_dump(scandir('level_one/level_two')); + +echo "\n-- \$path = '..': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(scandir('..')); + +echo "\n-- \$path = 'level_two', '.': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(scandir('.')); + +echo "\n-- \$path = '../': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(scandir('../')); + +echo "\n-- \$path = './': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(scandir('./')); + +echo "\n-- \$path = '../../'level_one': --\n"; +var_dump(chdir($level_two_dir_path)); +var_dump(scandir('../../level_one')); + +@delete_files($level_one_dir_path, 2, 'level_one'); +@delete_files($level_two_dir_path, 2, 'level_two'); +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__); +rmdir("$dir_path/level_one/level_two"); +rmdir("$dir_path/level_one"); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- $path = './level_one': -- +bool(true) +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_one1.tmp" + [3]=> + string(14) "level_one2.tmp" + [4]=> + string(9) "level_two" +} + +-- $path = 'level_one/level_two': -- +bool(true) +array(4) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_two1.tmp" + [3]=> + string(14) "level_two2.tmp" +} + +-- $path = '..': -- +bool(true) +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_one1.tmp" + [3]=> + string(14) "level_one2.tmp" + [4]=> + string(9) "level_two" +} + +-- $path = 'level_two', '.': -- +bool(true) +array(4) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_two1.tmp" + [3]=> + string(14) "level_two2.tmp" +} + +-- $path = '../': -- +bool(true) +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_one1.tmp" + [3]=> + string(14) "level_one2.tmp" + [4]=> + string(9) "level_two" +} + +-- $path = './': -- +bool(true) +array(4) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_two1.tmp" + [3]=> + string(14) "level_two2.tmp" +} + +-- $path = '../../'level_one': -- +bool(true) +array(5) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(14) "level_one1.tmp" + [3]=> + string(14) "level_one2.tmp" + [4]=> + string(9) "level_two" +} +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation5.phpt b/ext/standard/tests/dir/scandir_variation5.phpt new file mode 100644 index 0000000..d6d3c79 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation5.phpt @@ -0,0 +1,98 @@ +--TEST-- +Test scandir() function : usage variations - different directory permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__)."/dir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * remove the execute permission from the parent dir and test scandir() on child dir + * 1. remove write & execute permission from the 1st parent and test scandir() + * 2. remove execute permission from 2nd parent and test scandir() + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +/* + * create the temporary directory : + * scandir_variation5 ( parent ) + * |-> sub_dir ( sub parent ) + * |-> child_dir ( child dir) + */ + +$parent_dir_path = dirname(__FILE__) . "/scandir_variation5"; +mkdir($parent_dir_path); +chmod($parent_dir_path, 0777); + +// create sub_dir +$sub_dir_path = $parent_dir_path . "/sub_dir"; +mkdir($sub_dir_path); +chmod($sub_dir_path, 0777); + +//create sub_sub_dir +$child_dir_path = $sub_dir_path."/child_dir"; +mkdir($child_dir_path); + +// remove the write and execute permisson from sub parent +chmod($sub_dir_path, 0444); + +echo "\n-- After restricting 1st level parent directory --\n"; +var_dump(scandir($child_dir_path)); + +// remove the execute permisson from parent dir, allowing all permission for sub dir +chmod($sub_dir_path, 0777); // all permisson to sub dir +chmod($parent_dir_path, 0666); // restricting parent directory + +echo "\n-- After restricting parent directory --\n"; +var_dump(scandir($child_dir_path)); +?> +===DONE=== +--CLEAN-- +<?php +$parent_dir_path = dirname(__FILE__) . "/scandir_variation5"; +$sub_dir_path = $parent_dir_path."/sub_dir"; +$child_dir_path = $sub_dir_path."/child_dir"; + +// changing permissions for each temporary directory to delete them +chmod($parent_dir_path, 0777); +chmod($sub_dir_path, 0777); +chmod($child_dir_path, 0777); + +rmdir($child_dir_path); +rmdir($sub_dir_path); +rmdir($parent_dir_path); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- After restricting 1st level parent directory -- + +Warning: scandir(%s/scandir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- After restricting parent directory -- + +Warning: scandir(%s/scandir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation6-win32.phpt b/ext/standard/tests/dir/scandir_variation6-win32.phpt new file mode 100644 index 0000000..040dc78 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation6-win32.phpt @@ -0,0 +1,84 @@ +--TEST-- +Test scandir() function : usage variations - Wildcards in directory path +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die("skip Valid only on Windows"); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory path using wildcards as $dir argument to test how scandir() behaves + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path . "/scandir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +mkdir($dir_path); +mkdir($sub_dir_path); + +// with different wildcard characters + +echo "\n-- Wildcard = '*' --\n"; +var_dump( scandir($file_path . "/scandir_var*") ); +var_dump( scandir($file_path . "/*") ); + +echo "\n-- Wildcard = '?' --\n"; +var_dump( scandir($dir_path . "/sub_dir?") ); +var_dump( scandir($dir_path . "/sub?dir1") ); + +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/scandir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +rmdir($sub_dir_path); +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Wildcard = '*' -- + +Warning: scandir(%s/scandir_var*,%s/scandir_var*): No such file or directory in %s on line %d + +Warning: scandir(%s/scandir_var*): failed to open dir: No such file or directory in %sscandir_variation6-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +Warning: scandir(%s/*,%s/*): No such file or directory in %s on line %d + +Warning: scandir(%s/*): failed to open dir: No such file or directory in %sscandir_variation6-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Wildcard = '?' -- + +Warning: scandir(%s/scandir_variation6/sub_dir?,%s/scandir_variation6/sub_dir?): No such file or directory in %s on line %d + +Warning: scandir(%s/scandir_variation6/sub_dir?): failed to open dir: No such file or directory in %sscandir_variation6-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +Warning: scandir(%s/scandir_variation6/sub?dir1,%s/scandir_variation6/sub?dir1): No such file or directory in %s on line %d + +Warning: scandir(%s/scandir_variation6/sub?dir1): failed to open dir: No such file or directory in %sscandir_variation6-win32.php on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation6.phpt b/ext/standard/tests/dir/scandir_variation6.phpt new file mode 100644 index 0000000..754c615 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation6.phpt @@ -0,0 +1,76 @@ +--TEST-- +Test scandir() function : usage variations - Wildcards in directory path +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + die('skip.. Not valid for Windows'); +} +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory path using wildcards as $dir argument to test how scandir() behaves + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// create the temporary directories +$file_path = dirname(__FILE__); +$dir_path = $file_path . "/scandir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +mkdir($dir_path); +mkdir($sub_dir_path); + +// with different wildcard characters + +echo "\n-- Wildcard = '*' --\n"; +var_dump( scandir($file_path . "/scandir_var*") ); +var_dump( scandir($file_path . "/*") ); + +echo "\n-- Wildcard = '?' --\n"; +var_dump( scandir($dir_path . "/sub_dir?") ); +var_dump( scandir($dir_path . "/sub?dir1") ); + +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/scandir_variation6"; +$sub_dir_path = $dir_path . "/sub_dir1"; + +rmdir($sub_dir_path); +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Wildcard = '*' -- + +Warning: scandir(%s/scandir_var*): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +Warning: scandir(%s/*): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +-- Wildcard = '?' -- + +Warning: scandir(%s/scandir_variation6/sub_dir?): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) + +Warning: scandir(%s/scandir_variation6/sub?dir1): failed to open dir: %s in %s on line %d + +Warning: scandir(): (errno %d): %s in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation7.phpt b/ext/standard/tests/dir/scandir_variation7.phpt new file mode 100644 index 0000000..c7f7765 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation7.phpt @@ -0,0 +1,169 @@ +--TEST-- +Test scandir() function : usage variations - different directory permissions +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) == 'WIN') { + die('skip Not for Windows'); +} +// Skip if being run by root (files are always readable, writeable and executable) +$filename = dirname(__FILE__) . "/dir_root_check.tmp"; +$fp = fopen($filename, 'w'); +fclose($fp); +if(fileowner($filename) == 0) { + unlink ($filename); + die('skip...cannot be run as root\n'); +} +unlink($filename); +?> +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Create directories with different permissions to test whether scandir() can access them + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// create the temporary directory +$dir_path = dirname(__FILE__) . "/scandir_variation7"; +mkdir($dir_path); + +// different values for directory permissions +$permission_values = array( +/*1*/ 0477, // owner has read only, other and group has rwx + 0677, // owner has rw only, other and group has rwx + +/*3*/ 0444, // all have read only + 0666, // all have rw only + +/*5*/ 0400, // owner has read only, group and others have no permission + 0600, // owner has rw only, group and others have no permission + +/*7*/ 0470, // owner has read only, group has rwx & others have no permission + 0407, // owner has read only, other has rwx & group has no permission + +/*9*/ 0670, // owner has rw only, group has rwx & others have no permission +/*10*/ 0607 // owner has rw only, group has no permission and others have rwx +); + +$iterator = 1; +foreach ($permission_values as $perm) { + echo "\n-- Iteration $iterator --\n"; + + // Remove the directory if already exists + if (is_dir($dir_path)){ + chmod ($dir_path, 0777); // change dir permission to allow all operation + rmdir ($dir_path); + } + mkdir($dir_path); + + // change the dir permisson to test dir on it + var_dump( chmod($dir_path, $perm) ); + + var_dump(scandir($dir_path)); + $iterator++; +} +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/scandir_variation7"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 2 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 3 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 4 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 5 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 6 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 7 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 8 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 9 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} + +-- Iteration 10 -- +bool(true) +array(2) { + [0]=> + string(1) "." + [1]=> + string(2) ".." +} +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation8.phpt b/ext/standard/tests/dir/scandir_variation8.phpt new file mode 100644 index 0000000..4e96e04 --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation8.phpt @@ -0,0 +1,154 @@ +--TEST-- +Test scandir() function : usage variations - different file names +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass a directory containing files with different types of names to test how scandir() + * reads them + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +$dir_path = dirname(__FILE__) . "/scandir_variation8/"; +mkdir($dir_path); + +// heredoc string +$heredoc = <<<EOT +hd_file +EOT; + +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // empty data +/*10*/ "", + array(), + + // string data +/*12*/ "double_file", + 'single_file', + $heredoc, +); + +$iterator = 1; +foreach($inputs as $key => $input) { + echo "\n-- Iteration $iterator --\n"; + $handle = "fp{$iterator}"; + var_dump( $$handle = fopen(@"$dir_path$input.tmp", 'w') ); + fclose($$handle); + $iterator++; +}; + +echo "\n-- Call to scandir() --\n"; +var_dump($content = scandir($dir_path)); + +// remove all files in directory so can remove directory in CLEAN section +foreach ($content as $file_name) { + // suppress errors as won't be able to remove "." and ".." entries + @unlink($dir_path . $file_name); +} +?> +===DONE=== +--CLEAN-- +<?php +$dir_path = dirname(__FILE__) . "/scandir_variation8"; +rmdir($dir_path); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** + +-- Iteration 1 -- +resource(%d) of type (stream) + +-- Iteration 2 -- +resource(%d) of type (stream) + +-- Iteration 3 -- +resource(%d) of type (stream) + +-- Iteration 4 -- +resource(%d) of type (stream) + +-- Iteration 5 -- +resource(%d) of type (stream) + +-- Iteration 6 -- +resource(%d) of type (stream) + +-- Iteration 7 -- +resource(%d) of type (stream) + +-- Iteration 8 -- +resource(%d) of type (stream) + +-- Iteration 9 -- +resource(%d) of type (stream) + +-- Iteration 10 -- +resource(%d) of type (stream) + +-- Iteration 11 -- +resource(%d) of type (stream) + +-- Iteration 12 -- +resource(%d) of type (stream) + +-- Iteration 13 -- +resource(%d) of type (stream) + +-- Iteration 14 -- +resource(%d) of type (stream) + +-- Call to scandir() -- +array(16) { + [0]=> + string(9) "-10.5.tmp" + [1]=> + string(9) "-2345.tmp" + [2]=> + string(1) "." + [3]=> + string(2) ".." + [4]=> + string(4) ".tmp" + [5]=> + string(7) "0.5.tmp" + [6]=> + string(5) "0.tmp" + [7]=> + string(17) "1.23456789E-9.tmp" + [8]=> + string(5) "1.tmp" + [9]=> + string(8) "10.5.tmp" + [10]=> + string(9) "12345.tmp" + [11]=> + string(16) "123456789000.tmp" + [12]=> + string(9) "Array.tmp" + [13]=> + string(15) "double_file.tmp" + [14]=> + string(11) "hd_file.tmp" + [15]=> + string(15) "single_file.tmp" +} +===DONE=== diff --git a/ext/standard/tests/dir/scandir_variation9.phpt b/ext/standard/tests/dir/scandir_variation9.phpt new file mode 100644 index 0000000..2b1904c --- /dev/null +++ b/ext/standard/tests/dir/scandir_variation9.phpt @@ -0,0 +1,72 @@ +--TEST-- +Test scandir() function : usage variations - different ints as $sorting_order arg +--FILE-- +<?php +/* Prototype : array scandir(string $dir [, int $sorting_order [, resource $context]]) + * Description: List files & directories inside the specified path + * Source code: ext/standard/dir.c + */ + +/* + * Pass different integers as $sorting_order argument to test how scandir() + * re-orders the array + */ + +echo "*** Testing scandir() : usage variations ***\n"; + +// include for create_files/delete_files functions +include(dirname(__FILE__) . '/../file/file.inc'); + +// create directory and files +$dir = dirname(__FILE__) . '/scandir_variation9'; +mkdir($dir); +@create_files($dir, 2); + +// different ints to pass as $sorting_order argument +$ints = array (PHP_INT_MAX, -PHP_INT_MAX, 0); + +foreach($ints as $sorting_order) { + var_dump( scandir($dir, $sorting_order) ); +} + +delete_files($dir, 2); +?> +===DONE=== +--CLEAN-- +<?php +$dir = dirname(__FILE__) . '/scandir_variation9'; +rmdir($dir); +?> +--EXPECTF-- +*** Testing scandir() : usage variations *** +array(4) { + [0]=> + string(9) "file2.tmp" + [1]=> + string(9) "file1.tmp" + [2]=> + string(2) ".." + [3]=> + string(1) "." +} +array(4) { + [0]=> + string(9) "file2.tmp" + [1]=> + string(9) "file1.tmp" + [2]=> + string(2) ".." + [3]=> + string(1) "." +} +array(4) { + [0]=> + string(1) "." + [1]=> + string(2) ".." + [2]=> + string(9) "file1.tmp" + [3]=> + string(9) "file2.tmp" +} +===DONE=== |