]> granicus.if.org Git - php/commitdiff
file.inc : Added dumping of stat array in functions (compare_self_stat() & compare_st...
authorRaghubansh Kumar <kraghuba@php.net>
Thu, 26 Jul 2007 13:38:24 +0000 (13:38 +0000)
committerRaghubansh Kumar <kraghuba@php.net>
Thu, 26 Jul 2007 13:38:24 +0000 (13:38 +0000)
Smaller testcases for lstat_stat_variation[1-7].phpt files

22 files changed:
ext/standard/tests/file/file.inc
ext/standard/tests/file/lstat_stat_variation1.phpt
ext/standard/tests/file/lstat_stat_variation10.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation11.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation12.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation13.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation14.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation15.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation16.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation17.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation18.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation19.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation2.phpt
ext/standard/tests/file/lstat_stat_variation20.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation21.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation3.phpt
ext/standard/tests/file/lstat_stat_variation4.phpt
ext/standard/tests/file/lstat_stat_variation5.phpt
ext/standard/tests/file/lstat_stat_variation6.phpt
ext/standard/tests/file/lstat_stat_variation7.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation8.phpt [new file with mode: 0644]
ext/standard/tests/file/lstat_stat_variation9.phpt [new file with mode: 0644]

index 80ac0c059902df6f2619b03b8d477c6cc3e3005a..efb425ca42239bbd29c017c5c9e3e690e1d817d7 100644 (file)
@@ -548,7 +548,7 @@ function compare_self_stat( array $stat )
   foreach($string_keys as $str_key)
   {
     if($stat[$key] != $stat[$str_key]) {
-      echo "stat[$key] doesn't match with stat[$str_key]\n";
+      echo "Error: stat[$key] doesn't match with stat[$str_key]\n";
       $flag = false;
       $key++;
     }
@@ -557,6 +557,13 @@ function compare_self_stat( array $stat )
     }
   } // end of foreach
 
+  // if the $return_value is false, i.e all the element do not match then 
+  // dump the stat array so that its easy to figure out the error
+  if ($return_value == false ) {
+    echo "\n Dumping stat array ...\n";
+    var_dump($stat);
+  }
+
   return $return_value;
 }// end of compare_self_stat
 
@@ -570,7 +577,7 @@ Description:
   $stat2 = second stat array
   $op = type of the comparision to be perform between elements of stat1 and stat2
     "!=" compare for not equal
-    "==" comprae for equality
+    "==" compare for equality
     ">"  if each element of stat1 is > than stat2
     "<"  if each element of stat1 is < than stat2
   $fields = contains the key of the elements that needs to be compared. 
@@ -578,7 +585,10 @@ Description:
   $flag = specify true to dump the stat1 and stat2 
 */
 
-$all_stat_keys = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, "dev", "ino", "mode", "nlink", "uid", "gid", "rdev", "size", "atime", "mtime", "ctime", "blksize", "blocks");
+$all_stat_keys = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
+                       "dev", "ino", "mode", "nlink", "uid", "gid",
+                       "rdev", "size", "atime", "mtime", "ctime",
+                       "blksize", "blocks");
 
 function compare_stats($stat1, $stat2, $fields, $op = "==", $flag = false ) {
   // dump the stat if requested
@@ -597,7 +607,7 @@ function compare_stats($stat1, $stat2, $fields, $op = "==", $flag = false ) {
        case "==":
          if ( $stat1[ $fields[$index] ] != $stat2[ $fields[$index] ] ) {
            $result = false;
-           echo "stat1 do not match with stat2 at key value: $fields[$index]\n";
+           echo "Error: stat1 do not match with stat2 at key value: $fields[$index]\n";
          }
          break;
 
@@ -606,25 +616,34 @@ function compare_stats($stat1, $stat2, $fields, $op = "==", $flag = false ) {
            // do nothing as its not equal, else will take care of if equal
          } else {
            $result = false;
-           echo "stat1 equals stat2 at key value: $fields[$index]\n";
+           echo "Error: stat1 equals stat2 at key value: $fields[$index]\n";
          }
          break;
 
        case ">":
          if ( $stat1[ $fields[$index] ] <= $stat2[ $fields[$index] ] ) {
            $result = false;
-           echo "stat1 is not greater than stat2 at key value: $fields[$index]\n";
+           echo "Error: stat1 is not greater than stat2 at key value: $fields[$index]\n";
          }
          break;
 
        case "<":
          if ( $stat1[ $fields[$index] ] >= $stat2[ $fields[$index] ] ) {
            $result = false;
-           echo "stat1 is not lesser than stat2 at key value: $fields[$index]\n";
+           echo "Error: stat1 is not lesser than stat2 at key value: $fields[$index]\n";
          }
          break;
     }
   }
+  // if the result is false(i.e values are not as expected), 
+  // dump the stat array so that easy to figure out the error
+  if ( $result == false ) {
+    echo "\n Dumping stat array 1...\n";
+    var_dump($stat1);
+    echo "\n Dumping stat array 2...\n";
+    var_dump($stat2);
+  }
+
   return $result;
 }
 
index a2cfe8045e696bead067b7bbde9651eba13e7f05..30ce9b7217eb62aad5316c3ad1c5e1972d597ff6 100755 (executable)
@@ -1,9 +1,9 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - effects of rename() 
+Test lstat() and stat() functions: usage variations - effects of rename() on file
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
-    die('skip.. lstat() not available on Windows');
+    die('skip.. Not valid for Windows');
 }
 ?>
 --FILE--
@@ -15,23 +15,17 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
-/* test the effects of rename() on stats of dir/file/link */
+/* test the effects of rename() on stats of file */
 
 $file_path = dirname(__FILE__);
 require "$file_path/file.inc";
 
-/* create temp file, link and directory */
-mkdir("$file_path/lstat_stat_variation1/");  // temp dir
+/* create temp file */
 $fp = fopen("$file_path/lstat_stat_variation1.tmp", "w");  // temp file
 fclose($fp);
 
-// temp link
-symlink("$file_path/lstat_stat_variation1.tmp", "$file_path/lstat_stat_variation_link1.tmp");
-
-echo "*** Checking lstat() and stat() on file, link and directory ater renaming them ***\n";
-
-// renaming a file
-echo "-- Testing stat() for files after being renamed --\n";
+// renaming a file and check stat
+echo "*** Testing stat() for files after being renamed ***\n";
 $file_path = dirname(__FILE__);
 $old_filename = "$file_path/lstat_stat_variation1.tmp";
 $new_filename = "$file_path/lstat_stat_variation1a.tmp";
@@ -49,40 +43,6 @@ var_dump( compare_stats($old_stat, $old_stat, $all_stat_keys) );
 // clear the cache
 clearstatcache();
 
-// renaming a directory
-echo "-- Testing stat() for directory after being renamed --\n";
-$old_dirname = "$file_path/lstat_stat_variation1";
-$new_dirname = "$file_path/lstat_stat_variation1a";
-$old_stat = stat($old_dirname);
-clearstatcache();
-var_dump( rename($old_dirname, $new_dirname) );
-$new_stat = stat($new_dirname);
-
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-
-// compare the two stats
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-// clear the cache
-clearstatcache();
-
-// renaming a link
-echo "-- Testing lstat() for link after being renamed --\n";
-$old_linkname = "$file_path/lstat_stat_variation_link1.tmp";
-$new_linkname = "$file_path/lstat_stat_variation_link1a.tmp";
-$old_stat = lstat($old_linkname);
-clearstatcache();
-var_dump( rename($old_linkname, $new_linkname) );
-$new_stat = lstat($new_linkname);
-
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-
-// compare the two stats
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-
 echo "\n--- Done ---";
 ?>
 
@@ -90,22 +50,9 @@ echo "\n--- Done ---";
 <?php
 $file_path = dirname(__FILE__);
 unlink("$file_path/lstat_stat_variation1a.tmp");
-rmdir("$file_path/lstat_stat_variation1a");
-unlink("$file_path/lstat_stat_variation_link1a.tmp");
 ?>
 --EXPECTF--
-*** Checking lstat() and stat() on file, link and directory ater renaming them ***
--- Testing stat() for files after being renamed --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing stat() for directory after being renamed --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing lstat() for link after being renamed --
+*** Testing stat() for files after being renamed ***
 bool(true)
 bool(true)
 bool(true)
diff --git a/ext/standard/tests/file/lstat_stat_variation10.phpt b/ext/standard/tests/file/lstat_stat_variation10.phpt
new file mode 100644 (file)
index 0000000..a30b3c5
--- /dev/null
@@ -0,0 +1,58 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects of is_dir()
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects of is_dir() on stats of a dir */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file, link and directory */
+$dirname = "$file_path/lstat_stat_variation10";
+mkdir($dirname);  // temp dir
+
+// is_dir() on a directory
+echo "*** Testing stat() on directory after using is_dir() on it ***\n";
+$old_stat = stat($dirname);
+// clear the cache
+clearstatcache();
+sleep(2);
+var_dump( is_dir($dirname) );
+$new_stat = stat($dirname);
+
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+rmdir("$file_path/lstat_stat_variation10");
+?>
+--EXPECTF--
+*** Testing stat() on directory after using is_dir() on it ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation11.phpt b/ext/standard/tests/file/lstat_stat_variation11.phpt
new file mode 100644 (file)
index 0000000..df1b8ac
--- /dev/null
@@ -0,0 +1,59 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effect of is_file()
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+/* test the effects of is_file() on stats of a file */
+
+/* create temp file */
+$filename = "$file_path/lstat_stat_variation11.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+// is_file() on a file
+echo "*** Testing stat() on a file after using is_file() on it ***\n";
+$old_stat = stat($filename);
+// clear the stat
+clearstatcache();
+sleep(2);
+var_dump( is_file($filename) );
+$new_stat = stat($filename);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
+// clear the stat
+clearstatcache();
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation11.tmp");
+?>
+--EXPECTF--
+*** Testing stat() on a file after using is_file() on it ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation12.phpt b/ext/standard/tests/file/lstat_stat_variation12.phpt
new file mode 100644 (file)
index 0000000..c1e37b5
--- /dev/null
@@ -0,0 +1,65 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects of is_link()  
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+   die('skip.. lstat() not available on Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects of is_link() on stats of link */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file, link */
+$filename = "$file_path/lstat_stat_variation12.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+$linkname = "$file_path/lstat_stat_variation12_link.tmp";
+symlink($filename, $linkname); // temp link
+
+// is_link() on a link
+echo "*** Testing stat() on a link after using is_link() on it ***\n";
+$linkname = "$file_path/lstat_stat_variation12_link.tmp";
+$old_stat = lstat($linkname);
+// clear the stat
+clearstatcache();
+sleep(2);
+var_dump( is_link($linkname) );
+$new_stat = lstat($linkname);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
+// clear the stat
+clearstatcache();
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation12_link.tmp");
+unlink("$file_path/lstat_stat_variation12.tmp");
+?>
+--EXPECTF--
+*** Testing stat() on a link after using is_link() on it ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation13.phpt b/ext/standard/tests/file/lstat_stat_variation13.phpt
new file mode 100644 (file)
index 0000000..474ddc5
--- /dev/null
@@ -0,0 +1,57 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - file opened using w and r mode 
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* use stat on file created using "w" and "r" mode of fopen */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+$filename = "$file_path/lstat_stat_variation13.tmp";
+
+echo "*** Checking stat() on a file opened using read/write mode ***\n";
+$file_handle = fopen($filename, "w");  // create file
+fclose($file_handle);
+$old_stat = stat($filename);
+// clear the stat
+clearstatcache();
+sleep(2);
+// opening file again in read mode
+$file_handle = fopen($filename, "r");  // read file
+fclose($file_handle);
+$new_stat = stat($filename);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation13.tmp");
+?>
+--EXPECTF--
+*** Checking stat() on a file opened using read/write mode ***
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation14.phpt b/ext/standard/tests/file/lstat_stat_variation14.phpt
new file mode 100644 (file)
index 0000000..1e5289f
--- /dev/null
@@ -0,0 +1,62 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - hardlink  
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+   die('skip.. lstat() not available on Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects of is_link() on stats of link */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file & link */
+$filename = "$file_path/lstat_stat_variation14.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+echo "*** Checking lstat() and stat() on hard link ***\n";
+$linkname = "$file_path/lstat_stat_variation14_hard.tmp";
+//ensure that link doesn't exists 
+@unlink($linkname);
+
+// create the link
+var_dump( link($filename, $linkname) );
+$file_stat = stat($filename);
+$link_stat = lstat($linkname);
+// compare self stats
+var_dump( compare_self_stat($file_stat) );
+var_dump( compare_self_stat($link_stat) );
+// compare the stat
+var_dump( compare_stats($file_stat, $link_stat, $all_stat_keys) );
+// clear the stat
+clearstatcache();
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation14_hard.tmp");
+unlink("$file_path/lstat_stat_variation14.tmp");
+?>
+--EXPECTF--
+*** Checking lstat() and stat() on hard link ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation15.phpt b/ext/standard/tests/file/lstat_stat_variation15.phpt
new file mode 100644 (file)
index 0000000..45912ae
--- /dev/null
@@ -0,0 +1,63 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects changing permissions of link
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. lstat() not available on Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects on stats by changing permissions of link */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+$filename = "$file_path/lstat_stat_variation15.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+// temp link
+$linkname = "$file_path/lstat_stat_variation15_link.tmp";
+symlink($filename, $linkname);
+
+// checking lstat() and stat() on links
+echo "*** Testing lstat() on a link after changing its access permission ***\n";
+clearstatcache();
+$old_stat = lstat($linkname);
+var_dump( chmod($linkname, 0777) );
+// clear the stat
+clearstatcache();
+sleep(2);
+$new_stat = lstat($linkname);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys, "=") );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation15_link.tmp");
+unlink("$file_path/lstat_stat_variation15.tmp");
+?>
+--EXPECTF--
+*** Testing lstat() on a link after changing its access permission ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation16.phpt b/ext/standard/tests/file/lstat_stat_variation16.phpt
new file mode 100644 (file)
index 0000000..641ccd5
--- /dev/null
@@ -0,0 +1,57 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects changing permissions of file
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects on stats with changing permissions of file */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+$filename = "$file_path/lstat_stat_variation16.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+// checking stat() on file after changing its permission
+echo "*** Testing lstat() on a file after changing its access permission ***\n";
+$old_stat = stat($filename);
+sleep(2);
+var_dump( chmod($filename, 0777) );
+// clear the stat
+clearstatcache();
+$new_stat = stat($filename);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+$affected_members = array(10, 'ctime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, "!=") );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation16.tmp");
+?>
+--EXPECTF--
+*** Testing lstat() on a file after changing its access permission ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation17.phpt b/ext/standard/tests/file/lstat_stat_variation17.phpt
new file mode 100644 (file)
index 0000000..e50abf3
--- /dev/null
@@ -0,0 +1,56 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects changing permissions of dir
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects on stats by changing permissions of a dir */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+// checking stat() on directory
+echo "*** Testing lstat() on a dir after changing its access permission ***\n";
+$dirname = "$file_path/lstat_stat_variation17";
+mkdir($dirname);
+
+$old_stat = stat($dirname);
+sleep(2);
+var_dump( chmod($dirname, 0777) );
+// clear the stat
+clearstatcache();
+$new_stat = stat($dirname);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+$affected_members = array(2, 10, 'mode', 'ctime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, "!=") );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+rmdir("$file_path/lstat_stat_variation17");
+?>
+--EXPECTF--
+*** Testing lstat() on a dir after changing its access permission ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation18.phpt b/ext/standard/tests/file/lstat_stat_variation18.phpt
new file mode 100644 (file)
index 0000000..b675ab5
--- /dev/null
@@ -0,0 +1,176 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - dir/file name stored in object
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test for stats of dir/file when their names are stored in objects */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file and directory */
+mkdir("$file_path/lstat_stat_variation18/");  // temp dir
+$fp = fopen("$file_path/lstat_stat_variation18.tmp", "w");  // temp file
+fclose($fp);
+
+echo "*** Testing stat() with filename & directory name stored inside an object ***\n";
+
+class names {
+  public $var_name;
+  public function names($name) {
+    $this->var_name = $name;
+  }
+}
+
+// directory name stored in an object
+$dir_name = new names("$file_path/lstat_stat_variation18/");
+
+// file name stored in an object 
+$file_name = new names("$file_path/lstat_stat_variation18.tmp");
+
+echo "\n-- Testing stat() on filename stored inside an object --\n";
+// dump the stat returned value 
+var_dump( stat($file_name->var_name) );
+
+echo "\n-- Testing stat() on directory name stored inside an object --\n";
+// dump the stat returned value 
+var_dump( stat($dir_name->var_name) );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation18.tmp");
+rmdir("$file_path/lstat_stat_variation18");
+?>
+--EXPECTF--
+*** Testing stat() with filename & directory name stored inside an object ***
+
+-- Testing stat() on filename stored inside an object --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+-- Testing stat() on directory name stored inside an object --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation19.phpt b/ext/standard/tests/file/lstat_stat_variation19.phpt
new file mode 100644 (file)
index 0000000..7dcb9b5
--- /dev/null
@@ -0,0 +1,284 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - dir/file names in array
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test for stats of dir/file when their names are stored in an array */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file, link and directory */
+mkdir("$file_path/lstat_stat_variation19/");  // temp dir
+
+$fp = fopen("$file_path/lstat_stat_variation19.tmp", "w");  // temp file
+fclose($fp);
+
+echo "*** Testing stat() with filename & directory name stored inside an array ***\n";
+
+// array with default numeric index
+$names = array(
+  "$file_path/lstat_stat_variation19.tmp", 
+  "$file_path/lstat_stat_variation19"
+);
+
+//array with string key index
+$names_with_key = array (
+  'file' => "$file_path/lstat_stat_variation19.tmp",
+  "dir" => "$file_path/lstat_stat_variation19"
+);
+
+echo "\n-- Testing stat() on filename stored inside an array --\n";
+var_dump( stat($names[0]) ); // values stored with numeric index
+var_dump( stat($names_with_key['file']) ); // value stored with string key
+
+echo "\n-- Testing stat() on dir name stored inside an array --\n";
+var_dump( stat($names[1]) ); // values stored with numeric index
+var_dump( stat($names_with_key["dir"]) ); // value stored with string key
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation19.tmp");
+rmdir("$file_path/lstat_stat_variation19");
+?>
+--EXPECTF--
+*** Testing stat() with filename & directory name stored inside an array ***
+
+-- Testing stat() on filename stored inside an array --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+-- Testing stat() on dir name stored inside an array --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+--- Done ---
index dea6e6de6c6937daf77e4792476c76300c422a70..bc1304f341aed96560c9c95d838bf68afbbbb11f 100755 (executable)
@@ -1,9 +1,9 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - effects of touch() 
+Test lstat() and stat() functions: usage variations - effects of rename() on dir
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
-    die('skip.. lstat() not available on Windows');
+    die('skip.. Not valid for Windows');
 }
 ?>
 --FILE--
@@ -15,82 +15,31 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
-/* test the effects of touch() on stats of dir/file/link */
+/* test the effects of rename() on stats of dir */
 
 $file_path = dirname(__FILE__);
-require "$file_path/file.inc";
+require("file.inc");
 
+/* create temp directory */
+mkdir("$file_path/lstat_stat_variation1/");  // temp dir
 
-/* create temp file, link and directory */
-
-$dir_name = "$file_path/lstat_stat_variation2/";
-mkdir($dir_name);  // temp dir
-$file_name = "$file_path/lstat_stat_variation2.tmp";
-$fp = fopen($file_name, "w");  // temp file
-fclose($fp);
-$link_name = "$file_path/lstat_stat_variation_link2.tmp";
-symlink($file_name, $link_name);  // temp link
-
-
-echo "\n*** Checking lstat() and stat() on file, link and directory after touching them ***\n";
-
-// touch a file
-echo "-- Testing stat() for file after using touch() on the file --\n";
-$old_stat = stat($file_name);
-// clear the cache
+// renaming a directory and check stat
+echo "*** Testing stat() for directory after being renamed ***\n";
+$old_dirname = "$file_path/lstat_stat_variation1";
+$new_dirname = "$file_path/lstat_stat_variation1a";
+$old_stat = stat($old_dirname);
 clearstatcache();
-sleep(2);
-var_dump( touch($file_name) );
-$new_stat = stat($file_name);
+var_dump( rename($old_dirname, $new_dirname) );
+$new_stat = stat($new_dirname);
 
 // compare self stats
 var_dump( compare_self_stat($old_stat) );
 var_dump( compare_self_stat($new_stat) );
 
-// compare the stat
-$affected_members = array(8, 'atime');
-var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
-// clear the cache
-clearstatcache();
-
-
-// touch a directory
-echo "-- Testing stat() for directory after using touch() on the directory --\n";
-$old_stat = stat($dir_name);
+// compare the two stats
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
 // clear the cache
 clearstatcache();
-sleep(2);
-var_dump( touch($dir_name) );
-$new_stat = stat($dir_name);
-
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-
-// compare the stat
-$affected_members = array(8, 9, 10, 'atime', 'mtime', 'ctime');
-var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
-// clear the cache
-clearstatcache();
-
-// touch a link
-echo "-- Testing lstat() for link after using touch() on the link --\n";
-$old_stat = lstat($link_name);
-// clear the cache
-clearstatcache();
-sleep(2);
-var_dump( touch($link_name) );
-$new_stat = lstat($link_name);
-
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-
-// compare the stat
-$affected_members = array(8, 'atime');
-var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
-// clear the stat
-clearstatcache();
 
 echo "\n--- Done ---";
 ?>
@@ -98,23 +47,10 @@ echo "\n--- Done ---";
 --CLEAN--
 <?php
 $file_path = dirname(__FILE__);
-unlink("$file_path/lstat_stat_variation2.tmp");
-rmdir("$file_path/lstat_stat_variation2");
-unlink("$file_path/lstat_stat_variation_link2.tmp");
+rmdir("$file_path/lstat_stat_variation1a");
 ?>
 --EXPECTF--
-*** Checking lstat() and stat() on file, link and directory after touching them ***
--- Testing stat() for file after using touch() on the file --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing stat() for directory after using touch() on the directory --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing lstat() for link after using touch() on the link --
+*** Testing stat() for directory after being renamed ***
 bool(true)
 bool(true)
 bool(true)
diff --git a/ext/standard/tests/file/lstat_stat_variation20.phpt b/ext/standard/tests/file/lstat_stat_variation20.phpt
new file mode 100644 (file)
index 0000000..30b81ad
--- /dev/null
@@ -0,0 +1,287 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - link names stored in array/object 
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. lstat() not available on Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test for stats of link when their names are stored in object and array */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+$fp = fopen("$file_path/lstat_stat_variation20.tmp", "w");  // temp file
+fclose($fp);
+
+// temp link
+symlink("$file_path/lstat_stat_variation20.tmp", "$file_path/lstat_stat_variation20_link.tmp");
+
+echo "*** Testing lstat() with linkname stored inside an object/array ***\n";
+class names {
+  public $var_name;
+  public function names($name) {
+    $this->var_name = $name;
+  }
+}
+
+// link name stored in an object
+$link_object = new names("$file_path/lstat_stat_variation20_link.tmp");
+
+// link name stored in side an array 
+// with default numeric key 
+$link_array = array("$file_path/lstat_stat_variation20_link.tmp");
+
+// with string key index
+$link_array_with_key = array("linkname" => "$file_path/lstat_stat_variation20_link.tmp");
+
+echo "\n-- Testing lstat() on link name stored inside an object --\n";
+var_dump( lstat($link_object->var_name) );
+
+echo "\n-- Testing stat() on link name stored inside an array --\n";
+var_dump( stat($link_array[0]) ); // with default numeric index
+var_dump( stat($link_array_with_key["linkname"]) ); // with string key
+var_dump( stat($link_array_with_key['linkname']) );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation20_link.tmp");
+unlink("$file_path/lstat_stat_variation20.tmp");
+?>
+--EXPECTF--
+*** Testing lstat() with linkname stored inside an object/array ***
+
+-- Testing lstat() on link name stored inside an object --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+-- Testing stat() on link name stored inside an array --
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+array(26) {
+  [0]=>
+  int(%d)
+  [1]=>
+  int(%d)
+  [2]=>
+  int(%d)
+  [3]=>
+  int(%d)
+  [4]=>
+  int(%d)
+  [5]=>
+  int(%d)
+  [6]=>
+  int(%d)
+  [7]=>
+  int(%d)
+  [8]=>
+  int(%d)
+  [9]=>
+  int(%d)
+  [10]=>
+  int(%d)
+  [11]=>
+  int(%d)
+  [12]=>
+  int(%d)
+  ["dev"]=>
+  int(%d)
+  ["ino"]=>
+  int(%d)
+  ["mode"]=>
+  int(%d)
+  ["nlink"]=>
+  int(%d)
+  ["uid"]=>
+  int(%d)
+  ["gid"]=>
+  int(%d)
+  ["rdev"]=>
+  int(%d)
+  ["size"]=>
+  int(%d)
+  ["atime"]=>
+  int(%d)
+  ["mtime"]=>
+  int(%d)
+  ["ctime"]=>
+  int(%d)
+  ["blksize"]=>
+  int(%d)
+  ["blocks"]=>
+  int(%d)
+}
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation21.phpt b/ext/standard/tests/file/lstat_stat_variation21.phpt
new file mode 100644 (file)
index 0000000..146509b
--- /dev/null
@@ -0,0 +1,65 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - effects of truncate()
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+/* test the effects of truncate() on stats of a file */
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+
+/* create temp file */
+$filename = "$file_path/lstat_stat_variation21.tmp";
+$fp = fopen($filename, "w");  // temp file
+fclose($fp);
+
+/* ftruncate the current file and check stat() on the file */
+
+echo "*** Testing stat() on file by truncating it to given size ***\n";
+$old_stat = stat($filename);
+// clear the cache
+clearstatcache();
+sleep(2);
+// opening file in r/w mode
+$file_handle = fopen($filename, "r+");
+var_dump( ftruncate($file_handle, 512) );  // truncate it
+fclose($file_handle);
+
+$new_stat = stat($filename);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stat
+$affected_members = array(7, 9, 10, 'size', 'mtime', 'ctime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, '!=') );
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation21.tmp");
+?>
+
+--EXPECTF--
+*** Testing stat() on file by truncating it to given size ***
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
index e523c0722d43c3c1c6be0375138f32e1e51d3ecc..da7a6dacb618ed2fde2bcda84a4b34512e65359f 100755 (executable)
@@ -1,10 +1,9 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - effects with writing & creating/deleting file/subdir
-
+Test lstat() and stat() functions: usage variations - effects of rename() on link
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
-    die('skip.. lstat() not available on Windows');
+    die('skip.. Not valid for Windows');
 }
 ?>
 --FILE--
@@ -16,67 +15,33 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
+/* test the effects of rename() on stats of link */
+
 $file_path = dirname(__FILE__);
 require "$file_path/file.inc";
 
-/* test the effects on stats with writing data into a  file
-   and creating/deleting file/subdir from a dir 
-*/
-
-/* create temp file, link and directory */
-mkdir("$file_path/lstat_stat_variation3/");  // temp dir
-
-$file_name = "$file_path/lstat_stat_variation3.tmp";
-$fp = fopen($file_name, "w");  // temp file
+/* create temp file & link */
+$fp = fopen("$file_path/lstat_stat_variation3.tmp", "w");  // temp file
 fclose($fp);
 
-symlink("$file_path/lstat_stat_variation3.tmp", "$file_path/lstat_stat_variation3_link.tmp"); // temp link
-
-// writing to an empty file
-echo "-- Testing stat() on file after data is written in it --\n";
-$fh = fopen($file_name,"w");
-$old_stat = stat($file_name);
-clearstatcache();
-fwrite($fh, "Hello World");
-$new_stat = stat($file_name);
-
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-// compare the stats
-$comp_arr = array(7, 12, 'size', 'blocks');
-var_dump(compare_stats($old_stat, $new_stat, $comp_arr, "<"));
-clearstatcache();
+// temp link
+symlink("$file_path/lstat_stat_variation3.tmp", "$file_path/lstat_stat_variation_link3.tmp");
 
-// creating and deleting subdir and files in the dir
-echo "-- Testing stat() on dir after subdir and file is created in it --\n";
-$dirname = "$file_path/lstat_stat_variation3";
-$old_stat = stat($dirname);
+// renaming a link
+echo "*** Testing lstat() for link after being renamed ***\n";
+$old_linkname = "$file_path/lstat_stat_variation_link3.tmp";
+$new_linkname = "$file_path/lstat_stat_variation_link3a.tmp";
+$old_stat = lstat($old_linkname);
 clearstatcache();
-sleep(2);
-mkdir("$dirname/lstat_stat_variation3_subdir");
-$file_handle = fopen("$dirname/lstat_stat_variation3a.tmp", "w");
-fclose($file_handle);
-$new_stat = stat($dirname);
+var_dump( rename($old_linkname, $new_linkname) );
+$new_stat = lstat($new_linkname);
 
 // compare self stats
 var_dump( compare_self_stat($old_stat) );
 var_dump( compare_self_stat($new_stat) );
-// compare the stats
-$affected_members = array(3, 9, 10, 'nlink', 'mtime', 'ctime');
-clearstatcache();
-var_dump(compare_stats($old_stat, $new_stat, $affected_members, "<"));
-unlink("$dirname/lstat_stat_variation3a.tmp");
-rmdir("$dirname/lstat_stat_variation3_subdir");
 
-// comparing stats after the deletion of subdir and file
-echo "-- Testing stat() for comparing stats after the deletion of subdir and file --\n";
-$new_stat1 = stat($dirname);
-// compare self stats
-var_dump( compare_self_stat($new_stat1) );
-// compare the stats
-$affected_members = array(3, 'nlink');
-var_dump(compare_stats($new_stat, $new_stat1, $affected_members, ">"));
+// compare the two stats
+var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
 
 echo "\n--- Done ---";
 ?>
@@ -85,19 +50,12 @@ echo "\n--- Done ---";
 <?php
 $file_path = dirname(__FILE__);
 unlink("$file_path/lstat_stat_variation3.tmp");
-rmdir("$file_path/lstat_stat_variation3");
-unlink("$file_path/lstat_stat_variation3_link.tmp");
+unlink("$file_path/lstat_stat_variation_link3a.tmp");
 ?>
 --EXPECTF--
--- Testing stat() on file after data is written in it --
-bool(true)
-bool(true)
-bool(true)
--- Testing stat() on dir after subdir and file is created in it --
-bool(true)
+*** Testing lstat() for link after being renamed ***
 bool(true)
 bool(true)
--- Testing stat() for comparing stats after the deletion of subdir and file --
 bool(true)
 bool(true)
 
index 1051c9f96d8b6775e71a4b99350b1f55c0c788a6..7407a63bf351f09ec1922d4ec636a348cb649097 100755 (executable)
@@ -1,10 +1,9 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - effects of is_dir(), is_file() and is_link()  
-
+Test lstat() and stat() functions: usage variations - effects of touch() on file
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
-   die('skip.. lstat() not available on Windows');
+    die('skip.. Not valid for Windows');
 }
 ?>
 --FILE--
@@ -16,107 +15,35 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
-/* test the effects of is_dir(), is_file() and is_link() on stats of dir/file/link */
+/* test the effects of touch() on stats of file */
 
 $file_path = dirname(__FILE__);
 require "$file_path/file.inc";
 
 
-/* create temp file, link and directory */
-$dirname = "$file_path/lstat_stat_variation4";
-mkdir($dirname);  // temp dir
+/* create temp file  */
 
-$filename = "$file_path/lstat_stat_variation4.tmp";
-$fp = fopen($filename, "w");  // temp file
+$file_name = "$file_path/lstat_stat_variation4.tmp";
+$fp = fopen($file_name, "w");  // temp file
 fclose($fp);
 
-$linkname = "$file_path/lstat_stat_variation4_link.tmp";
-symlink($filename, $linkname); // temp link
-
-echo "\n*** Checking lstat() and stat() on file, link and directory after accessing it
-            with is_dir(), is_file() and is_link() functions ***\n";
-
-// is_dir() on a directory
-echo "-- Testing on Directory --\n";
-$old_stat = stat($dirname);
+// touch a file check stat, there should be difference in atime
+echo "*** Testing stat() for file after using touch() on the file ***\n";
+$old_stat = stat($file_name);
 // clear the cache
 clearstatcache();
 sleep(2);
-var_dump( is_dir($dirname) );
-$new_stat = stat($dirname);
+var_dump( touch($file_name) );
+$new_stat = stat($file_name);
 
 // compare self stats
 var_dump( compare_self_stat($old_stat) );
 var_dump( compare_self_stat($new_stat) );
-// compare the stat
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-// clear the stat
-clearstatcache();
-
 
-// is_file() on a file
-echo "-- Testing on file --\n";
-$old_stat = stat($filename);
-// clear the stat
-clearstatcache();
-sleep(2);
-var_dump( is_file($filename) );
-$new_stat = stat($filename);
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
 // compare the stat
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-// clear the stat
-clearstatcache();
-
-// is_link() on a link
-echo "-- Testing on link --\n";
-$linkname = "$file_path/lstat_stat_variation4_link.tmp";
-$old_stat = lstat($linkname);
-// clear the stat
-clearstatcache();
-sleep(2);
-var_dump( is_link($linkname) );
-$new_stat = lstat($linkname);
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-// compare the stat
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-// clear the stat
-clearstatcache();
-
-echo "\n*** Checking stat() on a file with read/write permission ***\n";
-$file_handle = fopen($filename, "w");  // create file
-fclose($file_handle);
-$old_stat = stat($filename);
-// clear the stat
-clearstatcache();
-sleep(2);
-// opening file again in read mode
-$file_handle = fopen($filename, "r");  // read file
-fclose($file_handle);
-$new_stat = stat($filename);
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-// compare the stat
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) );
-// clear the stat
-clearstatcache();
-
-echo "\n*** Checking lstat() and stat() on hard link ***\n";
-$linkname = "$file_path/lstat_stat_variation4_hard.tmp";
-var_dump( link($filename, $linkname) );
-$file_stat = stat($filename);
-$link_stat = lstat($linkname);
-// compare self stats
-var_dump( compare_self_stat($file_stat) );
-var_dump( compare_self_stat($link_stat) );
-// compare the stat
-var_dump( compare_stats($file_stat, $link_stat, $all_stat_keys) );
-// clear the stat
+$affected_members = array(8, 'atime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
+// clear the cache
 clearstatcache();
 
 echo "\n--- Done ---";
@@ -125,36 +52,10 @@ echo "\n--- Done ---";
 --CLEAN--
 <?php
 $file_path = dirname(__FILE__);
-unlink("$file_path/lstat_stat_variation4_hard.tmp");
-unlink("$file_path/lstat_stat_variation4_link.tmp");
 unlink("$file_path/lstat_stat_variation4.tmp");
-rmdir("$file_path/lstat_stat_variation4");
 ?>
 --EXPECTF--
-*** Checking lstat() and stat() on file, link and directory after accessing it
-            with is_dir(), is_file() and is_link() functions ***
--- Testing on Directory --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing on file --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
--- Testing on link --
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-
-*** Checking stat() on a file with read/write permission ***
-bool(true)
-bool(true)
-bool(true)
-
-*** Checking lstat() and stat() on hard link ***
+*** Testing stat() for file after using touch() on the file ***
 bool(true)
 bool(true)
 bool(true)
index 0a6b446ae1d32bee703deb7d7ff39f85a1e30160..b8f4478c837af031092716458c51d945c2a82eaa 100755 (executable)
@@ -1,11 +1,12 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - effects  with changing permissions
+Test lstat() and stat() functions: usage variations - effects of touch() on dir
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
-    die('skip.. lstat() not available on Windows');
+    die('skip.. Not valid for Windows');
 }
 ?>
+?>
 --FILE--
 <?php
 /* Prototype: array lstat ( string $filename );
@@ -15,74 +16,35 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
-/* test the effects on stats with changing permissions of dir/file/link */
+/* test the effects of touch() on stats of dir */
 
 $file_path = dirname(__FILE__);
 require "$file_path/file.inc";
 
 
-/* create temp file, link and directory */
-mkdir("$file_path/lstat_stat_variation5/");  // temp dir
-
-$filename = "$file_path/lstat_stat_variation5.tmp";
-$fp = fopen($filename, "w");  // temp file
-fclose($fp);
+/* create temp directory */
 
-// temp link
-$linkname = "$file_path/lstat_stat_variation5_link.tmp";
-symlink($filename, $linkname);
+$dir_name = "$file_path/lstat_stat_variation5";
+mkdir($dir_name);  // temp dir
 
-/* Checking lstat() and stat() on file, link and directory after changing permission */
-
-// checking lstat() and stat() on links
-echo "\n*** Testing lstat() and stat() on links with miscelleneous file permission and content ***\n";
-clearstatcache();
-$old_stat = lstat($linkname);
-var_dump( chmod($linkname, 0777) );
-// clear the stat
+// touch a directory and check stat, there should be difference in atime
+echo "*** Testing stat() for directory after using touch() on the directory ***\n";
+$old_stat = stat($dir_name);
+// clear the cache
 clearstatcache();
 sleep(2);
-$new_stat = lstat($linkname);
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
-// compare the stat
-var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys, "=") );
-// clear the stat
-clearstatcache();
+var_dump( touch($dir_name) );
+$new_stat = stat($dir_name);
 
-// checking stat() on file
-echo "\n*** Testing lstat() and stat() on file with miscelleneous file permission and content ***\n";
-$old_stat = stat($filename);
-var_dump( chmod($filename, 0777) );
-// clear the stat
-clearstatcache();
-sleep(2);
-$new_stat = stat($filename);
 // compare self stats
 var_dump( compare_self_stat($old_stat) );
 var_dump( compare_self_stat($new_stat) );
-// compare the stat
-$affected_members = array(10, 'ctime');
-var_dump( compare_stats($old_stat, $new_stat, $affected_members, "!=") );
-// clear the stat
-clearstatcache();  // clear statement cache
 
-// checking stat() on directory
-echo "\n*** Testing stat() on directory with miscelleneous file permission ***\n";
-$dirname = "$file_path/lstat_stat_variation5";
-$old_stat = stat($dirname);
-var_dump( chmod($dirname, 0777) );
-// clear the stat
-clearstatcache();
-sleep(2);
-$new_stat = stat($dirname);
-// compare self stats
-var_dump( compare_self_stat($old_stat) );
-var_dump( compare_self_stat($new_stat) );
 // compare the stat
-$affected_members = array(2, 10, 'mode', 'ctime');
-var_dump( compare_stats($old_stat, $new_stat, $affected_members, "!=") );
+$affected_members = array(8, 9, 10, 'atime', 'mtime', 'ctime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
+// clear the cache
+clearstatcache();
 
 echo "\n--- Done ---";
 ?>
@@ -90,24 +52,10 @@ echo "\n--- Done ---";
 --CLEAN--
 <?php
 $file_path = dirname(__FILE__);
-unlink("$file_path/lstat_stat_variation5_link.tmp");
-unlink("$file_path/lstat_stat_variation5.tmp");
 rmdir("$file_path/lstat_stat_variation5");
 ?>
 --EXPECTF--
-*** Testing lstat() and stat() on links with miscelleneous file permission and content ***
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-
-*** Testing lstat() and stat() on file with miscelleneous file permission and content ***
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-
-*** Testing stat() on directory with miscelleneous file permission ***
+*** Testing stat() for directory after using touch() on the directory ***
 bool(true)
 bool(true)
 bool(true)
index ea3380b8a4388c87abe9c05c07b91c5654b09c90..de62c05aad4c10d5ff060d3cf7a627acc1f07199 100755 (executable)
@@ -1,6 +1,5 @@
 --TEST--
-Test lstat() and stat() functions: usage variations - dir/file/link names in objects
-
+Test lstat() and stat() functions: usage variations - effects of touch() on link 
 --SKIPIF--
 <?php
 if (substr(PHP_OS, 0, 3) == 'WIN') {
@@ -16,65 +15,38 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
    Description: Gives information about a file
 */
 
-/* test for stats of dir/file/link when their names are stored in objects */
+/* test the effects of touch() on stats of link */
 
 $file_path = dirname(__FILE__);
 require "$file_path/file.inc";
 
 
 /* create temp file, link and directory */
-mkdir("$file_path/lstat_stat_variation6/");  // temp dir
 
-$fp = fopen("$file_path/lstat_stat_variation6.tmp", "w");  // temp file
+$file_name = "$file_path/lstat_stat_variation6.tmp";
+$fp = fopen($file_name, "w");  // temp file
 fclose($fp);
-
-// temp link
-symlink("$file_path/lstat_stat_variation6.tmp", "$file_path/lstat_stat_variation6_link.tmp");
-
-/* Checking lstat() and stat() on file/link/directory where filenames,
-   linknames and directory names are stored in object and array */
-
-echo "\n*** Testing lstat() and stat() with filename, linkname
-            and directory name stored inside a object ***\n";
-
-// creating object with members as numeric and non-numeric filename, linkname and directory name
-class object_temp {
-  public $var_name;
-  public function object_temp($name) {
-    $this->var_name = $name;
-  }
-}
-// directory as member
-$obj1 = new object_temp("$file_path/lstat_stat_variation6/");
-$obj2 = new object_temp("$file_path/lstat_stat_variation6a/");
-
-// file as member
-$obj3 = new object_temp("$file_path/lstat_stat_variation6.tmp");
-$obj4 = new object_temp("$file_path/lstat_stat_variation6a.tmp");
-
-// link as member
-$obj5 = new object_temp("$file_path/lstat_stat_variation6_link.tmp");
-$obj6 = new object_temp("$file_path/lstat_stat_variation6a_link.tmp");
-
-echo "\n-- Testing lstat() and stat() with softlink, linkname stored inside an object --\n";
-
-var_dump( lstat($obj5->var_name) );
-
-var_dump( symlink($obj5->var_name, $obj6->var_name) );
-var_dump( lstat($obj6->var_name) );
-
-echo "\n-- Testing stat() on filename stored inside an object --\n";
-var_dump( stat($obj3->var_name) );
-
-$fp = fopen("$file_path/lstat_stat_variation6a.tmp", "w");
-fclose($fp);
-var_dump( stat($obj4->var_name) );
-
-echo "\n-- Testing stat() on directory name stored inside an object --\n";
-var_dump( stat($obj1->var_name) );
-
-mkdir("$file_path/lstat_stat_variation6a/");
-var_dump( stat($obj2->var_name) );
+$link_name = "$file_path/lstat_stat_variation_link6.tmp";
+symlink($file_name, $link_name);  // temp link
+
+// touch a link, check stat, there should be difference in atime
+echo "*** Testing lstat() for link after using touch() on the link ***\n";
+$old_stat = lstat($link_name);
+// clear the cache
+clearstatcache();
+sleep(2);
+var_dump( touch($link_name) );
+$new_stat = lstat($link_name);
+
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+
+// compare the stat
+$affected_members = array(8, 'atime');
+var_dump( compare_stats($old_stat, $new_stat, $affected_members, "<") );
+// clear the stat
+clearstatcache();
 
 echo "\n--- Done ---";
 ?>
@@ -82,347 +54,14 @@ echo "\n--- Done ---";
 --CLEAN--
 <?php
 $file_path = dirname(__FILE__);
-unlink("$file_path/lstat_stat_variation6_link.tmp");
 unlink("$file_path/lstat_stat_variation6.tmp");
-rmdir("$file_path/lstat_stat_variation6");
-unlink("$file_path/lstat_stat_variation6a_link.tmp");
-unlink("$file_path/lstat_stat_variation6a.tmp");
-rmdir("$file_path/lstat_stat_variation6a/");
+unlink("$file_path/lstat_stat_variation_link6.tmp");
 ?>
-
 --EXPECTF--
-*** Testing lstat() and stat() with filename, linkname
-            and directory name stored inside a object ***
-
--- Testing lstat() and stat() with softlink, linkname stored inside an object --
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
+*** Testing lstat() for link after using touch() on the link ***
+bool(true)
+bool(true)
+bool(true)
 bool(true)
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
-
--- Testing stat() on filename stored inside an object --
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
-
--- Testing stat() on directory name stored inside an object --
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
-array(26) {
-  [0]=>
-  int(%d)
-  [1]=>
-  int(%d)
-  [2]=>
-  int(%d)
-  [3]=>
-  int(%d)
-  [4]=>
-  int(%d)
-  [5]=>
-  int(%d)
-  [6]=>
-  int(%d)
-  [7]=>
-  int(%d)
-  [8]=>
-  int(%d)
-  [9]=>
-  int(%d)
-  [10]=>
-  int(%d)
-  [11]=>
-  int(%d)
-  [12]=>
-  int(%d)
-  ["dev"]=>
-  int(%d)
-  ["ino"]=>
-  int(%d)
-  ["mode"]=>
-  int(%d)
-  ["nlink"]=>
-  int(%d)
-  ["uid"]=>
-  int(%d)
-  ["gid"]=>
-  int(%d)
-  ["rdev"]=>
-  int(%d)
-  ["size"]=>
-  int(%d)
-  ["atime"]=>
-  int(%d)
-  ["mtime"]=>
-  int(%d)
-  ["ctime"]=>
-  int(%d)
-  ["blksize"]=>
-  int(%d)
-  ["blocks"]=>
-  int(%d)
-}
 
 --- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation7.phpt b/ext/standard/tests/file/lstat_stat_variation7.phpt
new file mode 100644 (file)
index 0000000..0f78895
--- /dev/null
@@ -0,0 +1,57 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - writing data into file
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+/* test the effects on stats with writing data into a  file */
+
+$file_name = "$file_path/lstat_stat_variation7.tmp";
+$fp = fopen($file_name, "w");  // temp file
+fclose($fp);
+
+// writing to an empty file
+echo "*** Testing stat() on file after data is written in it ***\n";
+$fh = fopen($file_name,"w");
+$old_stat = stat($file_name);
+clearstatcache();
+fwrite($fh, "Hello World");
+$new_stat = stat($file_name);
+
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stats
+$comp_arr = array(7, 12, 'size', 'blocks');
+var_dump(compare_stats($old_stat, $new_stat, $comp_arr, "<"));
+clearstatcache();
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation7.tmp");
+?>
+--EXPECTF--
+*** Testing stat() on file after data is written in it ***
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation8.phpt b/ext/standard/tests/file/lstat_stat_variation8.phpt
new file mode 100644 (file)
index 0000000..bd029a3
--- /dev/null
@@ -0,0 +1,63 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - creating file/subdir
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+/* test the effects on stats dir by  creating file/subdir in a dir 
+*/
+
+/* create temp file */
+@rmdir("$file_path/lstat_stat_variation8/");  //ensure that dir doesn't exists 
+mkdir("$file_path/lstat_stat_variation8/");  // temp dir
+
+// creating and deleting subdir and files in the dir
+echo "*** Testing stat() on dir after subdir and file is created in it ***\n";
+$dirname = "$file_path/lstat_stat_variation8";
+$old_stat = stat($dirname);
+clearstatcache();
+sleep(2);
+@rmdir("$dirname/lstat_stat_variation8_subdir"); // ensure that dir doesn't exists
+mkdir("$dirname/lstat_stat_variation8_subdir");
+$file_handle = fopen("$dirname/lstat_stat_variation8a.tmp", "w");
+fclose($file_handle);
+$new_stat = stat($dirname);
+
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+// compare the stats
+$affected_members = array(3, 9, 10, 'nlink', 'mtime', 'ctime');
+clearstatcache();
+var_dump(compare_stats($old_stat, $new_stat, $affected_members, "<"));
+
+echo "\n--- Done ---";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+unlink("$file_path/lstat_stat_variation8/lstat_stat_variation8a.tmp");
+rmdir("$file_path/lstat_stat_variation8/lstat_stat_variation8_subdir/");
+rmdir("$file_path/lstat_stat_variation8");
+?>
+--EXPECTF--
+*** Testing stat() on dir after subdir and file is created in it ***
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---
diff --git a/ext/standard/tests/file/lstat_stat_variation9.phpt b/ext/standard/tests/file/lstat_stat_variation9.phpt
new file mode 100644 (file)
index 0000000..90fcb1e
--- /dev/null
@@ -0,0 +1,69 @@
+--TEST--
+Test lstat() and stat() functions: usage variations - deleting file/subdir
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip.. Not valid for Windows');
+}
+?>
+--FILE--
+<?php
+/* Prototype: array lstat ( string $filename );
+   Description: Gives information about a file or symbolic link
+
+   Prototype: array stat ( string $filename );
+   Description: Gives information about a file
+*/
+
+$file_path = dirname(__FILE__);
+require "$file_path/file.inc";
+
+/* test the effects on stats of dir by deleting file/subdir from a dir 
+*/
+
+echo "*** Testing stat() for comparing stats after the deletion of subdir and file ***\n";
+
+/* first create the dir/subdir and files, record the stat */
+// ensure that dir doesn't exists
+@rmdir("$file_path/lstat_stat_variation9");  //delete if exists 
+mkdir("$file_path/lstat_stat_variation9");  // temp dir
+
+// creating and deleting subdir and files in the dir
+$dirname = "$file_path/lstat_stat_variation9";
+@rmdir("$dirname/lstat_stat_variation9_subdir"); // delete if exists
+mkdir("$dirname/lstat_stat_variation9_subdir");
+$file_handle = fopen("$dirname/lstat_stat_variation9a.tmp", "w");
+fclose($file_handle);
+
+$old_stat = stat($dirname);
+
+/* now delete teh surdir and file and record the stat */
+unlink("$dirname/lstat_stat_variation9a.tmp");
+rmdir("$dirname/lstat_stat_variation9_subdir");
+
+// comparing stats after the deletion of subdir and file
+$new_stat = stat($dirname);
+// compare self stats
+var_dump( compare_self_stat($old_stat) );
+var_dump( compare_self_stat($new_stat) );
+
+// compare the stats
+$affected_members = array(3, 'nlink');
+var_dump(compare_stats($old_stat, $new_stat, $affected_members, ">"));
+
+echo "\n--- Done ---";
+?>
+
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$dirname = "$file_path/lstat_stat_variation9";
+rmdir($dirname);
+?>
+--EXPECTF--
+*** Testing stat() for comparing stats after the deletion of subdir and file ***
+bool(true)
+bool(true)
+bool(true)
+
+--- Done ---