Browse Source

Prevent fatal error on missing symlink() function in tests

The testsuite didn't run through for me because the php symlink() function
was missing.

It is only available on Windows Visa/Server 2008 or higher.

This commit fixes the issue by checking if the method exists, and if not,
marks the test as skipped because of a non-matching precondition.
hakre 10 năm trước cách đây
mục cha
commit
03b634d114
1 tập tin đã thay đổi với 9 bổ sung0 xóa
  1. 9 0
      tests/Composer/Test/Util/FilesystemTest.php

+ 9 - 0
tests/Composer/Test/Util/FilesystemTest.php

@@ -188,6 +188,7 @@ class FilesystemTest extends TestCase
         @mkdir($basepath . "/real", 0777, true);
         touch($basepath . "/real/FILE");
 
+        $this->skipTestIfSymlinkPhpFunctionIsMissing();
         $result = @symlink($basepath . "/real", $symlinked);
 
         if (!$result) {
@@ -216,6 +217,7 @@ class FilesystemTest extends TestCase
         $symlinked              = $basepath . "/linked";
         $symlinkedTrailingSlash = $symlinked . "/";
 
+        $this->skipTestIfSymlinkPhpFunctionIsMissing();
         $result = @symlink($basepath . "/real", $symlinked);
 
         if (!$result) {
@@ -237,4 +239,11 @@ class FilesystemTest extends TestCase
         $this->assertFalse(file_exists($symlinkedTrailingSlash));
         $this->assertFalse(file_exists($symlinked));
     }
+
+    private function skipTestIfSymlinkPhpFunctionIsMissing()
+    {
+        if (!function_exists('symlink')) {
+            $this->markTestSkipped('The php symlink() function for symbolic links is not available on this platform');
+        }
+    }
 }