php-src/ext/standard/tests/file/touch_basic.phpt
Stanislav Malyshev af5e2eaf8d Merge branch 'pull-request/320'
* pull-request/320:
  this is test 5 not 6
  fix race condition
  more shared names that create race conditions
  change to a unique filename
  more shared filenames
  yet another shared filename
  don't share a filename to stop race conditions
  fix race condition for 2-4 and normalize names for others
  fix race condition when running tests in parallel
  clean up after test
  Fix #64572: Clean up after the test
  Fix #64572: Clean up after the test
2013-06-17 01:06:20 -07:00

98 lines
2.3 KiB
PHP

--TEST--
Test touch() function : basic functionality
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
--SKIPIF--
<?php
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip.. only for Non Windows');
}
?>
--FILE--
<?php
/* Prototype : proto bool touch(string filename [, int time [, int atime]])
* Description: Set modification time of file
* Source code: ext/standard/filestat.c
* Alias to functions:
*/
echo "*** Testing touch() : basic functionality ***\n";
$filename = dirname(__FILE__)."/touch_basic.dat";
echo "\n--- testing touch creates a file ---\n";
@unlink($filename);
if (file_exists($filename)) {
die("touch_basic failed");
}
var_dump( touch($filename) );
if (file_exists($filename) == false) {
die("touch_basic failed");
}
echo "\n --- testing touch doesn't alter file contents ---\n";
$testln = "Here is a test line";
$h = fopen($filename, "wb");
fwrite($h, $testln);
fclose($h);
touch($filename);
$h = fopen($filename, "rb");
echo fgets($h);
fclose($h);
echo "\n\n --- testing touch alters the correct file metadata ---\n";
$init_meta = stat($filename);
clearstatcache();
sleep(1);
touch($filename);
$next_meta = stat($filename);
$type = array("dev", "ino", "mode", "nlink", "uid", "gid",
"rdev", "size", "atime", "mtime", "ctime",
"blksize", "blocks");
for ($i = 0; $i < count($type); $i++) {
if ($init_meta[$i] != $next_meta[$i]) {
echo "stat data differs at $type[$i]\n";
}
}
// Initialise all required variables
$time = 10000;
$atime = 20470;
// Calling touch() with all possible arguments
echo "\n --- testing touch using all parameters ---\n";
var_dump( touch($filename, $time, $atime) );
clearstatcache();
$init_meta = stat($filename);
echo "ctime=".$init_meta['ctime']."\n";
echo "mtime=".$init_meta['mtime']."\n";
echo "atime=".$init_meta['atime']."\n";
unlink($filename);
echo "Done";
?>
--EXPECTF--
*** Testing touch() : basic functionality ***
--- testing touch creates a file ---
bool(true)
--- testing touch doesn't alter file contents ---
Here is a test line
--- testing touch alters the correct file metadata ---
stat data differs at atime
stat data differs at mtime
stat data differs at ctime
--- testing touch using all parameters ---
bool(true)
ctime=%d
mtime=10000
atime=20470
Done