Пример #1
0
        public void Should_Create_CheckRun_TestConsoleApp1_CodeAnalysis()
        {
            var annotations = new[]
            {
                new Annotation(
                    "TestConsoleApp1/Program.cs",
                    20,
                    20,
                    AnnotationLevel.Warning,
                    "Microsoft.Usage : 'Program.MyClass' contains field 'Program.MyClass._inner' that is of IDisposable type: 'Program.MyOTherClass'. Change the Dispose method on 'Program.MyClass' to call Dispose or Close on this field.")
                {
                    Title = "CA2213: TestConsoleApp1/Program.cs(20)"
                }
            };

            var cloneRoot    = @"C:\projects\testconsoleapp1\";
            var resourcePath = TestUtils.GetResourcePath("testconsoleapp1-codeanalysis.binlog");

            var binaryLogProcessor = new BinaryLogProcessor(new BinaryLogReader(), TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));
            var checkRun           = GetCheckRun(binaryLogProcessor, inputFile: resourcePath, cloneRoot: cloneRoot, owner: Faker.Internet.UserName(), repo: Faker.Random.Word(), hash: Faker.Random.Guid().ToString());

            checkRun.Conclusion.Should().Be(CheckConclusion.Success);
            checkRun.Name.Should().Be("MSBuild Log");
            checkRun.Title.Should().Be("0 errors - 1 warning");
            checkRun.Summary.Should().NotBeNullOrWhiteSpace();
            checkRun.Annotations.Should().BeEquivalentTo <Annotation>(annotations);
        }
        public void ShouldParseDBATools()
        {
            var cloneRoot = @"c:\github\dbatools\bin\projects\dbatools\";

            var resourcePath = TestUtils.GetResourcePath("dbatools.binlog");

            File.Exists(resourcePath).Should().BeTrue();

            var parser          = new BinaryLogProcessor(TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));
            var parsedBinaryLog = parser.ProcessLog(resourcePath, cloneRoot);

            parsedBinaryLog.SolutionDetails.CloneRoot.Should().Be(cloneRoot);

            var dbaToolsProject     = @"c:\github\dbatools\bin\projects\dbatools\dbatools\dbatools.csproj";
            var dbaToolsProjectPath = @"c:\github\dbatools\bin\projects\dbatools\dbatools";

            var dbaToolsTestProject     = @"c:\github\dbatools\bin\projects\dbatools\dbatools.Tests\dbatools.Tests.csproj";
            var dbaToolsTestProjectPath = @"c:\github\dbatools\bin\projects\dbatools\dbatools.Tests";

            var dbaToolsProjectDetails = parsedBinaryLog.SolutionDetails[dbaToolsProject];

            dbaToolsProjectDetails.ProjectFile.Should().Be(dbaToolsProject);
            dbaToolsProjectDetails.ProjectDirectory.Should().Be(dbaToolsProjectPath);

            var dbaToolsTestProjectDetails = parsedBinaryLog.SolutionDetails[dbaToolsTestProject];

            dbaToolsTestProjectDetails.ProjectFile.Should().Be(dbaToolsTestProject);
            dbaToolsTestProjectDetails.ProjectDirectory.Should().Be(dbaToolsTestProjectPath);

            parsedBinaryLog.SolutionDetails.Count(project => project.Value.ProjectFile.EndsWith(".csproj")).Should().Be(2);
            parsedBinaryLog.BuildMessages.Should().BeEmpty();
        }
Пример #3
0
        public void Should_Create_CheckRun_TestConsoleApp1_Error()
        {
            var annotations = new[]
            {
                new Annotation(
                    "TestConsoleApp1/Program.cs",
                    13,
                    13,
                    AnnotationLevel.Failure,
                    "; expected")
                {
                    Title = "CS1002: TestConsoleApp1/Program.cs(13)"
                }
            };

            var cloneRoot    = @"C:\projects\testconsoleapp1\";
            var resourcePath = TestUtils.GetResourcePath("testconsoleapp1-1error.binlog");

            var binaryLogProcessor = new BinaryLogProcessor(new BinaryLogReader(), TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));
            var checkRun           = GetCheckRun(binaryLogProcessor, inputFile: resourcePath, cloneRoot: cloneRoot, owner: Faker.Internet.UserName(), repo: Faker.Random.Word(), hash: Faker.Random.Guid().ToString());

            checkRun.Conclusion.Should().Be(CheckConclusion.Failure);
            checkRun.Name.Should().Be("MSBuild Log");
            checkRun.Title.Should().Be("1 error - 0 warnings");
            checkRun.Summary.Should().NotBeNullOrWhiteSpace();
            checkRun.Annotations.Should().BeEquivalentTo <Annotation>(annotations);
        }
Пример #4
0
        static int Main(string[] args)
        {
            var fileSystem         = new FileSystem();
            var binaryLogProcessor = new BinaryLogProcessor(new BinaryLogReader());
            var buildLogProcessor  = new BuildLogProcessor(fileSystem, binaryLogProcessor);
            var commandLineParser  = new CommandLineParser(System.Console.WriteLine);
            var program            = new Program(commandLineParser, buildLogProcessor);

            return(program.Run(args) ? 0 : 1);
        }
        private BuildDetails ParseLogs(string resourceName, string cloneRoot)
        {
            var resourcePath = TestUtils.GetResourcePath(resourceName);

            File.Exists(resourcePath).Should().BeTrue();

            var parser = new BinaryLogProcessor(TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));

            return(parser.ProcessLog(resourcePath, cloneRoot));
        }
        public void ShouldParseOctokitGraphQL()
        {
            var cloneRoot = @"C:\projects\octokit-graphql\";

            var resourcePath = TestUtils.GetResourcePath("octokit.graphql.binlog");

            File.Exists(resourcePath).Should().BeTrue();

            var parser          = new BinaryLogProcessor(TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));
            var parsedBinaryLog = parser.ProcessLog(resourcePath, cloneRoot);
        }
        private LogData ProcessLog(string resourceName, string cloneRoot, string userName, string repo, string hash, CheckRunConfiguration checkRunConfiguration = null)
        {
            var resourcePath = TestUtils.GetResourcePath(resourceName);

            File.Exists(resourcePath).Should().BeTrue();

            var binaryLogReader = new BinaryLogReader();
            var logProcessor    = new BinaryLogProcessor(binaryLogReader, TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));

            return(logProcessor.ProcessLog(resourcePath, cloneRoot, userName, repo, hash, checkRunConfiguration));
        }
        private async Task AssertSubmit(string file, string sha)
        {
            var resourcePath = TestUtils.GetResourcePath(file);
            var cloneRoot    = @"C:\projects\testconsoleapp1\";

            var startedAt    = DateTimeOffset.Now;
            var parser       = new BinaryLogProcessor(TestLogger.Create <BinaryLogProcessor>(_testOutputHelper));
            var buildDetails = parser.ProcessLog(resourcePath, cloneRoot);

            var gitHubAppClientFactory = CreateGitHubAppClientFactory();
            var gitHubAppModelService  = new GitHubAppModelService(gitHubAppClientFactory, CreateTokenGenerator());

            var msblocService = new LogAnalyzerService(parser, gitHubAppModelService, TestLogger.Create <LogAnalyzerService>(_testOutputHelper));
            var checkRun      = await msblocService.SubmitAsync(TestAppOwner, TestAppRepo, sha, cloneRoot, resourcePath);

            checkRun.Should().NotBeNull();
        }