public void SetUp () { _directoryName = "Parent\\Directory"; _parentDirectory = MockRepository.GenerateStub<IDirectoryInfo>(); _creationTime = new DateTime (2009, 10, 1); _lastAccessTime = new DateTime (2009, 10, 2); _lastWriteTime = new DateTime (2009, 10, 3); _inMemoryDirectoryInfo = new InMemoryDirectoryInfo (_directoryName, _parentDirectory, _creationTime, _lastAccessTime, _lastWriteTime); }
public ZipFileExtractor (Stream archiveStream) { ArgumentUtility.CheckNotNull ("archiveStream", archiveStream); _archiveStream = archiveStream; _zipFile = new ZipFile (_archiveStream); _zipFile.NameTransform = new WindowsNameTransform(); var directoryTreeResolver = new DirectoryTreeResolver (DateTime.Now); _files = GetFilesInternal(directoryTreeResolver); _root = new InMemoryDirectoryInfo ("\\\\", null, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow); _root.Directories.AddRange (directoryTreeResolver.GetRootDirectories()); }
[Fact] // https://github.com/dotnet/runtime/issues/36415 public void VerifyInMemoryDirectoryInfo_IsNotEmpty() { IEnumerable <string> files = new[] { @"pagefile.sys" }; InMemoryDirectoryInfo directoryInfo; IEnumerable <FileSystemInfoBase> fileSystemInfos; if (PlatformDetection.IsWindows) { directoryInfo = new InMemoryDirectoryInfo(@"C:\", files); fileSystemInfos = directoryInfo.EnumerateFileSystemInfos(); Assert.Equal(1, fileSystemInfos.Count()); } directoryInfo = new InMemoryDirectoryInfo("/", files); fileSystemInfos = directoryInfo.EnumerateFileSystemInfos(); Assert.Equal(1, fileSystemInfos.Count()); }
public InMemoryFileInfo(string file, InMemoryDirectoryInfo parent) { FullName = file; Name = Path.GetFileName(file); _parent = parent; }
private async Task OnFileChanged(object sender, System.IO.FileSystemEventArgs e) { // Skip directory change events and when rpc has ben disconnected if (!e.IsDirectoryChanged() && _rpc != null) { // Create something to match with var item = new InMemoryDirectoryInfo(_root, new string[] { e.FullPath }); // See if this matches one of our patterns. if (_matcher.Execute(item).HasMatches) { // Send out the event to the language server var renamedArgs = e as System.IO.RenamedEventArgs; var didChangeParams = new DidChangeWatchedFilesParams(); // Visual Studio actually does a rename when saving. The rename is from a file ending with '~' if (renamedArgs == null || renamedArgs.OldFullPath.EndsWith("~")) { renamedArgs = null; didChangeParams.Changes = new FileEvent[] { new FileEvent() }; didChangeParams.Changes[0].Uri = new Uri(e.FullPath); switch (e.ChangeType) { case WatcherChangeTypes.Created: didChangeParams.Changes[0].FileChangeType = FileChangeType.Created; break; case WatcherChangeTypes.Deleted: didChangeParams.Changes[0].FileChangeType = FileChangeType.Deleted; break; case WatcherChangeTypes.Changed: didChangeParams.Changes[0].FileChangeType = FileChangeType.Changed; break; case WatcherChangeTypes.Renamed: didChangeParams.Changes[0].FileChangeType = FileChangeType.Changed; break; default: didChangeParams.Changes = Array.Empty <FileEvent>(); break; } } else { // file renamed var deleteEvent = new FileEvent(); deleteEvent.FileChangeType = FileChangeType.Deleted; deleteEvent.Uri = new Uri(renamedArgs.OldFullPath); var createEvent = new FileEvent(); createEvent.FileChangeType = FileChangeType.Created; createEvent.Uri = new Uri(renamedArgs.FullPath); didChangeParams.Changes = new FileEvent[] { deleteEvent, createEvent }; } if (didChangeParams.Changes.Any()) { await _rpc.NotifyWithParameterObjectAsync(Methods.WorkspaceDidChangeWatchedFiles.Name, didChangeParams); if (renamedArgs != null) { var textDocumentIdentifier = new TextDocumentIdentifier(); textDocumentIdentifier.Uri = new Uri(renamedArgs.OldFullPath); var closeParam = new DidCloseTextDocumentParams(); closeParam.TextDocument = textDocumentIdentifier; await _rpc.NotifyWithParameterObjectAsync(Methods.TextDocumentDidClose.Name, closeParam); var textDocumentItem = new TextDocumentItem(); textDocumentItem.Uri = new Uri(renamedArgs.FullPath); var openParam = new DidOpenTextDocumentParams(); openParam.TextDocument = textDocumentItem; await _rpc.NotifyWithParameterObjectAsync(Methods.TextDocumentDidOpen.Name, openParam); } } } } }
private Func<IDirectoryInfo, InMemoryDirectoryInfo> CreateDirectory ( string name, params Func<IDirectoryInfo, IFileSystemEntry>[] subEntries) { return parent => { var directory = new InMemoryDirectoryInfo ( parent != null ? Path.Combine (parent.FullName, name) : name, parent, DateTime.Now, DateTime.Now, DateTime.Now); foreach (var subEntry in subEntries) { var value = subEntry (directory); var dir = value as IDirectoryInfo; if (dir != null) { directory.Directories.Add (dir); } else { var file = value as IFileInfo; if (file != null) directory.Files.Add (file); } } return directory; }; }