public void GetFiles_ReturnsAllFiles() { var files = new[] { new FileMock("file1"), new FileMock("file2") }; var mock = new DirectoryMock("test", files); Assert.Equal(files, mock.GetFiles()); }
public void It_sets_UnauthorizedAccess_to_true_when_an_UnauthorizedAccessException_happens() { var fileMock = new FileMock(); var directoryMock = new DirectoryMock(); var nugetCacheSentinel = new NuGetCacheSentinel(NUGET_CACHE_PATH, fileMock, directoryMock); nugetCacheSentinel.UnauthorizedAccess.Should().BeTrue(); }
public FileSystemMock(MockFileSystemModel files) { if (files == null) { throw new ArgumentNullException(nameof(files)); } File = new FileMock(files); Directory = new DirectoryMock(files); }
public void It_returns_false_to_the_in_progress_sentinel_already_exists_when_it_fails_to_get_a_handle_to_it_but_it_failed_because_it_was_unauthorized() { var fileMock = new FileMock(); var directoryMock = new DirectoryMock(); fileMock.InProgressSentinel = null; var nugetCacheSentinel = new NuGetCacheSentinel(NUGET_CACHE_PATH, fileMock, directoryMock); nugetCacheSentinel.InProgressSentinelAlreadyExists().Should().BeFalse(); }
public void It_returns_null_when_no_test_runner_is_found() { var directoryMock = new DirectoryMock(); var assemblyTestRunnerResolver = new AssemblyTestRunnerNameResolver(_directoryOfAssemblyUnderTest, directoryMock); var testRunner = assemblyTestRunnerResolver.ResolveTestRunner(); testRunner.Should().BeNull(); }
public DirectoryMock AddDirectory(string name) { // Only the root directory can contain directory separators. if (!IsRoot) { if (name.IndexOf(Path.DirectorySeparatorChar) >= 0) { throw new ArgumentException(); } } var dir = new DirectoryMock(this, name); _directories.Add(dir); return dir; }
public void It_finds_the_runner_in_the_same_folder_as_the_assembly_when_the_path_passed_is_to_the_assembly() { var directoryMock = new DirectoryMock(); directoryMock.AddFile(_directoryOfAssemblyUnderTest, TestRunnerFileName); var pathToAssemblyUnderTest = Path.Combine(_directoryOfAssemblyUnderTest, TestRunnerFileName); var assemblyTestRunnerResolver = new AssemblyTestRunnerNameResolver(pathToAssemblyUnderTest, directoryMock); var testRunner = assemblyTestRunnerResolver.ResolveTestRunner(); testRunner.Should().Be(TestRunnerName); }
public EntryMock(DirectoryMock parent, string name) { if (parent == null && name != null) { throw new ArgumentException("Root directory must not have a name."); } if (parent != null) { if (string.IsNullOrEmpty(name)) throw new ArgumentException("Entry name is empty."); if (name.IndexOf(Path.AltDirectorySeparatorChar) >= 0) throw new ArgumentException("Entry name contains alternate path separators."); } _parent = parent; _name = name; }
public void It_returns_a_test_runner_even_when_multiple_test_runners_are_present() { var directoryMock = new DirectoryMock(); directoryMock.AddFile(_directoryOfAssemblyUnderTest, TestRunnerFileName); directoryMock.AddFile(_directoryOfAssemblyUnderTest, "dotnet-test-someOtherTestRunner.dll"); directoryMock.AddFile(_directoryOfAssemblyUnderTest, "dotnet-test-AndYetAnotherTestRunner.dll"); var assemblyTestRunnerResolver = new AssemblyTestRunnerNameResolver(_directoryOfAssemblyUnderTest, directoryMock); var bestEffortTestRunner = assemblyTestRunnerResolver.ResolveTestRunner(); bestEffortTestRunner.Should().NotBeNull(); }
public void GetListingEmptyDirectory() { var directory = DirectoryMock.Mock( Enumerable.Empty <DirectoryInfo>(), Enumerable.Empty <FileInfo>()); var listingService = new DirectoryListingService( DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object); var actual = listingService.GetListing(new SystemFilepath("./empty-directory")); var expected = Enumerable.Empty <DirectoryListing>(); Assert.Equal(expected, actual); }
public void ItCreatesTheDotnetUserProfileFolderIfItDoesNotExistAlreadyWhenCreatingTheSentinel() { var fileSystemMock = _fileSystemMockBuilder.Build(); var directoryMock = new DirectoryMock(); var firstTimeUseNoticeSentinel = new FirstTimeUseNoticeSentinel( DOTNET_USER_PROFILE_FOLDER_PATH, fileSystemMock.File, directoryMock); firstTimeUseNoticeSentinel.CreateIfNotExists(); directoryMock.Exists(DOTNET_USER_PROFILE_FOLDER_PATH).Should().BeTrue(); directoryMock.CreateDirectoryInvoked.Should().BeTrue(); }
public DirectoryMock AddDirectory(string name) { // Only the root directory can contain directory separators. if (!IsRoot) { if (name.IndexOf(Path.DirectorySeparatorChar) >= 0) { throw new ArgumentException(); } } var dir = new DirectoryMock(this, name); _directories.Add(dir); return(dir); }
public void ItDoesNotAttemptToCreateTheDotnetUserProfileFolderIfItAlreadyExistsWhenCreatingTheSentinel() { var fileSystemMock = _fileSystemMockBuilder.Build(); var directoryMock = new DirectoryMock(new List <string> { DOTNET_USER_PROFILE_FOLDER_PATH }); var firstTimeUseNoticeSentinel = new FirstTimeUseNoticeSentinel( DOTNET_USER_PROFILE_FOLDER_PATH, fileSystemMock.File, directoryMock); firstTimeUseNoticeSentinel.CreateIfNotExists(); directoryMock.CreateDirectoryInvoked.Should().BeFalse(); }
public async Task NoFilesOnClientOrService() { var textView = new Mock <ITextView>(); var directory = DirectoryMock.Mock( Enumerable.Empty <DirectoryInfo>(), Enumerable.Empty <FileInfo>()); var fileService = new Mock <IFileServiceApi>(); var client = new SyncClient( textView.Object, DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object, fileService.Object); await client.RunAsync(); // Verify ITextView VerifyTextView( textView, filesOnClient: Enumerable.Empty <FileSyncFile>(), filesOnService: Enumerable.Empty <FileSyncFile>(), filesToUpload: Enumerable.Empty <FileSyncFile>(), filesToDownload: Enumerable.Empty <FileSyncFile>(), conflicts: Enumerable.Empty <Conflict>()); // Verify IFileStore directory.Verify( x => x.GetFiles(), Times.Once); directory.Verify( x => x.GetSubdirectories(), Times.Once); directory.VerifyNoOtherCalls(); // Verify IFileServiceApi fileService.Verify( x => x.GetDirectoryListingAsync(It.IsAny <RelativeUri?>()), Times.Once); fileService.VerifyNoOtherCalls(); }
public void GetBranches_ReturnsLastCommitInfo() { var message = "Initial support for auto property initializers.\r\n\r\nFeatures the new syntax ('= expr;'), new rules around required accessors, and allows auto property and field initializers in structs."; var text = "b02c98c7906dd3666f479699b83760ce239d6d2d 2014-04-16 Andy Gocke\r\n" + message; var directory = new DirectoryMock("root", new DirectoryMock("test", new FileMock("LastCommit.txt", text) ) ); var provider = new BranchProvider(directory); var branch = Assert.Single(provider.GetBranches()); Assert.Equal("b02c98c7906dd3666f479699b83760ce239d6d2d", branch.LastCommitHash); Assert.Equal("2014-04-16", branch.LastCommitDate.ToString("yyyy-MM-dd")); Assert.Equal("Andy Gocke", branch.LastCommitAuthor); Assert.Equal(message, branch.LastCommitMessage); }
public void FindIcon_ReturnsExpectedIconBasedOnName(string description, string[] itemNames, string expected) { var solution = new Mock <Solution>(); solution.SetupGet(x => x.FileName).Returns(Guid.NewGuid().ToString()); var solutionDirectory = new DirectoryMock("", itemNames.Select(name => new FileMock(name)).ToArray()); var fileSystem = new FileSystemMock(new FileMock(".sln") { FullName = solution.Object.FileName, Directory = solutionDirectory }); var best = new IconFinder(fileSystem).FindIcon(solution.Object); Assert.Equal(expected, best != null ? best.FullName : null); }
public DirectoryMock AddDirectory(string name) { // Only the root directory can contain directory separators. if (!IsRoot) { if (name.IndexOf(Path.DirectorySeparatorChar) >= 0) { throw new ArgumentException(); } } var dir = _directories.FirstOrDefault(x => SystemPathComparer.EqualsNames(x.Name, name)); if (dir == null) { dir = new DirectoryMock(this, name); _directories.Add(dir); } return(dir); }
public EntryMock(DirectoryMock parent, string name) { if (parent == null && name != null) { throw new ArgumentException("Root directory must not have a name."); } if (parent != null) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("Entry name is empty."); } if (name.IndexOf(Path.AltDirectorySeparatorChar) >= 0) { throw new ArgumentException("Entry name contains alternate path separators."); } } _parent = parent; _name = name; }
public void GetListingSubdirectory() { var directory = DirectoryMock.Mock( new[] { new DirectoryInfo("directory") }, new[] { new FileInfo("hello.txt"), new FileInfo("world.txt") }); var listingService = new DirectoryListingService( DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object); var actual = listingService.GetListing(new SystemFilepath("./subdirectory")).ToArray(); var expected = new DirectoryListing[] { new FileSyncDirectory(new ForwardSlashFilepath("./subdirectory/directory"), "api/v1/listing?path=./subdirectory/directory"), new FileSyncFile(new ForwardSlashFilepath("./subdirectory/hello.txt"), DirectoryMock.DefaultFileTimestamp) { Sha1 = FileHasherMock.EmptySha1Hash, ContentUrl = "api/v1/content?path=./subdirectory/hello.txt" }, new FileSyncFile(new ForwardSlashFilepath("./subdirectory/world.txt"), DirectoryMock.DefaultFileTimestamp) { Sha1 = FileHasherMock.EmptySha1Hash, ContentUrl = "api/v1/content?path=./subdirectory/world.txt" } }; Assert.Equal(expected, actual); }
public DirectoryMock(DirectoryMock parent, string name) : base(parent, name) { }
public async Task ContinuesOnFailedDownload() { var textView = new Mock <ITextView>(); var directory = DirectoryMock.Mock( Enumerable.Empty <DirectoryInfo>(), new[] { new FileInfo("client-only-file-1.txt"), new FileInfo("client-only-file-2.txt") }); var fileService = MockFileServiceApi(new DirectoryListing[] { new FileSyncFile(new ForwardSlashFilepath("./service-only-file-1.txt"), DateTime.UtcNow) }); fileService .Setup(x => x.GetFileContentAsync(It.Is <FileSyncFile>( file => file.RelativePath.ToString() == "./service-only-file-1.txt"))) .Throws <HttpRequestException>(); var client = new SyncClient( textView.Object, DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object, fileService.Object); await client.RunAsync(); // Verify ITextView var filesOnClient = new[] { new FileSyncFile(new ForwardSlashFilepath("./client-only-file-1.txt"), DateTime.UtcNow), new FileSyncFile(new ForwardSlashFilepath("./client-only-file-2.txt"), DateTime.UtcNow) }; var filesOnService = new[] { new FileSyncFile(new ForwardSlashFilepath("./service-only-file-1.txt"), DateTime.UtcNow) }; textView.Verify( x => x.Error(It.IsAny <LineViewComponent>()), Times.Once()); textView.Verify( x => x.Error(It.IsAny <FileListViewComponent>()), Times.Once()); VerifyTextView( textView, filesOnClient: filesOnClient, filesOnService: filesOnService, filesToUpload: filesOnClient, filesToDownload: filesOnService, conflicts: Enumerable.Empty <Conflict>()); // Verify IFileStore directory.Verify( x => x.GetFiles(), Times.Once); directory.Verify( x => x.GetSubdirectories(), Times.Once); directory.Verify( x => x.ReadFileAsync(It.IsAny <string>()), Times.Exactly(2)); directory.VerifyNoOtherCalls(); // Verify IFileServiceApi fileService.Verify( x => x.GetDirectoryListingAsync(It.IsAny <RelativeUri?>()), Times.Once); fileService.Verify( x => x.PutFileContentAsync(It.IsAny <ForwardSlashFilepath>(), It.IsAny <Stream>()), Times.Exactly(2)); fileService.Verify( x => x.GetFileContentAsync(It.IsAny <FileSyncFile>()), Times.Once); fileService.VerifyNoOtherCalls(); }
public FileSystemMock(Dictionary<string, string> files, string temporaryFolder) { File = new FileMock(files); Directory = new DirectoryMock(files, temporaryFolder); }
public async Task SameFilesDifferentVersionsOnClientAndService() { var textView = new Mock <ITextView>(); var directory = DirectoryMock.Mock( Enumerable.Empty <DirectoryInfo>(), new[] { new FileInfo("shared-file.txt") }); var fileService = MockFileServiceApi(new DirectoryListing[] { new FileSyncFile(new ForwardSlashFilepath("./shared-file.txt"), DateTime.UtcNow) { Sha1 = "1234" } }); var client = new SyncClient( textView.Object, DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object, fileService.Object); await client.RunAsync(); // Verify ITextView var filesOnClient = new[] { new FileSyncFile(new ForwardSlashFilepath("./shared-file.txt"), DateTime.UtcNow) }; var filesOnService = new[] { new FileSyncFile(new ForwardSlashFilepath("./shared-file.txt"), DateTime.UtcNow) }; var conflicts = new[] { new Conflict( clientFile: filesOnClient[0], serviceFile: filesOnService[0]) }; VerifyTextView( textView, filesOnClient: filesOnClient, filesOnService: filesOnService, filesToUpload: Enumerable.Empty <FileSyncFile>(), filesToDownload: filesOnService, conflicts: conflicts); // Verify IFileStore directory.Verify( x => x.GetFiles(), Times.Once); directory.Verify( x => x.GetSubdirectories(), Times.Once); directory.Verify( x => x.WriteFileAsync(It.IsAny <string>(), It.IsAny <Stream>()), Times.Once); directory.VerifyNoOtherCalls(); // Verify IFileServiceApi fileService.Verify( x => x.GetDirectoryListingAsync(It.IsAny <RelativeUri?>()), Times.Once); fileService.Verify( x => x.GetFileContentAsync(It.IsAny <FileSyncFile>()), Times.Once); fileService.VerifyNoOtherCalls(); }
public FileMock(DirectoryMock parent, string name, string text) : base(parent, name) { Text = text; }
public async Task DifferentFilesOnClientAndService() { var textView = new Mock <ITextView>(); var directory = DirectoryMock.Mock( Enumerable.Empty <DirectoryInfo>(), new[] { new FileInfo("client-only-file-1.txt"), new FileInfo("client-only-file-2.txt") }); var fileService = MockFileServiceApi(new DirectoryListing[] { new FileSyncFile(new ForwardSlashFilepath("./service-only-file-1.txt"), DateTime.UtcNow) }); var client = new SyncClient( textView.Object, DirectoryMock.MockFactory(directory).Object, FileHasherMock.Mock().Object, fileService.Object); await client.RunAsync(); // Verify ITextView var filesOnClient = new[] { new FileSyncFile(new ForwardSlashFilepath("./client-only-file-1.txt"), DateTime.UtcNow), new FileSyncFile(new ForwardSlashFilepath("./client-only-file-2.txt"), DateTime.UtcNow) }; var filesOnService = new[] { new FileSyncFile(new ForwardSlashFilepath("./service-only-file-1.txt"), DateTime.UtcNow) }; VerifyTextView( textView, filesOnClient: filesOnClient, filesOnService: filesOnService, filesToUpload: filesOnClient, filesToDownload: filesOnService, conflicts: Enumerable.Empty <Conflict>()); // Verify IFileStore directory.Verify( x => x.GetFiles(), Times.Once); directory.Verify( x => x.GetSubdirectories(), Times.Once); directory.Verify( x => x.WriteFileAsync(It.IsAny <string>(), It.IsAny <Stream>()), Times.Once); directory.Verify( x => x.ReadFileAsync(It.IsAny <string>()), Times.Exactly(2)); directory.VerifyNoOtherCalls(); // Verify IFileServiceApi fileService.Verify( x => x.GetDirectoryListingAsync(It.IsAny <RelativeUri?>()), Times.Once); fileService.Verify( x => x.PutFileContentAsync(It.IsAny <ForwardSlashFilepath>(), It.IsAny <Stream>()), Times.Exactly(2)); fileService.Verify( x => x.GetFileContentAsync(It.IsAny <FileSyncFile>()), Times.Once); fileService.VerifyNoOtherCalls(); }
public FileSystemMock(Dictionary <string, string> files, string temporaryFolder) { File = new FileMock(files); Directory = new DirectoryMock(files, temporaryFolder); }
public FileSystemMock(Dictionary<string, string> files) { File = new FileMock(files); Directory = new DirectoryMock(files); }
public FileSystemMock(Dictionary <string, string> files) { File = new FileMock(files); Directory = new DirectoryMock(files); }