Ejemplo n.º 1
0
        public void GetOrderOfCurrentHeadRelativeToFirstCommitOfBranchTest()
        {
            var       output       = Helpers.LoadResource(Paths.GitSingleCommitOutput, typeof(GitCommandsTest).Assembly);
            var       executorMock = new Mock <ICommandLineExecutor>();
            var       gitCommands  = new GitCommands(executorMock.Object);
            const int nthCommit    = 1;
            const int allCommits   = 123;

            executorMock.Setup(mock => mock.Execute("git", "rev-list --count HEAD", "dir"))
            .Returns(new[] { "123" });
            var nthCommitHashCommand = $"log -1 HEAD~{allCommits - nthCommit + 1}";

            executorMock.Setup(mock => mock.Execute("git", nthCommitHashCommand, "dir"))
            .Returns(output.Split('\n'));
            executorMock.Setup(mock => mock.Execute("git",
                                                    "rev-list abb3cc3d7e405c39eae91b22c41d1281b9075cd4..HEAD --count",
                                                    "dir"))
            .Returns(new[] { "42" });

            var result = gitCommands.GetOrderOfCurrentHeadRelativeToFirstCommitOfBranch("dir");

            executorMock.Verify(mock => mock.Execute("git", "rev-list --count HEAD", "dir"), Times.Once);
            executorMock.Verify(mock => mock.Execute("git", nthCommitHashCommand, "dir"), Times.Once);
            executorMock.Verify(mock => mock.Execute("git",
                                                     "rev-list abb3cc3d7e405c39eae91b22c41d1281b9075cd4..HEAD --count",
                                                     "dir"),
                                Times.Once);
            result.Should()
            .Be(42);
        }