public void ScanDiff_Throws_Stryker_Input_Exception_When_Commit_null() { var options = new StrykerOptions() { SinceTarget = "branch" }; var repositoryMock = new Mock <IRepository>(); var branchCollectionMock = new Mock <BranchCollection>(); var branchMock = new Mock <Branch>(); var commitMock = new Mock <Commit>(); branchCollectionMock .Setup(x => x.Add(It.IsAny <string>(), It.IsAny <string>())) .Returns(new Mock <Branch>(MockBehavior.Loose).Object); branchMock .SetupGet(x => x.IsCurrentRepositoryHead) .Returns(true); branchMock .SetupGet(x => x.FriendlyName) .Returns("master"); branchCollectionMock .Setup(x => x.GetEnumerator()) .Returns(((IEnumerable <Branch>) new List <Branch> { branchMock.Object }).GetEnumerator()); repositoryMock.SetupGet(x => x.Branches).Returns(branchCollectionMock.Object); var gitInfoMock = new Mock <IGitInfoProvider>(); gitInfoMock.Setup(x => x.DetermineCommit()).Returns((Commit)null); gitInfoMock.SetupGet(x => x.Repository).Returns(repositoryMock.Object); var target = new GitDiffProvider(options, null, gitInfoMock.Object); Should.Throw <InputException>(() => target.ScanDiff()); }
public void ScanDiffReturnsListofFiles() { // Arrange var basePath = FilePathUtils.NormalizePathSeparators("C://Users/JohnDoe/Project/Tests"); var options = new StrykerOptions(gitSource: "d670460b4b4aece5915caf5c68d12f560a9fe3e4", basePath: basePath, fileSystem: new MockFileSystem()); var gitInfoMock = new Mock <IGitInfoProvider>(); var repositoryMock = new Mock <IRepository>(MockBehavior.Loose); var commitMock = new Mock <Commit>(MockBehavior.Loose); var branchMock = new Mock <Branch>(MockBehavior.Strict); var patchMock = new Mock <Patch>(MockBehavior.Strict); var patchEntryChangesMock = new Mock <PatchEntryChanges>(MockBehavior.Strict); // Setup of mocks commitMock .SetupGet(x => x.Tree) .Returns(new Mock <Tree>(MockBehavior.Loose).Object); branchMock .SetupGet(x => x.Tip) .Returns(commitMock.Object); branchMock.SetupGet(x => x.CanonicalName).Returns("refs/heads/branch"); branchMock.SetupGet(x => x.FriendlyName).Returns("branch"); repositoryMock .Setup(x => x.Branches.GetEnumerator()) .Returns(new List <Branch> { branchMock.Object }.GetEnumerator()) .Verifiable(); patchEntryChangesMock .SetupGet(x => x.Path) .Returns("file.cs"); patchMock .Setup(x => x.GetEnumerator()) .Returns(((IEnumerable <PatchEntryChanges>) new List <PatchEntryChanges> { patchEntryChangesMock.Object }).GetEnumerator()); repositoryMock .Setup(x => x.Diff.Compare <Patch>(It.IsAny <Tree>(), DiffTargets.Index | DiffTargets.WorkingDirectory)) .Returns(patchMock.Object); repositoryMock .Setup(x => x.Lookup(It.IsAny <ObjectId>())).Returns(commitMock.Object); gitInfoMock.Setup(x => x.DetermineCommit()).Returns(commitMock.Object); gitInfoMock.SetupGet(x => x.Repository).Returns(repositoryMock.Object); gitInfoMock.SetupGet(x => x.RepositoryPath).Returns("C:/Path/To/Repo"); var target = new GitDiffProvider(options, gitInfoMock.Object); // Act var res = target.ScanDiff(); // Assert res.ChangedFiles.Count().ShouldBe(1); res.TestsChanged.ShouldBeFalse(); }
public void ScanDiffReturnsListOfFiles_ExcludingFilesInDiffIgnoreFiles_Multi_Asterisk() { // Arrange var diffIgnoreFiles = new[] { new FilePattern(Glob.Parse("**/file.cs"), false, null) }; var basePath = FilePathUtils.NormalizePathSeparators("/c/Users/JohnDoe/Project/Tests"); var options = new StrykerOptions() { BasePath = basePath, SinceTarget = "d670460b4b4aece5915caf5c68d12f560a9fe3e4", DiffIgnoreChanges = diffIgnoreFiles }; var gitInfoMock = new Mock <IGitInfoProvider>(); var repositoryMock = new Mock <IRepository>(MockBehavior.Loose); var commitMock = new Mock <Commit>(MockBehavior.Loose); var branchMock = new Mock <Branch>(MockBehavior.Strict); var patchMock = new Mock <Patch>(MockBehavior.Strict); var patchEntryChangesMock = new Mock <PatchEntryChanges>(MockBehavior.Strict); var patchEntryChangesGitIgnoreMock = new Mock <PatchEntryChanges>(MockBehavior.Strict); // Setup of mocks commitMock .SetupGet(x => x.Tree) .Returns(new Mock <Tree>(MockBehavior.Loose).Object); branchMock .SetupGet(x => x.Tip) .Returns(commitMock.Object); branchMock.SetupGet(x => x.CanonicalName).Returns("refs/heads/branch"); branchMock.SetupGet(x => x.FriendlyName).Returns("branch"); repositoryMock .Setup(x => x.Branches.GetEnumerator()) .Returns(new List <Branch> { branchMock.Object }.GetEnumerator()) .Verifiable(); patchEntryChangesMock .SetupGet(x => x.Path) .Returns("/c/Users/JohnDoe/Project/file.cs"); patchMock .Setup(x => x.GetEnumerator()) .Returns(((IEnumerable <PatchEntryChanges>) new List <PatchEntryChanges> { patchEntryChangesMock.Object }).GetEnumerator()); repositoryMock .Setup(x => x.Diff.Compare <Patch>(It.IsAny <Tree>(), DiffTargets.WorkingDirectory)) .Returns(patchMock.Object); repositoryMock .Setup(x => x.Lookup(It.IsAny <ObjectId>())).Returns(commitMock.Object); gitInfoMock.Setup(x => x.DetermineCommit()).Returns(commitMock.Object); gitInfoMock.SetupGet(x => x.Repository).Returns(repositoryMock.Object); gitInfoMock.SetupGet(x => x.RepositoryPath).Returns("/c/Path/To/Repo"); var target = new GitDiffProvider(options, null, gitInfoMock.Object); // Act var res = target.ScanDiff(); // Assert res.ChangedSourceFiles.Count().ShouldBe(0); }