public void Execute_ExistingButEmptyReport_ShouldLogErrorOnLoad_DefaultBuildServerIsLocal() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", MockFileData.NullObject } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var buildServerCommand = new BuildServerCommand(logger, fileSystem, buildServers, localBuildServer, Enumerable.Empty <IReportParser>()); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(2, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("\t- Local console", logs); Assert.Contains("An exception happened when loading the report 'System.Xml.XmlException: Root element is missing.", logs); }
public void Execute_IncludeSource_BuildServerShouldIncludeSource() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", new MockFileData("<root></root>") } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(true); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var parsers = new List <IReportParser> { GetMockReportParser(true, false) }; var buildServerCommand = new BuildServerCommand(logger, fileSystem, buildServers, localBuildServer, parsers); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml", "--includesource" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(0, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("Message1 - Source1", logs); Assert.Contains("Message2 - Source2", logs); Assert.Contains("Message3 - Source3", logs); }
public void Execute_MultipleReports_ShouldWriteMessageFromIssues() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", new MockFileData("<root></root>") }, { "report2.xml", new MockFileData("<root></root>") } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(true); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var parsers = new List <IReportParser> { GetMockReportParser(true, true, true) }; var buildServerCommand = new BuildServerCommand(logger, fileSystem, buildServers, localBuildServer, parsers); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml", "report2.xml", "--debug" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(4, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("3 issues was found", logs); Assert.Contains("Message1", logs); Assert.Contains("Message2", logs); Assert.Contains("Message3", logs); Assert.Contains("Message4", logs); Assert.Contains("Message5", logs); Assert.Contains("Message6", logs); }
public void Execute_ExistingButEmptyReport_ShouldLogErrorOnLoad_DefaultBuildServerIsLocal() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", MockFileData.NullObject } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var buildServerCommand = new ParseReportCommand(logger, fileSystem, buildServers, localBuildServer, Enumerable.Empty <IReportParser>()); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(4, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("\t- \"Local console\"", logs); Assert.Contains("The adequate parser for this report was not found. You are welcome to address us an issue.", logs); }
public void Execute_ParserCantParse_ShouldLogError() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", new MockFileData("<root></root>") } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(true); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var parsers = new List <IReportParser> { GetMockReportParser() }; var buildServerCommand = new BuildServerCommand(logger, fileSystem, buildServers, localBuildServer, parsers); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(3, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("The adequate parser for this report was not found. You are welcome to address us an issue.", logs); }
public void Execute_TreatWarningsAsErrors_ShouldExitWithCode5() { // arrange var logger = GetLogger(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", new MockFileData("<root></root>") } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(true); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var parsers = new List <IReportParser> { GetMockReportParser(true, false) }; var buildServerCommand = new ParseReportCommand(logger, fileSystem, buildServers, localBuildServer, parsers); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml", "--treatwarningsaserrors" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(5, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("[Suggestion] Message1", logs); Assert.Contains("[Error] Message2", logs); Assert.Contains("[Error] Message3", logs); Assert.Contains("[Fatal] Issues with severity error was found: the build will fail", logs); }
public void Execute_ParserCanParse_WithDebug_ShouldWriteMessageFromIssuesAndWriteIssuesCount() { // arrange var logger = GetLogger(Serilog.Events.LogEventLevel.Debug); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { "report.xml", new MockFileData("<root></root>") } }); var localBuildServer = new LocalBuildServer(logger); var mockBuildServer = GetMockBuildServer(true); var buildServers = new List <IBuildServer> { localBuildServer, mockBuildServer }; var parsers = new List <IReportParser> { GetMockReportParser(true) }; var buildServerCommand = new ParseReportCommand(logger, fileSystem, buildServers, localBuildServer, parsers); var remainingArgs = buildServerCommand.GetActualOptions().Parse(new[] { "report.xml" }); // act var exitCode = buildServerCommand.Run(remainingArgs.ToArray()); // assert Assert.Equal(5, exitCode); var logs = _loggerOutput.ToString(); Assert.Contains("Report path is \"report.xml\"", logs); Assert.Contains("3 issues was found", logs); Assert.Contains("Message1", logs); Assert.Contains("Message2", logs); Assert.Contains("Message3", logs); }
public void CanApplyToCurrentContext() { // arrange var buildServer = new LocalBuildServer(GetEnvironment()); // act var canApply = buildServer.CanApplyToCurrentContext(); // assert Assert.True(canApply); }
public void CanApplyToCurrentContext() { // act var buildServer = new LocalBuildServer(GetLogger()); // arrange var result = buildServer.CanApplyToCurrentContext(); // assert Assert.False(result); }
public void Name() { // act var buildServer = new LocalBuildServer(GetLogger()); // arrange var name = buildServer.Name; // assert Assert.Equal("Local console", name); }
public void SetEnvironmentVariable() { // arrange var logs = new StringBuilder(); Logger.SetLogAction((message, logLevel) => logs.AppendLine(message)); var buildServer = new LocalBuildServer(GetEnvironment()); // act buildServer.SetEnvironmentVariable("name", "value"); // assert Assert.Equal("value", _environmentVariables["name"]); Assert.Equal("Adding local environment variable: name.", logs.ToString().Trim()); }
internal ParseReportCommand(ILogger logger, IFileSystem fileSystem, [ImportMany] IEnumerable <IBuildServer> buildServers, LocalBuildServer localBuildServer, [ImportMany] IEnumerable <IReportParser> parsers) { _logger = logger; _fileSystem = fileSystem; _buildServers = buildServers; _localBuildServer = localBuildServer; _parsers = parsers; IsCommand("parsereport", "Parse the report and show warnings in console or inject them to the build server"); HasOption("includesource", "Include the source in messages", s => _includeSourceInMessage = true); HasOption("treatwarningsaserrors", "Treat all warnings as errors", s => _treatWarningsAsErrors = true); AllowsAnyAdditionalArguments("Reports to analyze"); }
public ParseReportCommand(Logger logger, IFileSystem fileSystem, [ImportMany] IEnumerable <IBuildServer> buildServers, LocalBuildServer localBuildServer, [ImportMany] IEnumerable <IReportParser> parsers) : base(logger) { _fileSystem = fileSystem; _buildServers = buildServers; _localBuildServer = localBuildServer; _parsers = parsers; IsCommand("parsereport", "Parse the report and show warnings in console or inject them to the build server"); HasOption("includesource", "Include the source in messages", s => _includeSourceInMessage = true); // TODO // force display warnings to console additionally to the build server // warning as error }
public void WriteIntegration_IssueWithoutFilePath() { // act var buildServer = new LocalBuildServer(GetLogger()); var issues = GetIssuesWithoutFileInfos(); // arrange foreach (var issue in issues) { buildServer.WriteMessage(issue); } // assert var outputLines = _loggerOutput.ToString(); Assert.Contains("Suggestion \"Name1\": \"Message1\"", outputLines); Assert.Contains("Warning \"Name2\": \"Message2\"", outputLines); Assert.Contains("Error \"Name3\": \"Message3\"", outputLines); }
public void WriteIntegration() { // act var buildServer = new LocalBuildServer(GetLogger()); var issues = GetIssues(); // arrange foreach (var issue in issues) { buildServer.WriteMessage(issue); } // assert var outputLines = _loggerOutput.ToString(); Assert.Contains("Suggestion Name1 'FilePath1' - Line 42: Message1", outputLines); Assert.Contains("Warning Name2 'FilePath2' - Line 465: Message2", outputLines); Assert.Contains("Error Name3 'FilePath3' - Line 82: Message3", outputLines); }
public void WriteIntegration_IncludeSourceInMessage() { // act var buildServer = new LocalBuildServer(GetLogger()); buildServer.ApplyParameters(true); var issues = GetIssues(); // arrange foreach (var issue in issues) { buildServer.WriteMessage(issue); } // assert var outputLines = _loggerOutput.ToString(); Assert.Contains("[\"Source1\"] Suggestion \"Name1\" \"FilePath1\" - Line 42: \"Message1\"", outputLines); Assert.Contains("[\"Source2\"] Warning \"Name2\" \"FilePath2\" - Line 465: \"Message2\"", outputLines); Assert.Contains("[\"Source3\"] Error \"Name3\" \"FilePath3\" - Line 82: \"Message3\"", outputLines); }