public void LinkOverwritesCreatedFile_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var file = dir.OpenFile(tempFile); using (var f = file.OpenStream()) { f.WriteByte(254); } Assert.Throws <IOException>(() => dir.LinkFrom(new FileInfo(tempFile))); var link = dir.LinkFrom(new FileInfo(tempFile), true); Assert.IsAssignableFrom <Link>(link); using (var str = link.OpenReadStream()) { Assert.Equal(255, str.ReadByte()); } Assert.Equal(file.FileGuid, link.FileGuid); }
public void LinkRename_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); var tempFile2 = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile)); Guid oldGuid = link.FileGuid; Assert.True(dir.ContainsFile(".manifest")); link.Rename(tempFile2); Assert.Equal(Path.GetFileName(tempFile2), link.Name); Assert.Equal(link.FileGuid, dir.OpenFile(tempFile2).FileGuid); Assert.True(new FileInfo(tempFile).Exists); }
public void LinkFromDirectoryNotFoundPath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(new DirectoryInfo(Path.GetRandomFileName()))); }
public void LinkFromInvalidFilePath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var unmanagedFile = Path.GetTempFileName(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); System.IO.File.WriteAllText(unmanagedFile, "Hello World!"); Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(new FileInfo(unmanagedFile), "$$::\0^")); }
public void LinkFromNonExistentFilePath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var unmanagedFile = Path.GetTempFileName(); System.IO.File.Delete(unmanagedFile); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); Assert.Throws <FileNotFoundException>(() => dir.LinkFrom(new FileInfo(unmanagedFile))); }
public void LinkFromFile_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var unmanagedFile = Path.GetTempFileName(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); System.IO.File.WriteAllText(unmanagedFile, "Hello World!"); var linkedFile = dir.LinkFrom(new FileInfo(unmanagedFile)); Assert.Equal("Hello World!", linkedFile.ReadAllText()); Assert.Equal(linkedFile.FileGuid, dir.OpenFile(Path.GetFileName(unmanagedFile)).FileGuid); }
public void LinkFromDirectoryInvalidPath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var dirInfo = System.IO.Directory.CreateDirectory(Path.Combine(temp, Path.GetRandomFileName())); dirInfo.CreateSubdirectory("Subdirectorytest"); var newFile = new FileInfo(Path.Combine(dirInfo.FullName, Path.GetRandomFileName())); System.IO.File.WriteAllText(newFile.FullName, "Hello World!"); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(dirInfo, "$$::\0^")); }
public void LinkFromDirectory_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var dirInfo = System.IO.Directory.CreateDirectory(Path.Combine(temp, Path.GetRandomFileName())); dirInfo.CreateSubdirectory("Subdirectorytest"); var newFile = new FileInfo(Path.Combine(dirInfo.FullName, Path.GetRandomFileName())); System.IO.File.WriteAllText(newFile.FullName, "Hello World!"); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); var linkedDir = dir.LinkFrom(dirInfo); Assert.True(linkedDir.ContainsDirectory("Subdirectorytest")); Assert.Equal("Hello World!", linkedDir.OpenFile(Path.GetFileName(newFile.FullName)).ReadAllText()); }
public async Task FileOverwritesLinkAsync_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile), true); using (var str = link.OpenReadStream()) { Assert.Equal(255, str.ReadByte()); } Assert.Throws <IOException>(() => dir.CopyFrom(new FileInfo(tempFile))); var file = await dir.CopyFromAsync(new FileInfo(tempFile), true); using (var f = file.OpenStream(FileMode.Create, FileAccess.Write)) { f.WriteByte(254); } using (var f = file.OpenReadStream()) using (var s = new FileInfo(tempFile).OpenRead()) { var fbyte = f.ReadByte(); var abyte = s.ReadByte(); Assert.NotEqual(fbyte, abyte); Assert.Equal(254, fbyte); Assert.Equal(255, abyte); } Assert.Equal(file.FileGuid, link.FileGuid); }
public void LinkDelete_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile)); link.Delete(); Assert.True(new FileInfo(tempFile).Exists); using (var str = new FileInfo(tempFile).OpenRead()) { Assert.Equal(255, str.ReadByte()); } }
public void DirectoryCopyLink_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile)); var newLink = dir.OpenDirectory("new").CopyFrom(link); using (var str = newLink.OpenReadStream()) { Assert.Equal(255, str.ReadByte()); } }
public void DirectoryLinkFromFileInfo_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile)); using (var str = link.OpenReadStream()) { Assert.Equal(255, str.ReadByte()); } Assert.Throws <IOException>(() => dir.CopyFrom(new FileInfo(tempFile))); Assert.True(dir.ContainsFile(Path.GetFileName(tempFile))); }