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"); }
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(); }
private ReportAssetsLogMessages GetExecutedTask(LockFile lockFile, MockLog logger) { var task = new ReportAssetsLogMessages(lockFile, logger) { ProjectAssetsFile = lockFile.Path, }; task.Execute().Should().BeTrue(); return(task); }
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); }
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); }
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"); }
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"); }
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)); }
private ReportAssetsLogMessages GetExecutedTaskFromContents(string lockFileContents, MockLog logger) { var lockFile = TestLockFiles.CreateLockFile(lockFileContents); return(GetExecutedTask(lockFile, logger)); }