unlink_variation8.phpt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. --TEST--
  2. Test unlink() function : variation: various valid and invalid paths
  3. --CREDITS--
  4. Dave Kelsey <d_kelsey@uk.ibm.com>
  5. --SKIPIF--
  6. <?php
  7. if (substr(PHP_OS, 0, 3) == 'WIN') {
  8. die('skip.. Not for Windows');
  9. }
  10. ?>
  11. --FILE--
  12. <?php
  13. /* Prototype : bool unlink(string filename[, context context])
  14. * Description: Delete a file
  15. * Source code: ext/standard/file.c
  16. * Alias to functions:
  17. */
  18. echo "*** Testing unlink() : variation ***\n";
  19. $workDir = "unlinkVar8.tmp";
  20. $tmpFile = "file.tmp";
  21. $fileToLinkTo = $workDir.'/'."linkme.tmp";
  22. mkdir($workDir);
  23. $cwd = getcwd();
  24. touch($fileToLinkTo);
  25. $files = array(
  26. // relative
  27. $workDir.'/'.$tmpFile,
  28. './'.$workDir.'/'.$tmpFile,
  29. $workDir.'/../'.$workDir.'/'.$tmpFile,
  30. // relative bad path
  31. $workDir.'/../BADDIR/'.$tmpFile,
  32. 'BADDIR/'.$tmpFile,
  33. //absolute
  34. $cwd.'/'.$workDir.'/'.$tmpFile,
  35. $cwd.'/./'.$workDir.'/'.$tmpFile,
  36. $cwd.'/'.$workDir.'/../'.$workDir.'/'.$tmpFile,
  37. //absolute bad path
  38. $cwd.'/BADDIR/'.$tmpFile,
  39. //trailing separators
  40. $workDir.'/'.$tmpFile.'/',
  41. $cwd.'/'.$workDir.'/'.$tmpFile.'/',
  42. // multiple separators
  43. $workDir.'//'.$tmpFile,
  44. $cwd.'//'.$workDir.'//'.$tmpFile,
  45. );
  46. foreach($files as $fileToUnlink) {
  47. test_realfile($workDir.'/'.$tmpFile, $fileToUnlink);
  48. test_link($workDir.'/'.$tmpFile, $fileToLinkTo, $fileToUnlink, true); //soft link
  49. test_link($workDir.'/'.$tmpFile, $fileToLinkTo, $fileToUnlink, false); //hard link
  50. }
  51. unlink($fileToLinkTo);
  52. rmdir($workDir);
  53. function test_realfile($file, $tounlink) {
  54. touch($file);
  55. echo "-- removing $tounlink --\n";
  56. $res = unlink($tounlink);
  57. if ($res === true) {
  58. if (file_exists($tounlink) === false) {
  59. echo "file removed\n";
  60. }
  61. else {
  62. echo "FAILED: file not removed\n";
  63. }
  64. }
  65. else {
  66. unlink($file);
  67. }
  68. }
  69. function test_link($linkedfile, $toLinkTo, $tounlink, $softlink) {
  70. if ($softlink == true) {
  71. symlink($toLinkTo, $linkedfile);
  72. $msg = "soft link";
  73. }
  74. else {
  75. link($toLinkTo, $linkedfile);
  76. $msg = "hard link";
  77. }
  78. echo "-- unlinking $msg $tounlink --\n";
  79. $res = unlink($tounlink);
  80. if ($res === true) {
  81. if (file_exists($tounlink) === false) {
  82. echo "file unlinked\n";
  83. }
  84. else {
  85. echo "FAILED: file not unlinked\n";
  86. }
  87. }
  88. else {
  89. unlink($linkedfile);
  90. }
  91. }
  92. ?>
  93. ===DONE===
  94. --EXPECTF--
  95. *** Testing unlink() : variation ***
  96. -- removing unlinkVar8.tmp/file.tmp --
  97. file removed
  98. -- unlinking soft link unlinkVar8.tmp/file.tmp --
  99. file unlinked
  100. -- unlinking hard link unlinkVar8.tmp/file.tmp --
  101. file unlinked
  102. -- removing ./unlinkVar8.tmp/file.tmp --
  103. file removed
  104. -- unlinking soft link ./unlinkVar8.tmp/file.tmp --
  105. file unlinked
  106. -- unlinking hard link ./unlinkVar8.tmp/file.tmp --
  107. file unlinked
  108. -- removing unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  109. file removed
  110. -- unlinking soft link unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  111. file unlinked
  112. -- unlinking hard link unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  113. file unlinked
  114. -- removing unlinkVar8.tmp/../BADDIR/file.tmp --
  115. Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d
  116. -- unlinking soft link unlinkVar8.tmp/../BADDIR/file.tmp --
  117. Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d
  118. -- unlinking hard link unlinkVar8.tmp/../BADDIR/file.tmp --
  119. Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d
  120. -- removing BADDIR/file.tmp --
  121. Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d
  122. -- unlinking soft link BADDIR/file.tmp --
  123. Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d
  124. -- unlinking hard link BADDIR/file.tmp --
  125. Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d
  126. -- removing /%s/unlinkVar8.tmp/file.tmp --
  127. file removed
  128. -- unlinking soft link /%s/unlinkVar8.tmp/file.tmp --
  129. file unlinked
  130. -- unlinking hard link /%s/unlinkVar8.tmp/file.tmp --
  131. file unlinked
  132. -- removing /%s/./unlinkVar8.tmp/file.tmp --
  133. file removed
  134. -- unlinking soft link /%s/./unlinkVar8.tmp/file.tmp --
  135. file unlinked
  136. -- unlinking hard link /%s/./unlinkVar8.tmp/file.tmp --
  137. file unlinked
  138. -- removing /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  139. file removed
  140. -- unlinking soft link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  141. file unlinked
  142. -- unlinking hard link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp --
  143. file unlinked
  144. -- removing /%s/BADDIR/file.tmp --
  145. Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d
  146. -- unlinking soft link /%s/BADDIR/file.tmp --
  147. Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d
  148. -- unlinking hard link /%s/BADDIR/file.tmp --
  149. Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d
  150. -- removing unlinkVar8.tmp/file.tmp/ --
  151. Warning: unlink(unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d
  152. -- unlinking soft link unlinkVar8.tmp/file.tmp/ --
  153. Warning: unlink(unlinkVar8.tmp/file.tmp/): %s directory in %s on line %d
  154. -- unlinking hard link unlinkVar8.tmp/file.tmp/ --
  155. Warning: unlink(unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d
  156. -- removing /%s/unlinkVar8.tmp/file.tmp/ --
  157. Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d
  158. -- unlinking soft link /%s/unlinkVar8.tmp/file.tmp/ --
  159. Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): %s directory in %s on line %d
  160. -- unlinking hard link /%s/unlinkVar8.tmp/file.tmp/ --
  161. Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d
  162. -- removing unlinkVar8.tmp//file.tmp --
  163. file removed
  164. -- unlinking soft link unlinkVar8.tmp//file.tmp --
  165. file unlinked
  166. -- unlinking hard link unlinkVar8.tmp//file.tmp --
  167. file unlinked
  168. -- removing /%s//unlinkVar8.tmp//file.tmp --
  169. file removed
  170. -- unlinking soft link /%s//unlinkVar8.tmp//file.tmp --
  171. file unlinked
  172. -- unlinking hard link /%s//unlinkVar8.tmp//file.tmp --
  173. file unlinked
  174. ===DONE===