Quellcode durchsuchen

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 vor 10 Jahren
Ursprung
Commit
03b634d114
1 geänderte Dateien mit 9 neuen und 0 gelöschten Zeilen
  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');
+        }
+    }
 }