public void TestMount() { var fs = new MountFileSystem(); var memfs = new MemoryFileSystem(); Assert.Throws <ArgumentNullException>(() => fs.Mount(null, memfs)); Assert.Throws <ArgumentNullException>(() => fs.Mount("/test", null)); Assert.Throws <ArgumentException>(() => fs.Mount("test", memfs)); Assert.Throws <ArgumentException>(() => fs.Mount("/", memfs)); Assert.False(fs.IsMounted("/test")); fs.Mount("/test", memfs); Assert.True(fs.IsMounted("/test")); Assert.Throws <ArgumentException>(() => fs.Mount("/test", memfs)); Assert.Throws <ArgumentException>(() => fs.Mount("/test", fs)); Assert.Throws <ArgumentNullException>(() => fs.Unmount(null)); Assert.Throws <ArgumentException>(() => fs.Unmount("test")); Assert.Throws <ArgumentException>(() => fs.Unmount("/")); Assert.Throws <ArgumentException>(() => fs.Unmount("/test/a")); Assert.Throws <ArgumentException>(() => fs.Unmount("/test/a/b")); Assert.Throws <ArgumentException>(() => fs.Unmount("/test2")); fs.Mount("/test2", memfs); Assert.True(fs.IsMounted("/test")); Assert.True(fs.IsMounted("/test2")); Assert.Equal(new Dictionary <UPath, IFileSystem>() { { "/test", memfs }, { "/test2", memfs }, }, fs.GetMounts()); fs.Unmount("/test"); Assert.False(fs.IsMounted("/test")); Assert.True(fs.IsMounted("/test2")); fs.Unmount("/test2"); Assert.Equal(0, fs.GetMounts().Count); var innerFs = GetCommonMemoryFileSystem(); fs.Mount("/x/y", innerFs); fs.Mount("/x/y/b", innerFs); Assert.True(fs.FileExists("/x/y/A.txt")); Assert.True(fs.FileExists("/x/y/b/A.txt")); }
public IEnumerable <string> EnumerateSourceFiles(string path) { if (_fileSystem.DirectoryExists(path)) { foreach (var i in _fileSystem.EnumerateFiles(path, "*.nx", SearchOption.TopDirectoryOnly)) { yield return(i.ToString()); } } if (_fileSystem.FileExists(path)) { yield return(path); } }
public void EnumerateDeepMountPartial() { var fs = GetCommonMemoryFileSystem(); var mountFs = new MountFileSystem(); mountFs.Mount("/x/y/z", fs); Assert.True(mountFs.FileExists("/x/y/z/A.txt")); var expected = new List <UPath> { "/x/y", "/x/y/z", "/x/y/z/a", "/x/y/z/A.txt" }; // only concerned with the first few because it should list the mount parts first var actual = mountFs.EnumeratePaths("/x", "*", SearchOption.AllDirectories).Take(4).ToList(); Assert.Equal(expected, actual); }