Exemplo n.º 1
0
        public void WhenGettingCommitIdentifierShouldReturnChangesetNumber()
        {
            var changeset = new PerforceChangeset();

            changeset.ChangesetNumber = 10;
            Assert.Equal(10, changeset.ChangesetIdentifier);
        }
Exemplo n.º 2
0
        public void WhenProcessingShouldLogProgressEvery60Seconds()
        {
            var changesLines   = new List <string>();
            var describeLines1 = new List <string>();
            var describeLines2 = new List <string>();

            var changeset1 = new PerforceChangeset();
            var changeset2 = new PerforceChangeset();

            this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2));
            this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>()
            {
                1, 2
            });
            this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1);
            this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2);

            this.stopWatchMock.SetupSequence(m => m.TotalSecondsElapsed()).Returns(10).Returns(70);

            this.processor.Extract();

            this.loggerMock.Verify(m => m.LogToConsole("Processed 1/2 changesets"), Times.Once());
        }
Exemplo n.º 3
0
        public void WhenProcessingWithMultipleFilesShouldProcessOutputForMultipleFiles()
        {
            commandLineArgs.OutputType = OutputType.MultipleFile;
            this.processor             = new PerforceCodeChurnProcessor(processWrapperMock.Object, changesParserMock.Object, describeParserMock.Object, commandLineParserMock.Object, bugDatabseMock.Object, loggerMock.Object, stopWatchMock.Object, outputProcessorMock.Object, commandLineArgs);

            var changesLines   = new List <string>();
            var describeLines1 = new List <string>();
            var describeLines2 = new List <string>();

            var changeset1 = new PerforceChangeset();
            var changeset2 = new PerforceChangeset();

            this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2));
            this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>()
            {
                1, 2
            });
            this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1);
            this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2);

            this.processor.Extract();

            this.outputProcessorMock.Verify(m => m.ProcessOutput(OutputType.MultipleFile, It.IsAny <string>(), It.IsAny <Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > >()), Times.Once());
        }
Exemplo n.º 4
0
        public void WhenProcessingShouldParseDescribes()
        {
            var changesLines   = new List <string>();
            var describeLines1 = new List <string>()
            {
                "describe 1"
            };
            var describeLines2 = new List <string>()
            {
                "describe 2"
            };

            var changeset1 = new PerforceChangeset();
            var changeset2 = new PerforceChangeset();

            this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2));
            this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>()
            {
                1, 2
            });
            this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1);
            this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2);

            this.processor.Extract();

            this.describeParserMock.Verify(m => m.Parse(describeLines1), Times.Once());
            this.describeParserMock.Verify(m => m.Parse(describeLines2), Times.Once());
        }
        public void WhenProcessingShouldWriteObject()
        {
            var changeset = new PerforceChangeset();

            mockDescribeParser.Setup(m => m.Parse(invokeLines)).Returns(changeset);

            cmdLet.Changeset = 42;
            cmdLet.DoProcessRecord();
            mockCmdLet.Verify(m => m.WriteObject(changeset), Times.Once());
        }
Exemplo n.º 6
0
        public void WhenProcessingShouldSaveOutputWithExpectedResults()
        {
            var changesLines   = new List <string>();
            var describeLines1 = new List <string>()
            {
                "describe 1"
            };
            var describeLines2 = new List <string>()
            {
                "describe 2"
            };
            var describeLines3 = new List <string>()
            {
                "describe 3"
            };

            var changeset1 = new PerforceChangeset()
            {
                AuthorName           = "author1",
                ChangesetTimestamp   = new DateTime(2018, 07, 05),
                ChangesetFileChanges = new List <FileChanges>()
                {
                    new FileChanges()
                    {
                        FileName      = "File1.cs",
                        Added         = 1,
                        Deleted       = 2,
                        ChangedBefore = 10,
                        ChangedAfter  = 5
                    },
                    new FileChanges()
                    {
                        FileName      = "File2.cs",
                        Added         = 1,
                        Deleted       = 2,
                        ChangedBefore = 10,
                        ChangedAfter  = 5
                    }
                }
            };

            var changeset2 = new PerforceChangeset()
            {
                AuthorName           = "author1",
                ChangesetTimestamp   = new DateTime(2018, 07, 05, 10, 0, 0),
                ChangesetFileChanges = new List <FileChanges>()
                {
                    new FileChanges()
                    {
                        FileName      = "File1.cs",
                        Added         = 1,
                        Deleted       = 2,
                        ChangedBefore = 10,
                        ChangedAfter  = 5
                    }
                }
            };

            var changeset3 = new PerforceChangeset()
            {
                AuthorName           = "author1",
                ChangesetTimestamp   = new DateTime(2018, 07, 06, 10, 0, 0),
                ChangesetFileChanges = new List <FileChanges>()
                {
                    new FileChanges()
                    {
                        FileName      = "File1.cs",
                        Added         = 1,
                        Deleted       = 2,
                        ChangedBefore = 10,
                        ChangedAfter  = 5
                    }
                }
            };

            this.processWrapperMock.Setup(m => m.Invoke("changes", "commandline")).Returns(new Tuple <int, List <string> >(0, changesLines));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "1")).Returns(new Tuple <int, List <string> >(0, describeLines1));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "2")).Returns(new Tuple <int, List <string> >(0, describeLines2));
            this.processWrapperMock.Setup(m => m.Invoke("describe", "3")).Returns(new Tuple <int, List <string> >(0, describeLines3));
            this.changesParserMock.Setup(m => m.Parse(changesLines)).Returns(new List <int>()
            {
                1, 2, 3
            });
            this.describeParserMock.Setup(m => m.Parse(describeLines1)).Returns(changeset1);
            this.describeParserMock.Setup(m => m.Parse(describeLines2)).Returns(changeset2);
            this.describeParserMock.Setup(m => m.Parse(describeLines3)).Returns(changeset3);

            this.processor.Extract();
            var result = this.output;

            Assert.Equal(2, result.Count);
            Assert.Equal(2, result[new DateTime(2018, 07, 05)].Count);
            Assert.Single(result[new DateTime(2018, 07, 06)]);

            var dailyCodeChurn = result[new DateTime(2018, 07, 05)]["File1.cs"];

            Assert.Equal("2018/07/05 00:00:00", dailyCodeChurn.Timestamp);
            Assert.Equal("File1.cs", dailyCodeChurn.FileName);
            Assert.Equal(2, dailyCodeChurn.Added);
            Assert.Equal(4, dailyCodeChurn.Deleted);
            Assert.Equal(20, dailyCodeChurn.ChangesBefore);
            Assert.Equal(10, dailyCodeChurn.ChangesAfter);
            Assert.Equal(2, dailyCodeChurn.NumberOfChanges);

            dailyCodeChurn = result[new DateTime(2018, 07, 05)]["File2.cs"];
            Assert.Equal("2018/07/05 00:00:00", dailyCodeChurn.Timestamp);
            Assert.Equal("File2.cs", dailyCodeChurn.FileName);
            Assert.Equal(1, dailyCodeChurn.Added);
            Assert.Equal(2, dailyCodeChurn.Deleted);
            Assert.Equal(10, dailyCodeChurn.ChangesBefore);
            Assert.Equal(5, dailyCodeChurn.ChangesAfter);
            Assert.Equal(1, dailyCodeChurn.NumberOfChanges);

            dailyCodeChurn = result[new DateTime(2018, 07, 06)]["File1.cs"];
            Assert.Equal("2018/07/06 00:00:00", dailyCodeChurn.Timestamp);
            Assert.Equal("File1.cs", dailyCodeChurn.FileName);
            Assert.Equal(1, dailyCodeChurn.Added);
            Assert.Equal(2, dailyCodeChurn.Deleted);
            Assert.Equal(10, dailyCodeChurn.ChangesBefore);
            Assert.Equal(5, dailyCodeChurn.ChangesAfter);
            Assert.Equal(1, dailyCodeChurn.NumberOfChanges);
        }