mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
finishing off symlink support in easyzip
This commit is contained in:
@@ -95,16 +95,22 @@ public class SymbolicLinkTests
|
||||
var tmpFile = Path.Combine(tempFolder, "AFile");
|
||||
var symFile1 = Path.Combine(tempFolder, "SymFile");
|
||||
var symFile2 = Path.Combine(subDir, "SymFile2");
|
||||
var symFile3 = Path.Combine(subDir, "SymFile3");
|
||||
File.WriteAllText(tmpFile, "Hello!");
|
||||
|
||||
SymbolicLink.Create(symFile1, tmpFile, relative: true);
|
||||
SymbolicLink.Create(symFile2, tmpFile, relative: true);
|
||||
SymbolicLink.Create(symFile3, tmpFile, relative: false);
|
||||
|
||||
Assert.Equal("Hello!", File.ReadAllText(symFile1));
|
||||
Assert.Equal("Hello!", File.ReadAllText(symFile2));
|
||||
|
||||
Assert.Equal("AFile", SymbolicLink.GetTarget(symFile1, resolve: false));
|
||||
Assert.Equal("..\\AFile", SymbolicLink.GetTarget(symFile2, resolve: false));
|
||||
Assert.Equal("AFile", SymbolicLink.GetTarget(symFile1, relative: true));
|
||||
Assert.Equal("..\\AFile", SymbolicLink.GetTarget(symFile2, relative: true));
|
||||
Assert.Equal("..\\AFile", SymbolicLink.GetTarget(symFile3, relative: true));
|
||||
Assert.Equal(tmpFile, SymbolicLink.GetTarget(symFile1, relative: false));
|
||||
Assert.Equal(tmpFile, SymbolicLink.GetTarget(symFile2, relative: false));
|
||||
Assert.Equal(tmpFile, SymbolicLink.GetTarget(symFile3, relative: false));
|
||||
|
||||
Assert.Equal(tmpFile, SymbolicLink.GetTarget(symFile1));
|
||||
Assert.Equal(tmpFile, SymbolicLink.GetTarget(symFile2));
|
||||
@@ -129,8 +135,8 @@ public class SymbolicLinkTests
|
||||
|
||||
Assert.Equal(subSubDir, SymbolicLink.GetTarget(sym2));
|
||||
Assert.Equal(subDir2, SymbolicLink.GetTarget(sym1));
|
||||
Assert.Equal("..\\..\\SubDir2", SymbolicLink.GetTarget(sym1, resolve: false));
|
||||
Assert.Equal("SubDir\\SubSub", SymbolicLink.GetTarget(sym2, resolve: false));
|
||||
Assert.Equal("..\\..\\SubDir2", SymbolicLink.GetTarget(sym1, relative: true));
|
||||
Assert.Equal("SubDir\\SubSub", SymbolicLink.GetTarget(sym2, relative: true));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -8,6 +8,51 @@ namespace Velopack.Tests;
|
||||
|
||||
public class ZipPackageTests
|
||||
{
|
||||
private readonly ITestOutputHelper _output;
|
||||
public ZipPackageTests(ITestOutputHelper output)
|
||||
{
|
||||
_output = output;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EazyZipPreservesSymlinks()
|
||||
{
|
||||
using var logger = _output.BuildLoggerFor<ZipPackageTests>();
|
||||
|
||||
using var _1 = Utility.GetTempDirectory(out var tempDir);
|
||||
using var _2 = Utility.GetTempDirectory(out var zipDir);
|
||||
using var _3 = Utility.GetTempDirectory(out var extractedDir);
|
||||
|
||||
var actual = Path.Combine(tempDir, "actual");
|
||||
var actualFile = Path.Combine(actual, "file.txt");
|
||||
|
||||
var other = Path.Combine(tempDir, "other");
|
||||
var symlink = Path.Combine(other, "syml");
|
||||
var symfile = Path.Combine(other, "sym.txt");
|
||||
var zipFile = Path.Combine(zipDir, "test.zip");
|
||||
|
||||
Directory.CreateDirectory(actual);
|
||||
Directory.CreateDirectory(other);
|
||||
File.WriteAllText(actualFile, "hello");
|
||||
SymbolicLink.Create(symlink, actual);
|
||||
SymbolicLink.Create(symfile, actualFile);
|
||||
|
||||
Compression.EasyZip.CreateZipFromDirectoryAsync(logger, zipFile, tempDir).GetAwaiterResult();
|
||||
Compression.EasyZip.ExtractZipToDirectory(logger, zipFile, extractedDir);
|
||||
|
||||
Assert.True(File.Exists(Path.Combine(extractedDir, "actual", "file.txt")));
|
||||
Assert.Equal("hello", File.ReadAllText(Path.Combine(extractedDir, "actual", "file.txt")));
|
||||
Assert.False(SymbolicLink.Exists(Path.Combine(extractedDir, "actual", "file.txt")));
|
||||
|
||||
Assert.True(Directory.Exists(Path.Combine(extractedDir, "other", "syml")));
|
||||
Assert.True(File.Exists(Path.Combine(extractedDir, "other", "sym.txt")));
|
||||
Assert.Equal("hello", File.ReadAllText(Path.Combine(extractedDir, "other", "sym.txt")));
|
||||
Assert.True(SymbolicLink.Exists(Path.Combine(extractedDir, "other", "syml")));
|
||||
Assert.True(SymbolicLink.Exists(Path.Combine(extractedDir, "other", "sym.txt")));
|
||||
|
||||
Assert.Equal("..\\actual\\file.txt", SymbolicLink.GetTarget(Path.Combine(extractedDir, "other", "sym.txt"), relative: true));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasSameFilesAndDependenciesAsPackaging()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user