unlink_variation10.phpt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. --TEST--
  2. Test unlink() function : variation: unlinking directories
  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. $tmpDir = "subDir.tmp";
  21. $dirToLinkTo = $workDir.'/'."linkme.tmp";
  22. mkdir($workDir);
  23. $cwd = getcwd();
  24. mkdir($dirToLinkTo);
  25. $dirs = array(
  26. // relative
  27. $workDir.'/'.$tmpDir,
  28. './'.$workDir.'/'.$tmpDir,
  29. $workDir.'/../'.$workDir.'/'.$tmpDir,
  30. //absolute
  31. $cwd.'/'.$workDir.'/'.$tmpDir,
  32. $cwd.'/./'.$workDir.'/'.$tmpDir,
  33. $cwd.'/'.$workDir.'/../'.$workDir.'/'.$tmpDir,
  34. // multiple separators
  35. $workDir.'//'.$tmpDir,
  36. $cwd.'//'.$workDir.'//'.$tmpDir,
  37. );
  38. foreach($dirs as $dirToUnlink) {
  39. test_link($workDir.'/'.$tmpDir, $dirToLinkTo, $dirToUnlink, true); //soft link
  40. //cannot test hard links unless you are root.
  41. }
  42. echo "\n--- try to unlink a directory ---\n";
  43. unlink($dirToLinkTo);
  44. rmdir($dirToLinkTo);
  45. rmdir($workDir);
  46. function test_link($linkedDir, $toLinkTo, $tounlink, $softlink) {
  47. if ($softlink == true) {
  48. symlink($toLinkTo, $linkedDir);
  49. $msg = "soft link";
  50. }
  51. else {
  52. link($toLinkTo, $linkedDir);
  53. $msg = "hard link";
  54. }
  55. echo "-- unlinking $msg $tounlink --\n";
  56. $res = unlink($tounlink);
  57. if ($res === true) {
  58. if (is_link($tounlink) === false) {
  59. echo "directory unlinked\n";
  60. }
  61. else {
  62. echo "FAILED: directory not unlinked\n";
  63. }
  64. }
  65. else {
  66. unlink($linkedDir);
  67. }
  68. }
  69. ?>
  70. ===DONE===
  71. --EXPECTF--
  72. *** Testing unlink() : variation ***
  73. -- unlinking soft link unlinkVar8.tmp/subDir.tmp --
  74. directory unlinked
  75. -- unlinking soft link ./unlinkVar8.tmp/subDir.tmp --
  76. directory unlinked
  77. -- unlinking soft link unlinkVar8.tmp/../unlinkVar8.tmp/subDir.tmp --
  78. directory unlinked
  79. -- unlinking soft link /%s/unlinkVar8.tmp/subDir.tmp --
  80. directory unlinked
  81. -- unlinking soft link /%s/./unlinkVar8.tmp/subDir.tmp --
  82. directory unlinked
  83. -- unlinking soft link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/subDir.tmp --
  84. directory unlinked
  85. -- unlinking soft link unlinkVar8.tmp//subDir.tmp --
  86. directory unlinked
  87. -- unlinking soft link /%s//unlinkVar8.tmp//subDir.tmp --
  88. directory unlinked
  89. --- try to unlink a directory ---
  90. Warning: unlink(unlinkVar8.tmp/linkme.tmp): %s in %s on line %d
  91. ===DONE===