コード例 #1
0
        public GivenAGitCodeChurnProcessor()
        {
            args = new GitExtractCommandLineArgs();
            args.GitLogCommand = "git log blah";
            args.OutputType    = OutputType.SingleFile;
            args.OutputFile    = "outputfile";

            invokeLines = new List <string>();

            gitLogParserMock = new Mock <IGitLogParser>();

            outputProcessorMock = new Mock <IOutputProcessor>();
            outputProcessorMock.Setup(m => m.ProcessOutput(args.OutputType, args.OutputFile, It.IsAny <Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > >())).Callback <OutputType, string, Dictionary <DateTime, Dictionary <string, DailyCodeChurn> > >(
                (outputType, outputFile, dict) =>
            {
                this.processedOutput = dict;
            });

            gitLogParserMock.Setup(m => m.Parse(invokeLines)).Returns(new List <GitCommit>());

            commandLineParserMock = new Mock <ICommandLineParser>();
            commandLineParserMock.Setup(m => m.ParseCommandLine("git log blah")).Returns(new Tuple <string, string>("git", "log blah"));

            processWrapperMock = new Mock <IProcessWrapper>();
            processWrapperMock.Setup(m => m.Invoke("git", "log blah")).Returns(new Tuple <int, List <string> >(0, invokeLines));

            bugDatabaseMock = new Mock <IBugDatabaseProcessor>();

            this.logger = new Mock <ILogger>();

            processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object, gitLogParserMock.Object, outputProcessorMock.Object, bugDatabaseMock.Object, logger.Object, args);
        }
コード例 #2
0
        public void WhenCollectingBugDatabaseCacheAndDllIsEmptyShouldReturn()
        {
            args = new GitExtractCommandLineArgs()
            {
                BugDatabaseDLL = string.Empty
            };

            processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object,
                                                  this.gitLogParserMock.Object, this.outputProcessorMock.Object, this.bugDatabaseMock.Object, this.logger.Object, args);

            processor.QueryBugDatabase();

            this.bugDatabaseMock.Verify(b => b.ProcessBugDatabase(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()), Times.Never);
        }
コード例 #3
0
        public void WhenCollectingBugDatabaseCacheAndbugDatabaseNotSetShouldThrow()
        {
            this.args = new GitExtractCommandLineArgs()
            {
                BugDatabaseDLL        = "some/path/to.dll",
                BugDatabaseOutputFile = "some/path/to/output/files"
            };

            this.processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object,
                                                       this.gitLogParserMock.Object, this.outputProcessorMock.Object, null, this.logger.Object, args);

            Action collect = () => processor.QueryBugDatabase();

            Assert.Throws <NullReferenceException>(collect);
        }
コード例 #4
0
        public void WhenUsingGitExtractToCosmosDbCommandLineArgsAndExtractingShouldLogChangesetsWithBugs()
        {
            var args = new GitExtractToCosmosDbCommandLineArgs()
            {
                GitLogCommand  = "git log blah",
                BugDatabaseDLL = "some/path/to.dll",
                BugRegexes     = "bug+"
            };

            processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object,
                                                  this.gitLogParserMock.Object, this.outputProcessorMock.Object, this.bugDatabaseMock.Object, this.logger.Object, args);

            processor.Extract();

            this.logger.Verify(m => m.LogToConsole("Changesets with bugs: 0/0"));
        }
コード例 #5
0
        public void WhenExtractingAndHasBugRegexesShouldLogChangesetsWithBugs()
        {
            args = new GitExtractCommandLineArgs()
            {
                BugRegexes    = "bug+",
                GitLogCommand = "git log blah",
                OutputType    = OutputType.SingleFile,
                OutputFile    = "outputfile"
            };
            processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object,
                                                  this.gitLogParserMock.Object, this.outputProcessorMock.Object, this.bugDatabaseMock.Object, this.logger.Object, args);

            processor.Extract();

            this.logger.Verify(m => m.LogToConsole("Changesets with bugs: 0/0"));
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: ericlemes/vcsparser
        private static int RunGitCodeChurnProcessor(GitExtractCommandLineArgs a)
        {
            var processWrapper       = new ProcessWrapper();
            var commandLineParser    = new CommandLineParser();
            var gitLogParser         = new GitLogParser();
            var logger               = new ConsoleLoggerWithTimestamp();
            var outputProcessor      = new JsonOutputProcessor(new DataConverter(), new FileStreamFactory(), logger);
            var bugDatabaseFactory   = new BugDatabaseFactory();
            var bugDatabaseDllLoader = new BugDatabaseDllLoader(logger, bugDatabaseFactory);
            var webRequest           = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory));
            var fileSystem           = new FileSystem();
            var jsonParser           = new JsonListParser <WorkItem>(new FileStreamFactory());
            var bugDatabaseProcessor = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, a.BugDatabaseOutputFile);
            var processor            = new GitCodeChurnProcessor(commandLineParser, processWrapper, gitLogParser, outputProcessor, bugDatabaseProcessor, logger, a);

            processor.QueryBugDatabase();
            return(processor.Extract());
        }
コード例 #7
0
        public void WhenCollectingBugDatabaseCacheShouldProcessOutput()
        {
            args = new GitExtractCommandLineArgs()
            {
                BugDatabaseDLL        = "some/path/to.dll",
                BugDatabaseOutputFile = "some/path/to/output/files"
            };

            this.bugDatabaseMock
            .Setup(b => b.ProcessBugDatabase(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()))
            .Returns(new Dictionary <DateTime, Dictionary <string, WorkItem> >());

            processor = new GitCodeChurnProcessor(this.commandLineParserMock.Object, this.processWrapperMock.Object,
                                                  this.gitLogParserMock.Object, this.outputProcessorMock.Object, this.bugDatabaseMock.Object, this.logger.Object, args);

            processor.QueryBugDatabase();

            this.outputProcessorMock
            .Verify(o => o.ProcessOutput(args.BugDatabaseOutputType, args.BugDatabaseOutputFile, It.IsAny <Dictionary <DateTime, Dictionary <string, WorkItem> > >()),
                    Times.Once);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: ericlemes/vcsparser
        private static int RunGitToCosmosDbCodeChurnProcessor(GitExtractToCosmosDbCommandLineArgs a)
        {
            var processWrapper         = new ProcessWrapper();
            var commandLineParser      = new CommandLineParser();
            var gitLogParser           = new GitLogParser();
            var logger                 = new ConsoleLoggerWithTimestamp();
            var cosmosConnection       = new CosmosConnection(new DatabaseFactory(a, JsonSerializerSettingsFactory.CreateDefaultSerializerSettingsForCosmosDB()), a.DatabaseId, Properties.Settings.Default.CosmosBulkBatchSize);
            var dataDocumentRepository = new DataDocumentRepository(cosmosConnection, a.CodeChurnCosmosContainer);
            var cosmosOutputProcessor  = new CosmosDbOutputProcessor(logger, dataDocumentRepository, new DataConverter(), a.CosmosProjectName, Properties.Settings.Default.CosmosBulkBatchSize);
            var bugDatabaseFactory     = new BugDatabaseFactory();
            var bugDatabaseDllLoader   = new BugDatabaseDllLoader(logger, bugDatabaseFactory);
            var webRequest             = new WebRequest(new HttpClientWrapperFactory(bugDatabaseFactory));
            var fileSystem             = new FileSystem();
            var jsonParser             = new JsonListParser <WorkItem>(new FileStreamFactory());
            var bugDatabaseProcessor   = new BugDatabaseProcessor(bugDatabaseDllLoader, webRequest, fileSystem, jsonParser, logger, string.Empty);
            //, a.BugDatabaseOutputFile

            var processor = new GitCodeChurnProcessor(commandLineParser, processWrapper, gitLogParser, cosmosOutputProcessor, bugDatabaseProcessor, logger, a);

            processor.QueryBugDatabase();

            return(processor.Extract());
        }