public void DirectoryMoveFromManaged_Test() { var fs = new PhysicalFileSystem(); var fs2 = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var dir2 = new FS.Directory("test2", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); var file = dir.OpenFile(tempFile); Guid oldGuid = file.FileGuid; Assert.True(dir.ContainsFile(".manifest")); using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file var file2 = dir2.CopyFrom(file); Assert.Throws <IOException>(() => dir2.MoveFrom(file)); Assert.Equal(1, dir2.MoveFrom(file, true).Length); Assert.Equal(oldGuid, file2.FileGuid); Assert.Equal(1, file2.Length); Assert.False(file.Created); Assert.False(dir.ContainsFile(file.Name)); }
public async Task CopyFileJobQueue_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 temp2 = Path.GetTempFileName(); await System.IO.File.WriteAllBytesAsync(temp2, Data); // Execute the results. var tq = new AsyncJobQueue <TaskResult <IFile> >(); var token = await tq.QueueJob(EmitCopyResult(temp2, dir)); for ((TaskResult <IFile> val, bool next) = await tq.GetNext(token); next; (val, next) = await tq.GetNext(token)) { } Assert.True(dir.ContainsFile(Path.GetFileName(temp2))); using (var stream = dir.OpenFile(Path.GetFileName(temp2)).OpenStream()) { Assert.Equal(Data.Length, stream.Length); } dir.OpenFile(Path.GetFileName(temp2)).Delete(); Assert.False(dir.ContainsFile(Path.GetFileName(temp2))); }
public async Task CopyFile_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 temp2 = Path.GetTempFileName(); await System.IO.File.WriteAllBytesAsync(temp2, Data); // Execute the results. await foreach (var res in EmitCopyResult(temp2, dir)) { Assert.Equal(await res.Description, $"Copied {new FileInfo(temp2).FullName} to directory {dir.Name}"); Assert.Equal(await res.Description, $"Copied {new FileInfo(temp2).FullName} to directory {dir.Name}"); } Assert.True(dir.ContainsFile(Path.GetFileName(temp2))); using (var stream = dir.OpenFile(Path.GetFileName(temp2)).OpenStream()) { Assert.Equal(Data.Length, stream.Length); } dir.OpenFile(Path.GetFileName(temp2)).Delete(); Assert.False(dir.ContainsFile(Path.GetFileName(temp2))); }
public void DirectoryMoveFromManagedAndRename_Test() { var fs = new PhysicalFileSystem(); var fs2 = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")); var dir2 = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); var file = dir.OpenFile(tempFile); Guid oldGuid = file.FileGuid; using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file var newFile = dir2.MoveFrom(file, "newNonConflictingName", false); Assert.Throws <FileNotFoundException>(() => dir2.MoveFrom(file)); Assert.Equal(1, newFile.Length); Assert.False(file.Created); Assert.False(dir.ContainsFile(file.Name)); Assert.True(newFile.Created); Assert.Equal(newFile.FileGuid, file.FileGuid); Assert.Equal(newFile.FileGuid, dir2.OpenFile("newNonConflictingName").FileGuid); }
public async Task DirectoryCopyFromAsyncManaged_Test() { var fs = new PhysicalFileSystem(); var fs2 = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var dir2 = new FS.Directory("test2", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); var file = dir.OpenFile(tempFile); Assert.True(dir.ContainsFile(".manifest")); using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file var file2 = await dir2.CopyFromAsync(file); Assert.Equal(file.FileGuid, file2.FileGuid); Assert.True(file.Created); Assert.Equal(1, file2.Length); await Assert.ThrowsAsync <IOException>(async() => await dir2.CopyFromAsync(file)); Assert.Equal(1, (await dir2.CopyFromAsync(file, true)).Length); }
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 DirectoryManifestCreated_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("/")); dir.OpenFile("test.txt"); Assert.True(dir.ContainsFile(".manifest")); }
public void DirectoryManifestPersist_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 file = dir.OpenFile("test.txt"); Assert.True(dir.ContainsFile(".manifest")); Assert.Equal(file.FileGuid, dir.RetrieveManifestRecord(dir.ThisDirectory.Path / Path.GetFileName("test.txt"), false).guid); }
public void DirectoryManifestRemove_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 file = dir.OpenFile("test.txt"); Assert.True(dir.ContainsFile(".manifest")); Assert.Equal(file.FileGuid, dir.GetGuid("test.txt")); file.Delete(); var newFile = dir.OpenFile("test.txt"); Assert.NotEqual(newFile.FileGuid, file.FileGuid); // Assert.True(dir.Manifest.ContainsKey("test.txt")); }
public void DirectoryRecursiveFileOpen_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 file = dir.OpenFile("test.txt"); Assert.True(dir.ContainsFile(".manifest")); Assert.Equal(file.FileGuid, dir.GetGuid("test.txt")); file.OpenStream().Close(); dir.OpenDirectory("next_test").OpenFile("test2.txt").OpenStream().Close(); var iter = dir.EnumerateFilesRecursive(); Assert.True(iter.Count() >= 2); }
public void DirectoryCopyFromFileInfo_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 file = dir.OpenFile(tempFile); Assert.True(dir.ContainsFile(".manifest")); using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file Assert.Throws <IOException>(() => dir.CopyFrom(new FileInfo(tempFile))); Assert.Equal(0, dir.CopyFrom(new FileInfo(tempFile), true).Length); }
public void FileRename_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(); var file = dir.OpenFile(tempFile); Guid oldGuid = file.FileGuid; Assert.True(dir.ContainsFile(".manifest")); using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file file.Rename(tempFile2); Assert.Equal(Path.GetFileName(tempFile2), file.Name); Assert.Equal(file.FileGuid, dir.OpenFile(tempFile2).FileGuid); }
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))); }