소스 검색

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 년 전
부모
커밋
03b634d114
1개의 변경된 파일9개의 추가작업 그리고 0개의 파일을 삭제
  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');
+        }
+    }
 }