1--TEST-- 2Test touch() function : basic functionality 3--CREDITS-- 4Dave Kelsey <d_kelsey@uk.ibm.com> 5--SKIPIF-- 6<?php 7if (substr(PHP_OS, 0, 3) != 'WIN') { 8 die('skip.. only for Windows'); 9} 10?> 11--FILE-- 12<?php 13echo "*** Testing touch() : basic functionality ***\n"; 14 15$filename = __DIR__."/touch.dat"; 16 17echo "\n--- testing touch creates a file ---\n"; 18@unlink($filename); 19if (file_exists($filename)) { 20 die("touch_basic failed"); 21} 22var_dump( touch($filename) ); 23if (file_exists($filename) == false) { 24 die("touch_basic failed"); 25} 26 27echo "\n --- testing touch doesn't alter file contents ---\n"; 28$testln = "Here is a test line"; 29$h = fopen($filename, "wb"); 30fwrite($h, $testln); 31fclose($h); 32touch($filename); 33$h = fopen($filename, "rb"); 34echo fgets($h); 35fclose($h); 36 37echo "\n\n --- testing touch alters the correct file metadata ---\n"; 38$init_meta = stat($filename); 39clearstatcache(); 40sleep(1); 41touch($filename); 42$next_meta = stat($filename); 43$type = array("dev", "ino", "mode", "nlink", "uid", "gid", 44 "rdev", "size", "atime", "mtime", "ctime", 45 "blksize", "blocks"); 46 47for ($i = 0; $i < count($type); $i++) { 48 if ($init_meta[$i] != $next_meta[$i]) { 49 echo "stat data differs at $type[$i]\n"; 50 } 51} 52 53 54// Initialise all required variables 55$time = 10000; 56$atime = 20470; 57 58// Calling touch() with all possible arguments 59echo "\n --- testing touch using all parameters ---\n"; 60var_dump( touch($filename, $time, $atime) ); 61clearstatcache(); 62$init_meta = stat($filename); 63echo "ctime=".$init_meta['ctime']."\n"; 64echo "mtime=".$init_meta['mtime']."\n"; 65echo "atime=".$init_meta['atime']."\n"; 66 67unlink($filename); 68 69echo "Done"; 70?> 71--EXPECTF-- 72*** Testing touch() : basic functionality *** 73 74--- testing touch creates a file --- 75bool(true) 76 77 --- testing touch doesn't alter file contents --- 78Here is a test line 79 80 --- testing touch alters the correct file metadata --- 81stat data differs at atime 82stat data differs at mtime 83 84 --- testing touch using all parameters --- 85bool(true) 86ctime=%d 87mtime=10000 88atime=20470 89Done 90