Exemplo n.º 1
0
        public void GetFiles_ReturnsAllFiles()
        {
            var files = new[] { new FileMock("file1"), new FileMock("file2") };
            var mock  = new DirectoryMock("test", files);

            Assert.Equal(files, mock.GetFiles());
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
            public FileSystemMock(MockFileSystemModel files)
            {
                if (files == null)
                {
                    throw new ArgumentNullException(nameof(files));
                }

                File      = new FileMock(files);
                Directory = new DirectoryMock(files);
            }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
      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;
      }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
            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);
            }
Exemplo n.º 13
0
        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();
        }
Exemplo n.º 14
0
        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();
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
            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);
            }
Exemplo n.º 18
0
            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);
        }
Exemplo n.º 20
0
 public DirectoryMock(DirectoryMock parent, string name)
     : base(parent, name)
 {
 }
Exemplo n.º 21
0
        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();
        }
Exemplo n.º 22
0
 public FileSystemMock(Dictionary<string, string> files, string temporaryFolder)
 {
     File = new FileMock(files);
     Directory = new DirectoryMock(files, temporaryFolder);
 }
Exemplo n.º 23
0
        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();
        }
Exemplo n.º 24
0
 public FileMock(DirectoryMock parent, string name, string text)
     : base(parent, name)
 {
     Text = text;
 }
Exemplo n.º 25
0
 public DirectoryMock(DirectoryMock parent, string name)
   : base(parent, name) {
 }
Exemplo n.º 26
0
 public FileMock(DirectoryMock parent, string name, string text)
   : base(parent, name) {
   Text = text;
 }
Exemplo n.º 27
0
        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();
        }
Exemplo n.º 28
0
 public FileSystemMock(Dictionary <string, string> files, string temporaryFolder)
 {
     File      = new FileMock(files);
     Directory = new DirectoryMock(files, temporaryFolder);
 }
Exemplo n.º 29
0
 public FileSystemMock(Dictionary<string, string> files)
 {
     File = new FileMock(files);
     Directory = new DirectoryMock(files);
 }
Exemplo n.º 30
0
 public FileSystemMock(Dictionary <string, string> files)
 {
     File      = new FileMock(files);
     Directory = new DirectoryMock(files);
 }