Exemple #1
0
        public async Task Submit100To150BuildDetails()
        {
            var cloneRoot   = @"c:" + Faker.System.DirectoryPath().Replace("/", @"\");
            var projectPath = Path.Combine(cloneRoot, Faker.Lorem.Word());
            var projectFile = Path.Combine(projectPath, Faker.System.FileName("csproj"));

            var projectDetails = new ProjectDetails(cloneRoot, projectFile);

            var solutionDetails = new SolutionDetails(cloneRoot)
            {
                projectDetails
            };
            var buildDetails = new BuildDetails(solutionDetails);

            var projectCodeFiles = GenerateFileNames().Distinct().Take(Faker.Random.Int(200, 300)).ToArray();

            projectDetails.AddItems(projectCodeFiles);

            foreach (var projectCodeFile in Faker.PickRandom(projectCodeFiles, Faker.Random.Int(101, 150)))
            {
                buildDetails.AddMessage(new BuildMessage(BuildMessageLevel.Warning, projectFile, projectCodeFile,
                                                         Faker.Random.Int(2), Faker.Random.Int(2), Faker.Lorem.Sentence(), Faker.Lorem.Word()));
            }

            buildDetails.BuildMessages.Count.Should().BeGreaterThan(100);
            buildDetails.BuildMessages.Count.Should().BeLessOrEqualTo(150);

            _logger.LogInformation("Build Message Count: {0}", buildDetails.BuildMessages.Count);

            var owner      = Faker.Lorem.Word();
            var repository = Faker.Lorem.Word();
            var sha        = Faker.Random.String();

            var gitHubAppModelService = await SubmitBuild(buildDetails, owner, repository, sha);

            Received.InOrder(async() =>
            {
                await gitHubAppModelService.Received(1).GetLogAnalyzerConfigurationAsync(Arg.Is(owner),
                                                                                         Arg.Is(repository),
                                                                                         Arg.Is(sha));

                await gitHubAppModelService.Received(1).CreateCheckRunAsync(
                    Arg.Is(owner),
                    Arg.Is(repository),
                    Arg.Is(sha),
                    Arg.Is("MSBuildLog Analyzer"),
                    Arg.Is("MSBuildLog Analysis"),
                    Arg.Is(""),
                    Arg.Is(true),
                    Arg.Is <Annotation[]>(annotations => annotations.Length == 50),
                    Arg.Any <DateTimeOffset>(),
                    Arg.Any <DateTimeOffset>());

                await gitHubAppModelService.Received(1)
                .UpdateCheckRunAsync(
                    Arg.Any <long>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Is <Annotation[]>(annotations => annotations.Length == 50),
                    Arg.Any <DateTimeOffset?>(),
                    Arg.Any <DateTimeOffset?>());

                await gitHubAppModelService.Received(1)
                .UpdateCheckRunAsync(
                    Arg.Any <long>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Any <string>(),
                    Arg.Is <Annotation[]>(annotations => annotations.Length == buildDetails.BuildMessages.Count - 100),
                    Arg.Any <DateTimeOffset?>(),
                    Arg.Any <DateTimeOffset?>());
            });
        }
Exemple #2
0
        public async Task SubmitBuildDetailsWithError()
        {
            var cloneRoot   = @"c:" + Faker.System.DirectoryPath().Replace("/", @"\");
            var projectPath = Path.Combine(cloneRoot, Faker.Lorem.Word());
            var projectFile = Path.Combine(projectPath, Faker.System.FileName("csproj"));

            var projectDetails  = new ProjectDetails(cloneRoot, projectFile);
            var projectCodeFile = Path.Combine(Faker.Lorem.Word(), Faker.System.FileName("cs"));

            projectDetails.AddItems(projectCodeFile);

            var solutionDetails = new SolutionDetails(cloneRoot)
            {
                projectDetails
            };

            var buildDetails  = new BuildDetails(solutionDetails);
            var lineNumber    = Faker.Random.Int(2);
            var endLineNumber = lineNumber + 1;
            var message       = Faker.Lorem.Sentence();
            var messageCode   = Faker.Lorem.Word();

            buildDetails.AddMessage(new BuildMessage(BuildMessageLevel.Error, projectFile, projectCodeFile,
                                                     lineNumber, endLineNumber, message, messageCode));

            var filename   = Path.Combine(projectPath, projectCodeFile).Substring(cloneRoot.Length).Replace(@"\", "/").TrimStart('/');
            var owner      = Faker.Lorem.Word();
            var repository = Faker.Lorem.Word();
            var sha        = Faker.Random.String();

            var gitHubAppModelService = await SubmitBuild(buildDetails, owner, repository, sha);

            Received.InOrder(async() =>
            {
                await gitHubAppModelService.Received(1).GetLogAnalyzerConfigurationAsync(Arg.Is(owner),
                                                                                         Arg.Is(repository),
                                                                                         Arg.Is(sha));

                await gitHubAppModelService.Received(1).CreateCheckRunAsync(
                    Arg.Is(owner),
                    Arg.Is(repository),
                    Arg.Is(sha),
                    Arg.Is("MSBuildLog Analyzer"),
                    Arg.Is("MSBuildLog Analysis"),
                    Arg.Is(""),
                    Arg.Is(false),
                    Arg.Any <Annotation[]>(),
                    Arg.Any <DateTimeOffset>(),
                    Arg.Any <DateTimeOffset>());
            });

            var arguments   = gitHubAppModelService.ReceivedCalls().Skip(1).First().GetArguments().ToArray();
            var annotations = (Annotation[])arguments[7];

            annotations.Should().BeEquivalentTo(new Annotation(
                                                    filename,
                                                    CheckWarningLevel.Failure,
                                                    messageCode,
                                                    messageCode + ": " + message,
                                                    lineNumber,
                                                    endLineNumber));
        }