示例#1
0
        public void TestCreateSymbolicLinkToDirectory()
        {
            var symlink = new FileInfo("link_to_directory");
            var result  = SymbolicLinkHelper.CreateSymbolicLink(new DirectoryInfo("tmp"), new FileInfo("link_to_directory"));

            symlink.Delete();
            Assert.IsTrue(result);
        }
示例#2
0
        public void TestCreateSymbolicLinkToFile()
        {
            var symlink = new FileInfo("link_to_file");
            var result  = SymbolicLinkHelper.CreateSymbolicLink(new FileInfo("file"), symlink);

            symlink.Delete();
            Assert.IsTrue(result);
        }
示例#3
0
        public void TestGetSymbolicLinkTarget()
        {
            var symlink = new FileInfo("link_to_tmp_directory");

            SymbolicLinkHelper.CreateSymbolicLink(new DirectoryInfo("tmp"), symlink);
            var result = SymbolicLinkHelper.GetSymbolicLinkTarget(new FileInfo("link_to_tmp_directory"));

            symlink.Delete();
            Assert.AreEqual("tmp", result);
        }
示例#4
0
        public void TestGetSymbolicLinkTargetAbsolute()
        {
            var symlink = new FileInfo("link_to_tmp_directory");
            var tmpDir  = new DirectoryInfo("tmp");

            SymbolicLinkHelper.CreateSymbolicLink(tmpDir, symlink);
            var result = SymbolicLinkHelper.GetSymbolicLinkTargetAbsolute(new FileInfo("link_to_tmp_directory"));

            symlink.Delete();
            Assert.AreEqual(tmpDir.FullName, result);
        }
示例#5
0
        public void TestIsSymbolicLink()
        {
            var symlink = new FileInfo("link_to_tmp_directory");

            SymbolicLinkHelper.CreateSymbolicLink(new DirectoryInfo("tmp"), symlink);
            var result = SymbolicLinkHelper.IsSymbolicLink(new FileInfo("link_to_tmp_directory"));

            symlink.Delete();
            Assert.IsTrue(result);

            result = SymbolicLinkHelper.IsSymbolicLink(new DirectoryInfo("."));
            Assert.IsFalse(result);
        }
示例#6
0
        public static string GetSymbolicLinkTargetAbsolute(FileSystemInfo symlinkFileSystemInfo)
        {
            // Get the symlink's targetPath and
            // if it is relative make it absolute based on symlinkFileSystemInfo.
            var targetPath = SymbolicLinkHelper.GetSymbolicLinkTarget(symlinkFileSystemInfo);

            if (!Path.IsPathRooted(targetPath))
            {
                var parentDir = PathUtil.GetParent(symlinkFileSystemInfo);
                targetPath = Path.Combine(parentDir.FullName, targetPath);
                // Normalize path.
                targetPath = Path.GetFullPath(targetPath);
            }

            // Remove trailing directory separator char if any.
            var lastChar = targetPath[targetPath.Length - 1];

            if (targetPath.Length > 1 && (lastChar == Path.AltDirectorySeparatorChar || lastChar == Path.DirectorySeparatorChar))
            {
                targetPath = targetPath.Substring(0, targetPath.Length - 1);
            }

            return(targetPath);
        }