예제 #1
0
 /// <inheritdoc/>
 public void TurnIntoSymlink(string path)
 {
     (string dir, string file)  = Split(path);
     (string digest, long size) = Manifest[dir][file];
     Manifest[dir][file]        = new ManifestSymlink(digest, size);
 }
예제 #2
0
 /// <inheritdoc/>
 public void AddSymlink(string path, string target)
 {
     (string dir, string file) = Split(path);
     using var stream          = target.ToStream();
     Manifest[dir][file]       = new ManifestSymlink(Manifest.Format.DigestContent(stream), stream.Length);
 }
예제 #3
0
        public void TestListPaths()
        {
            var normalFile = new ManifestNormalFile("123", new DateTime(), 10, "normal");
            var dir1 = new ManifestDirectory("/dir1");
            var executableFile = new ManifestExecutableFile("123", new DateTime(), 10, "executable");
            var dir2 = new ManifestDirectory("/dir2");
            var symlink = new ManifestSymlink("123", 10, "symlink");
            var manifest = new Manifest(ManifestFormat.Sha256New, normalFile, dir1, executableFile, dir2, symlink);

            manifest.ListPaths().Should().Equal(
                new KeyValuePair<string, ManifestNode>("normal", normalFile),
                new KeyValuePair<string, ManifestNode>("dir1", dir1),
                new KeyValuePair<string, ManifestNode>(Path.Combine("dir1", "executable"), executableFile),
                new KeyValuePair<string, ManifestNode>("dir2", dir2),
                new KeyValuePair<string, ManifestNode>(Path.Combine("dir2", "symlink"), symlink));
        }