Example #1
0
        public void ItReportsDiagnosticsMetadataWithLogs()
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Error, "Sample error",
                          filePath: "path/to/project.csproj",
                          libraryId: "LibA",
                          targetGraphs: new string[] { ".NETCoreApp,Version=v1.0" }),
                CreateLog(NuGetLogCode.NU1001, LogLevel.Warning, "Sample warning",
                          libraryId: "LibB",
                          targetGraphs: new string[] { ".NETCoreApp,Version=v1.0" })
            }
                );

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            log.Messages.Should().HaveCount(2);
            task.DiagnosticMessages.Should().HaveCount(2);

            Action <string, string, string> checkMetadata = (key, val1, val2) => {
                task.DiagnosticMessages
                .Select(item => item.GetMetadata(key))
                .Should().Contain(new string[] { val1, val2 });
            };

            checkMetadata(MetadataKeys.DiagnosticCode, "NU1000", "NU1001");
            checkMetadata(MetadataKeys.Severity, "Error", "Warning");
            checkMetadata(MetadataKeys.Message, "Sample error", "Sample warning");
            checkMetadata(MetadataKeys.FilePath, "", "path/to/project.csproj");
            checkMetadata(MetadataKeys.ParentTarget, ".NETCoreApp,Version=v1.0", ".NETCoreApp,Version=v1.0");
            checkMetadata(MetadataKeys.ParentPackage, "LibA/1.2.3", "LibB/1.2.3");
        }
Example #2
0
        public void ItReportsZeroDiagnosticsWithNoLogs(string [] logsJson)
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(logsJson);

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            task.DiagnosticMessages.Should().BeEmpty();
            log.Messages.Should().BeEmpty();
        }
Example #3
0
        private ReportAssetsLogMessages GetExecutedTask(LockFile lockFile, MockLog logger)
        {
            var task = new ReportAssetsLogMessages(lockFile, logger)
            {
                ProjectAssetsFile = lockFile.Path,
            };

            task.Execute().Should().BeTrue();

            return(task);
        }
Example #4
0
        public void ItReportsDiagnosticsWithMinimumData()
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Warning, "Sample warning")
            }
                );

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            task.DiagnosticMessages.Should().HaveCount(1);
            log.Messages.Should().HaveCount(1);
        }
Example #5
0
        public void ItReportsDiagnosticsWithAllTargetLibraryCases(string[] targetGraphs, string libraryId, string expectedTarget, string expectedPackage)
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Warning, "Sample warning",
                          filePath: "path/to/project.csproj",
                          libraryId: libraryId,
                          targetGraphs: targetGraphs)
            }
                );

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            log.Messages.Should().HaveCount(1);
            task.DiagnosticMessages.Should().HaveCount(1);
            var item = task.DiagnosticMessages.First();

            item.GetMetadata(MetadataKeys.ParentTarget).Should().Be(expectedTarget);
            item.GetMetadata(MetadataKeys.ParentPackage).Should().Be(expectedPackage);
        }
Example #6
0
        public void ItSkipsInvalidEntries()
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Error, "Sample error that will be invalid"),
                CreateLog(NuGetLogCode.NU1001, LogLevel.Warning, "Sample warning"),
            }
                );

            lockFileContent = lockFileContent.Replace("NU1000", "CA1000");

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            log.Messages.Should().HaveCount(1);
            task.DiagnosticMessages.Should().HaveCount(1);

            task.DiagnosticMessages
            .Select(item => item.GetMetadata(MetadataKeys.DiagnosticCode))
            .Should().OnlyContain(v => v == "NU1001");
        }
Example #7
0
        public void ItHandlesInfoLogLevels()
        {
            var    log             = new MockLog();
            string lockFileContent = CreateDefaultLockFileSnippet(
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Information, "Sample message"),
                CreateLog(NuGetLogCode.NU1000, LogLevel.Minimal, "Sample message"),
                CreateLog(NuGetLogCode.NU1000, LogLevel.Verbose, "Sample message"),
                CreateLog(NuGetLogCode.NU1000, LogLevel.Debug, "Sample message"),
            }
                );

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            log.Messages.Should().HaveCount(4);
            task.DiagnosticMessages.Should().HaveCount(4);

            task.DiagnosticMessages
            .Select(item => item.GetMetadata(MetadataKeys.Severity))
            .Should().OnlyContain(s => s == "Info");
        }
Example #8
0
        public void ItHandlesMultiTFMScenarios(string[] targetGraphs, string libraryId)
        {
            var    log             = new MockLog();
            string lockFileContent = CreateLockFileSnippet(
                targets: new string[] {
                CreateTarget(".NETCoreApp,Version=v1.0", TargetLibA, TargetLibB, TargetLibC),
                CreateTarget(".NETFramework,Version=v4.6.1", TargetLibA, TargetLibB, TargetLibC),
            },
                libraries: new string[] { LibADefn, LibBDefn, LibCDefn },
                projectFileDependencyGroups: new string[] {
                ProjectGroup, NETCoreGroup, NET461Group
            },
                logs: new string[] {
                CreateLog(NuGetLogCode.NU1000, LogLevel.Warning, "Sample warning",
                          filePath: "path/to/project.csproj",
                          libraryId: libraryId,
                          targetGraphs: targetGraphs)
            }
                );

            var task = GetExecutedTaskFromContents(lockFileContent, log);

            // a diagnostic for each target graph...
            task.DiagnosticMessages.Should().HaveCount(targetGraphs.Length);

            // ...but only one is logged
            log.Messages.Should().HaveCount(1);

            task.DiagnosticMessages
            .Select(item => item.GetMetadata(MetadataKeys.ParentTarget))
            .Should().Contain(targetGraphs);

            task.DiagnosticMessages
            .Select(item => item.GetMetadata(MetadataKeys.ParentPackage))
            .Should().OnlyContain(v => v.StartsWith(libraryId));
        }
Example #9
0
        private ReportAssetsLogMessages GetExecutedTaskFromContents(string lockFileContents, MockLog logger)
        {
            var lockFile = TestLockFiles.CreateLockFile(lockFileContents);

            return(GetExecutedTask(lockFile, logger));
        }