public void CustomNotDisplayedAtNormal() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); L.Initialize(es); MyCustomBuildEventArgs c = new MyCustomBuildEventArgs("msg"); es.Consume(c); Assert.AreEqual(String.Empty, sc.ToString()); }
public void WarningColorTestParallel() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Quiet, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); BuildWarningEventArgs bwea = new BuildWarningEventArgs("VBC", "31415", "file.vb", 42, 0, 0, 0, "Some long message", "help", "sender"); bwea.BuildEventContext = new BuildEventContext(1, 2, 3, 4); es.Consume(bwea); Assert.AreEqual( "<yellow>file.vb(42): VBC warning 31415: Some long message" + Environment.NewLine + "<reset color>", sc.ToString()); }
public void TestQuietWithWarning() { for (int i = 1; i <= 2; i++) { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Quiet, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, i); BuildEventContext buildEventContext = new BuildEventContext(1, 2, 3, 4); BuildStartedEventArgs bse = new BuildStartedEventArgs("bs", null); bse.BuildEventContext = buildEventContext; es.Consume(bse); ProjectStartedEventArgs pse = new ProjectStartedEventArgs(-1, "ps", null, "fname", "", null, null, new BuildEventContext(1, 2, 3, 4)); pse.BuildEventContext = buildEventContext; es.Consume(pse); TargetStartedEventArgs trse = new TargetStartedEventArgs("ts", null, "trname", "pfile", "tfile"); trse.BuildEventContext = buildEventContext; es.Consume(trse); TaskStartedEventArgs tase = new TaskStartedEventArgs("tks", null, "tname", "tfname", "tsname"); tase.BuildEventContext = buildEventContext; es.Consume(tase); BuildWarningEventArgs beea = new BuildWarningEventArgs("VBC", "31415", "file.vb", 42, 0, 0, 0, "Some long message", "help", "sender"); beea.BuildEventContext = buildEventContext; es.Consume(beea); TaskFinishedEventArgs tafea = new TaskFinishedEventArgs("tkf", null, "fname", "tsname", "tfname", true); tafea.BuildEventContext = buildEventContext; es.Consume(tafea); TargetFinishedEventArgs trfea = new TargetFinishedEventArgs("tf", null, "trname", "fname", "tfile", true); trfea.BuildEventContext = buildEventContext; es.Consume(trfea); ProjectFinishedEventArgs pfea = new ProjectFinishedEventArgs("pf", null, "fname", true); pfea.BuildEventContext = buildEventContext; es.Consume(pfea); BuildFinishedEventArgs bfea = new BuildFinishedEventArgs("bf", null, true); bfea.BuildEventContext = buildEventContext; es.Consume(bfea); Console.WriteLine("=="); Console.WriteLine(sc.ToString()); Console.WriteLine("=="); if (i == 1) { Assert.AreEqual( "<cyan>" + BaseConsoleLogger.projectSeparatorLine + Environment.NewLine + ResourceUtilities.FormatResourceString("ProjectStartedPrefixForTopLevelProjectWithDefaultTargets", "fname") + Environment.NewLine + Environment.NewLine + "<reset color><yellow>file.vb(42): VBC warning 31415: Some long message" + Environment.NewLine + "<reset color><cyan>pf" + Environment.NewLine + "<reset color>", sc.ToString()); } else { Assert.AreEqual( "<yellow>file.vb(42): VBC warning 31415: Some long message" + Environment.NewLine + "<reset color>", sc.ToString()); } } }
public void ShowCommandLineWithNormalVerbosity() { SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging;ShowCommandLine"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); string log = sc.ToString(); Assert.IsTrue(log.IndexOf("where.exe where", StringComparison.OrdinalIgnoreCase) != -1); sc = new SimulatedConsole(); logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging;ShowCommandLine=true"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); log = sc.ToString(); Assert.IsTrue(log.IndexOf("where.exe where", StringComparison.OrdinalIgnoreCase) != -1); sc = new SimulatedConsole(); logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging;ShowCommandLine=false"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); log = sc.ToString(); Assert.IsTrue(log.IndexOf("where.exe where", StringComparison.OrdinalIgnoreCase) == -1); sc = new SimulatedConsole(); logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging;ShowCommandLine=NotAbool"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); log = sc.ToString(); Assert.IsTrue(log.IndexOf("where.exe where", StringComparison.OrdinalIgnoreCase) == -1); sc = new SimulatedConsole(); logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); log = sc.ToString(); Assert.IsTrue(log.IndexOf("where.exe where", StringComparison.OrdinalIgnoreCase) != -1); }
public void NullEventFieldsParallel() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); BuildEventContext buildEventContext = new BuildEventContext(1, 2, 3, 4); BuildStartedEventArgs bse = new BuildStartedEventArgs(null, null); bse.BuildEventContext = buildEventContext; ProjectStartedEventArgs pse = new ProjectStartedEventArgs(-1, null, null, "p", null, null, null, buildEventContext); pse.BuildEventContext = buildEventContext; TargetStartedEventArgs trse = new TargetStartedEventArgs(null, null, "t", null, null); trse.BuildEventContext = buildEventContext; TaskStartedEventArgs tase = new TaskStartedEventArgs(null, null, null, null, "task"); tase.BuildEventContext = buildEventContext; BuildMessageEventArgs bmea = new BuildMessageEventArgs(null, null, null, MessageImportance.High); bmea.BuildEventContext = buildEventContext; BuildWarningEventArgs bwea = new BuildWarningEventArgs(null, null, null, 0, 0, 0, 0, null, null, null); bwea.BuildEventContext = buildEventContext; BuildErrorEventArgs beea = new BuildErrorEventArgs(null, null, null, 0, 0, 0, 0, null, null, null); beea.BuildEventContext = buildEventContext; TaskFinishedEventArgs trfea = new TaskFinishedEventArgs(null, null, null, null, "task", true); trfea.BuildEventContext = buildEventContext; TargetFinishedEventArgs tafea = new TargetFinishedEventArgs(null, null, "t", null, null, true); tafea.BuildEventContext = buildEventContext; ProjectFinishedEventArgs pfea = new ProjectFinishedEventArgs(null, null, "p", true); pfea.BuildEventContext = buildEventContext; BuildFinishedEventArgs bfea = new BuildFinishedEventArgs(null, null, true); bfea.BuildEventContext = buildEventContext; MyCustomBuildEventArgs2 mcea = new MyCustomBuildEventArgs2(); mcea.BuildEventContext = buildEventContext; // Not all parameters are null here, but that's fine, we assume the engine will never // fire a ProjectStarted without a project name, etc. es.Consume(bse); es.Consume(pse); es.Consume(trse); es.Consume(tase); es.Consume(bmea); es.Consume(bwea); es.Consume(beea); es.Consume(trfea); es.Consume(tafea); es.Consume(pfea); es.Consume(bfea); es.Consume(bfea); es.Consume(bfea); es.Consume(mcea); // No exception raised }
public void VerifyMPLoggerSwitch() { for (int i = 0; i < 2; i++) { EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); // Create a ConsoleLogger with Normal verbosity ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); //Make sure the MPLogger switch will property work on both Initialize methods L.Parameters = "EnableMPLogging"; if (i == 0) { L.Initialize(es, 1); } else { L.Initialize(es); } es.Consume(new BuildStartedEventArgs("bs", null)); BuildEventContext context = new BuildEventContext(1, 1, 1, 1); BuildEventContext context2 = new BuildEventContext(2, 2, 2, 2); ProjectStartedEventArgs project = new ProjectStartedEventArgs(1, "Hello,", "HI", "None", "Build", null, null, context); project.BuildEventContext = context; es.Consume(project); TargetStartedEventArgs targetStarted1 = new TargetStartedEventArgs(null, null, "t", null, null); targetStarted1.BuildEventContext = context; es.Consume(targetStarted1); BuildMessageEventArgs messsage1 = new BuildMessageEventArgs("Message", null, null, MessageImportance.High); messsage1.BuildEventContext = context; es.Consume(messsage1); string actualLog = sc.ToString(); string resourceString = ResourceUtilities.FormatResourceString("ProjectStartedTopLevelProjectWithTargetNames", "None", 1, "Build"); Assert.IsTrue(actualLog.Contains(resourceString)); } }
public void TestNewLineAfterProjectFinished() { bool runningWithCharDevice = IsRunningWithCharacterFileType(); for (int i = 0; i < 3; i++) { Console.Out.WriteLine("Iteration of I is {" + i + "}"); EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); if (i < 2) { // On the second pass through use the MP single proc logger if (i == 1) { L.Parameters = "EnableMPLogging"; } // Use the old single proc logger L.Initialize(es, 1); } else { // Use the parallel logger L.Initialize(es, 2); } es.Consume(new BuildStartedEventArgs("bs", null)); BuildEventContext context = new BuildEventContext(1, 1, 1, 1); ProjectStartedEventArgs project = new ProjectStartedEventArgs(1, "Hello,", "HI", "None", "Build", null, null, context); project.BuildEventContext = context; es.Consume(project); TargetStartedEventArgs targetStarted1 = new TargetStartedEventArgs(null, null, "t", null, null); targetStarted1.BuildEventContext = context; es.Consume(targetStarted1); BuildMessageEventArgs messsage1 = new BuildMessageEventArgs("Message", null, null, MessageImportance.High); messsage1.BuildEventContext = context; es.Consume(messsage1); ProjectFinishedEventArgs projectFinished = new ProjectFinishedEventArgs("Finished,", "HI", "projectFile", true); projectFinished.BuildEventContext = context; es.Consume(projectFinished); string actualLog = sc.ToString(); switch (i) { case 0: // There is no project finished event printed in normal verbosity Assert.IsFalse(actualLog.Contains(projectFinished.Message)); break; // We are in single proc but logging with multiproc logging add an extra new line to make the log more readable. case 1: Assert.IsTrue(actualLog.Contains(ResourceUtilities.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProc", "None", "Build") + Environment.NewLine)); if (runningWithCharDevice) { Assert.IsTrue(actualLog.Contains(ResourceUtilities.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProc", "None", "Build") + Environment.NewLine + Environment.NewLine)); } else { Assert.IsFalse(actualLog.Contains(ResourceUtilities.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProc", "None", "Build") + Environment.NewLine + Environment.NewLine)); } break; case 2: Assert.IsFalse(actualLog.Contains(ResourceUtilities.FormatResourceString("ProjectFinishedPrefixWithTargetNamesMultiProc", "None", "Build") + Environment.NewLine + Environment.NewLine)); break; } } }
/// <summary> /// Create some items and log them /// </summary> /// <returns></returns> private void WriteAndValidateItems(BaseConsoleLogger cl, SimulatedConsole sc, bool expectToSeeLogging) { Hashtable items = new Hashtable(); items.Add("type", (ITaskItem2)new TaskItem("spec", String.Empty)); items.Add("type2", (ITaskItem2)new TaskItem("spec2", String.Empty)); // ItemSpecs are expected to be escaped coming in ITaskItem2 taskItem3 = new TaskItem("%28spec%3b3", String.Empty); // As are metadata, when set with "SetMetadata" taskItem3.SetMetadata("f)oo", "%21%40%23"); items.Add("type(3)", taskItem3); string item1type = string.Empty; string item2type = string.Empty; string item3type = string.Empty; string item1spec = string.Empty; string item2spec = string.Empty; string item3spec = string.Empty; string item3metadatum = string.Empty; if (cl is SerialConsoleLogger) { SortedList itemList = ((SerialConsoleLogger)cl).ExtractItemList(items); ((SerialConsoleLogger)cl).WriteItems(itemList); item1spec = "spec" + Environment.NewLine; item2spec = "spec2" + Environment.NewLine; item3spec = "(spec;3" + Environment.NewLine; item3metadatum = "f)oo = !@#" + Environment.NewLine; } else { BuildEventArgs buildEvent = new BuildErrorEventArgs("", "", "", 0, 0, 0, 0, "", "", ""); buildEvent.BuildEventContext = new BuildEventContext(1, 2, 3, 4); ((ParallelConsoleLogger)cl).WriteItems(buildEvent, items); item1spec = Environment.NewLine + " spec" + Environment.NewLine; item2spec = Environment.NewLine + " spec2" + Environment.NewLine; item3spec = Environment.NewLine + " (spec;3" + Environment.NewLine; } item1type = "type" + Environment.NewLine; item2type = "type2" + Environment.NewLine; item3type = "type(3)" + Environment.NewLine; string log = sc.ToString(); Console.WriteLine("[" + log + "]"); // Being careful not to make locale assumptions here, eg about sorting if (expectToSeeLogging) { Assert.IsTrue(log.Contains(item1type)); Assert.IsTrue(log.Contains(item2type)); Assert.IsTrue(log.Contains(item3type)); Assert.IsTrue(log.Contains(item1spec)); Assert.IsTrue(log.Contains(item2spec)); Assert.IsTrue(log.Contains(item3spec)); if (!String.Equals(item3metadatum, String.Empty, StringComparison.OrdinalIgnoreCase)) { Assert.IsTrue(log.Contains(item3metadatum)); } } else { Assert.IsFalse(log.Contains(item1type)); Assert.IsFalse(log.Contains(item2type)); Assert.IsFalse(log.Contains(item3type)); Assert.IsFalse(log.Contains(item1spec)); Assert.IsFalse(log.Contains(item2spec)); Assert.IsFalse(log.Contains(item3type)); if (!String.Equals(item3metadatum, String.Empty, StringComparison.OrdinalIgnoreCase)) { Assert.IsFalse(log.Contains(item3metadatum)); } } }
public void WritePropertiesEmptyList() { Hashtable properties = new Hashtable(); for (int i = 0; i < 2; i++) { BaseConsoleLogger cl = null; SimulatedConsole sc = new SimulatedConsole(); if (i == 0) { cl = new SerialConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); } else { cl = new ParallelConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); } if (cl is SerialConsoleLogger) { ArrayList propertyList = ((SerialConsoleLogger)cl).ExtractPropertyList(properties); ((SerialConsoleLogger)cl).WriteProperties(propertyList); } else { BuildEventArgs buildEvent = new BuildErrorEventArgs("", "", "", 0, 0, 0, 0, "", "", ""); buildEvent.BuildEventContext = new BuildEventContext(1, 2, 3, 4); ((ParallelConsoleLogger)cl).WriteProperties(buildEvent, properties); } string log = sc.ToString(); // There should be nothing in the log Assert.IsTrue(log.Length == 0, "Iteration of I: " + i); Console.WriteLine("Iteration of i: " + i + "[" + log + "]"); } }
public void DisplayEnvironmentInMinimal() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Minimal, sc.Write, null, null); cl.Parameters = "ShowEnvironment"; cl.ParseParameters(); WriteEnvironment(cl, sc, true); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Minimal, sc.Write, null, null); cl2.Parameters = "ShowEnvironment"; cl2.ParseParameters(); WriteEnvironment(cl2, sc, true); }
/// <summary> /// Create some items and log them /// </summary> private void WriteEnvironment(BaseConsoleLogger cl, SimulatedConsole sc, bool expectToSeeLogging) { cl.WriteEnvironment(_environment); string log = sc.ToString(); Console.WriteLine("[" + log + "]"); // Being careful not to make locale assumptions here, eg about sorting foreach (KeyValuePair<string, string> kvp in _environment) { string message = String.Empty; if (cl is ParallelConsoleLogger) { message = String.Format(CultureInfo.CurrentCulture, "{0} = {1}", kvp.Key, kvp.Value); } else { message = String.Format(CultureInfo.CurrentCulture, "{0,-30} = {1}", kvp.Key, kvp.Value); } if (expectToSeeLogging) { Assert.IsTrue(log.Contains(message)); } else { Assert.IsFalse(log.Contains(message)); } } }
public void DoNotDisplayEnvironmentInMinimal() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Minimal, sc.Write, null, null); WriteEnvironment(cl, sc, false); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Minimal, sc.Write, null, null); WriteEnvironment(cl2, sc, false); }
public void DisplayEnvironmentInDiagnostic() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); WriteEnvironment(cl, sc, true); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); WriteEnvironment(cl2, sc, true); }
/// <summary> /// Create some properties and log them /// </summary> /// <param name="cl"></param> /// <returns></returns> private void WriteAndValidateProperties(BaseConsoleLogger cl, SimulatedConsole sc, bool expectToSeeLogging) { Hashtable properties = new Hashtable(); properties.Add("prop1", "val1"); properties.Add("prop2", "val2"); properties.Add("pro(p3)", "va%3b%253b%3bl3"); string prop1 = string.Empty; string prop2 = string.Empty; string prop3 = string.Empty; if (cl is SerialConsoleLogger) { ArrayList propertyList = ((SerialConsoleLogger)cl).ExtractPropertyList(properties); ((SerialConsoleLogger)cl).WriteProperties(propertyList); prop1 = String.Format(CultureInfo.CurrentCulture, "{0,-30} = {1}", "prop1", "val1"); prop2 = String.Format(CultureInfo.CurrentCulture, "{0,-30} = {1}", "prop2", "val2"); prop3 = String.Format(CultureInfo.CurrentCulture, "{0,-30} = {1}", "pro(p3)", "va;%3b;l3"); } else { BuildEventArgs buildEvent = new BuildErrorEventArgs("", "", "", 0, 0, 0, 0, "", "", ""); buildEvent.BuildEventContext = new BuildEventContext(1, 2, 3, 4); ((ParallelConsoleLogger)cl).WriteProperties(buildEvent, properties); prop1 = String.Format(CultureInfo.CurrentCulture, "{0} = {1}", "prop1", "val1"); prop2 = String.Format(CultureInfo.CurrentCulture, "{0} = {1}", "prop2", "val2"); prop3 = String.Format(CultureInfo.CurrentCulture, "{0} = {1}", "pro(p3)", "va;%3b;l3"); } string log = sc.ToString(); Console.WriteLine("[" + log + "]"); // Being careful not to make locale assumptions here, eg about sorting if (expectToSeeLogging) { Assert.IsTrue(log.Contains(prop1)); Assert.IsTrue(log.Contains(prop2)); Assert.IsTrue(log.Contains(prop3)); } else { Assert.IsFalse(log.Contains(prop1)); Assert.IsFalse(log.Contains(prop2)); Assert.IsFalse(log.Contains(prop3)); } }
public void TestNoTargetNameOnMinimal() { SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger logger = new ConsoleLogger(LoggerVerbosity.Minimal, sc.Write, null, null); logger.Parameters = "EnableMPLogging"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); string log = sc.ToString(); Assert.IsTrue(log.IndexOf("XXX:", StringComparison.OrdinalIgnoreCase) == -1); Assert.IsTrue(log.IndexOf("YYY:", StringComparison.OrdinalIgnoreCase) == -1); Assert.IsTrue(log.IndexOf("GGG:", StringComparison.OrdinalIgnoreCase) == -1); }
public void DisplayItemsList() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); WriteAndValidateItems(cl, sc, true); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); WriteAndValidateItems(cl2, sc, true); }
public void DeferredMessages() { EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); // Create a ConsoleLogger with Detailed verbosity ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Detailed, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); es.Consume(new BuildStartedEventArgs("bs", null)); TaskCommandLineEventArgs messsage1 = new TaskCommandLineEventArgs("Message", null, MessageImportance.High); messsage1.BuildEventContext = new BuildEventContext(1, 1, 1, 1); // Message Event es.Consume(messsage1); es.Consume(new BuildFinishedEventArgs("bf", null, true)); string actualLog = sc.ToString(); Assert.IsTrue(actualLog.Contains(ResourceUtilities.FormatResourceString("DeferredMessages"))); es = new EventSourceSink(); sc = new SimulatedConsole(); // Create a ConsoleLogger with Normal verbosity L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); es.Consume(new BuildStartedEventArgs("bs", null)); BuildMessageEventArgs messsage2 = new BuildMessageEventArgs("Message", null, null, MessageImportance.High); messsage2.BuildEventContext = new BuildEventContext(1, 1, 1, 1); // Message Event es.Consume(messsage2); es.Consume(new BuildFinishedEventArgs("bf", null, true)); actualLog = sc.ToString(); Assert.IsTrue(actualLog.Contains(ResourceUtilities.FormatResourceString("DeferredMessages"))); es = new EventSourceSink(); sc = new SimulatedConsole(); // Create a ConsoleLogger with Normal verbosity L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); es.Consume(new BuildStartedEventArgs("bs", null)); messsage2 = new BuildMessageEventArgs("Message", null, null, MessageImportance.High); messsage2.BuildEventContext = new BuildEventContext(1, 1, 1, 1); // Message Event es.Consume(messsage2); ProjectStartedEventArgs project = new ProjectStartedEventArgs(1, "Hello,", "HI", "None", "Build", null, null, messsage1.BuildEventContext); project.BuildEventContext = messsage1.BuildEventContext; es.Consume(project); es.Consume(new BuildFinishedEventArgs("bf", null, true)); actualLog = sc.ToString(); Assert.IsTrue(actualLog.Contains("Message")); }
public void DoNotDisplayItemListInDetailed() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Detailed, sc.Write, null, null); WriteAndValidateItems(cl, sc, false); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Detailed, sc.Write, null, null); WriteAndValidateItems(cl2, sc, false); }
public void TestPrintTargetNamePerMessage() { EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); // Create a ConsoleLogger with Normal verbosity ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, 2); es.Consume(new BuildStartedEventArgs("bs", null)); BuildEventContext context = new BuildEventContext(1, 1, 1, 1); BuildEventContext context2 = new BuildEventContext(2, 2, 2, 2); ProjectStartedEventArgs project = new ProjectStartedEventArgs(1, "Hello,", "HI", "None", "Build", null, null, context); project.BuildEventContext = context; es.Consume(project); ProjectStartedEventArgs project2 = new ProjectStartedEventArgs(2, "Hello,", "HI", "None", "Build", null, null, context2); project2.BuildEventContext = context2; es.Consume(project2); TargetStartedEventArgs targetStarted1 = new TargetStartedEventArgs(null, null, "t", null, null); targetStarted1.BuildEventContext = context; es.Consume(targetStarted1); TargetStartedEventArgs targetStarted2 = new TargetStartedEventArgs(null, null, "t2", null, null); targetStarted2.BuildEventContext = context2; es.Consume(targetStarted2); BuildMessageEventArgs messsage1 = new BuildMessageEventArgs("Message", null, null, MessageImportance.High); messsage1.BuildEventContext = context; BuildMessageEventArgs messsage2 = new BuildMessageEventArgs("Message2", null, null, MessageImportance.High); messsage2.BuildEventContext = context2; BuildMessageEventArgs messsage3 = new BuildMessageEventArgs("Message3", null, null, MessageImportance.High); messsage3.BuildEventContext = context; es.Consume(messsage1); es.Consume(messsage2); es.Consume(messsage3); string actualLog = sc.ToString(); Assert.IsTrue(actualLog.Contains("t:")); }
public void DoNotDisplayItemListIfDisabled() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger cl = new SerialConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); cl.Parameters = "noitemandpropertylist"; cl.ParseParameters(); WriteAndValidateItems(cl, sc, false); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); cl2.Parameters = "noitemandpropertylist"; cl2.ParseParameters(); WriteAndValidateItems(cl2, sc, false); }
public void EmptyTargetsOnDetailedButNotNotmal() { SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger logger = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); logger.Parameters = "EnableMPLogging"; ObjectModelHelpers.BuildProjectExpectSuccess(s_dummyProjectContents, logger); string log = sc.ToString(); Assert.IsTrue(log.IndexOf("YYY:", StringComparison.OrdinalIgnoreCase) == -1); sc = new SimulatedConsole(); logger = new ConsoleLogger(LoggerVerbosity.Detailed, sc.Write, null, null); logger.Parameters = "EnableMPLogging"; string tempProjectDir = Path.Combine(Path.GetTempPath(), "EmptyTargetsOnDetailedButNotNotmal"); string tempProjectPath = Path.Combine(tempProjectDir, "test.proj"); try { if (FileUtilities.DirectoryExistsNoThrow(tempProjectDir)) { FileUtilities.DeleteDirectoryNoThrow(tempProjectDir, true); } Directory.CreateDirectory(tempProjectDir); File.WriteAllText(tempProjectPath, s_dummyProjectContents); ObjectModelHelpers.BuildTempProjectFileWithTargets(tempProjectPath, null, null, logger); log = sc.ToString(); string targetStartedMessage = ResourceUtilities.FormatResourceString("TargetStartedProjectEntry", "YYY", tempProjectPath); // it's a console, so it cuts off, so only look for the existence of the first bit (which should contains the "YYY") targetStartedMessage = targetStartedMessage.Substring(0, 60); Assert.IsTrue(log.IndexOf(targetStartedMessage, StringComparison.OrdinalIgnoreCase) != -1); } finally { if (FileUtilities.DirectoryExistsNoThrow(tempProjectDir)) { FileUtilities.DeleteDirectoryNoThrow(tempProjectDir, true); } } }
public void ParametersEmptyTests() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger L = new SerialConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); L.Parameters = ""; L.ParseParameters(); Assert.IsTrue(L.ShowSummary == false); L.Parameters = null; L.ParseParameters(); Assert.IsTrue(L.ShowSummary == false); sc = new SimulatedConsole(); ParallelConsoleLogger cl2 = new ParallelConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); cl2.Parameters = "noitemandpropertylist"; cl2.ParseParameters(); WriteAndValidateItems(cl2, sc, false); }
public void NullEventFields() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es); // Not all parameters are null here, but that's fine, we assume the engine will never // fire a ProjectStarted without a project name, etc. es.Consume(new BuildStartedEventArgs(null, null)); es.Consume(new ProjectStartedEventArgs(null, null, "p", null, null, null)); es.Consume(new TargetStartedEventArgs(null, null, "t", null, null)); es.Consume(new TaskStartedEventArgs(null, null, null, null, "task")); es.Consume(new BuildMessageEventArgs(null, null, null, MessageImportance.High)); es.Consume(new BuildWarningEventArgs(null, null, null, 0, 0, 0, 0, null, null, null)); es.Consume(new BuildErrorEventArgs(null, null, null, 0, 0, 0, 0, null, null, null)); es.Consume(new TaskFinishedEventArgs(null, null, null, null, "task", true)); es.Consume(new TargetFinishedEventArgs(null, null, "t", null, null, true)); es.Consume(new ProjectFinishedEventArgs(null, null, "p", true)); es.Consume(new BuildFinishedEventArgs(null, null, true)); es.Consume(new BuildFinishedEventArgs(null, null, true)); es.Consume(new BuildFinishedEventArgs(null, null, true)); es.Consume(new MyCustomBuildEventArgs2()); // No exception raised }
public void ParametersParsingTests() { SimulatedConsole sc = new SimulatedConsole(); SerialConsoleLogger L = new SerialConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); L.Parameters = "NoSuMmaRy"; L.ParseParameters(); Assert.IsTrue(L.ShowSummary == false); L.Parameters = ";;NoSuMmaRy;"; L.ParseParameters(); Assert.IsTrue(L.ShowSummary == false); sc = new SimulatedConsole(); ParallelConsoleLogger L2 = new ParallelConsoleLogger(LoggerVerbosity.Normal, sc.Write, null, null); L2.Parameters = "NoSuMmaRy"; L2.ParseParameters(); Assert.IsTrue(L2.ShowSummary == false); L2.Parameters = ";;NoSuMmaRy;"; L2.ParseParameters(); Assert.IsTrue(L2.ShowSummary == false); }
public void ErrorColorTest() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Quiet, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es); BuildErrorEventArgs beea = new BuildErrorEventArgs("VBC", "31415", "file.vb", 42, 0, 0, 0, "Some long message", "help", "sender"); es.Consume(beea); Assert.AreEqual("<red>file.vb(42): VBC error 31415: Some long message" + Environment.NewLine + "<reset color>", sc.ToString()); }
public void ResetConsoleLoggerState_Initialize() { // Create an event source EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); // error and warning string for 1 error and 1 warning // errorString = 1 Error(s) // warningString = 1 Warning(s) string errorString = ResourceUtilities.FormatResourceString("ErrorCount", 1); string warningString = ResourceUtilities.FormatResourceString("WarningCount", 1); // Create a ConsoleLogger with Normal verbosity ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); // Initialize ConsoleLogger L.Initialize(es); // BuildStarted Event es.Consume(new BuildStartedEventArgs("bs", null)); // Introduce a warning BuildWarningEventArgs bwea = new BuildWarningEventArgs("VBC", "31415", "file.vb", 42, 0, 0, 0, "Some long message", "help", "sender"); es.Consume(bwea); // Introduce an error BuildErrorEventArgs beea = new BuildErrorEventArgs("VBC", "31415", "file.vb", 42, 0, 0, 0, "Some long message", "help", "sender"); es.Consume(beea); // NOTE: We don't call the es.RaiseBuildFinishedEvent(...) here as this // would call ResetConsoleLoggerState and we will fail to detect if Initialize() // is not calling it. // Log so far string actualLog = sc.ToString(); Console.WriteLine("=="); Console.WriteLine(sc.ToString()); Console.WriteLine("=="); // Verify that the log has correct error and warning string Assert.IsTrue(actualLog.Contains("<red>")); Assert.IsTrue(actualLog.Contains("<yellow>")); // Clear the log obtained so far sc.Clear(); //Initilialize (This should call ResetConsoleLoggerState(...)) L.Initialize(es); // BuildStarted event es.Consume(new BuildStartedEventArgs("bs", null)); // BuildFinished es.Consume(new BuildFinishedEventArgs("bf", null, true)); // Log so far actualLog = sc.ToString(); Console.WriteLine("=="); Console.WriteLine(sc.ToString()); Console.WriteLine("=="); // Verify that the error and warning from the previous build is not // reported in the subsequent build Assert.IsFalse(actualLog.Contains("<red>")); Assert.IsFalse(actualLog.Contains("<yellow>")); // errorString = 0 Error(s) errorString = ResourceUtilities.FormatResourceString("ErrorCount", 0); // warningString = 0 Warning(s) warningString = ResourceUtilities.FormatResourceString("WarningCount", 0); // Verify that the log has correct error and warning string Assert.IsTrue(actualLog.Contains(errorString)); Assert.IsTrue(actualLog.Contains(warningString)); }
public void LowMessageColorTest() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es); BuildMessageEventArgs msg = new BuildMessageEventArgs("text", "help", "sender", MessageImportance.Low); es.Consume(msg); Assert.AreEqual( "<darkgray>text" + Environment.NewLine + "<reset color>", sc.ToString()); }
public void ResetConsoleLoggerState_PerformanceCounters() { for (int i = 1; i <= 2; i++) { EventSourceSink es = new EventSourceSink(); //Create a simulated console SimulatedConsole sc = new SimulatedConsole(); // Create a ConsoleLogger with Normal verbosity ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Normal, sc.Write, sc.SetColor, sc.ResetColor); // Initialize ConsoleLogger L.Parameters = "Performancesummary"; L.Initialize(es, i); // prjPerfString = Project Performance Summary: string prjPerfString = ResourceUtilities.FormatResourceString("ProjectPerformanceSummary", null); // targetPerfString = Target Performance Summary: string targetPerfString = ResourceUtilities.FormatResourceString("TargetPerformanceSummary", null); // taskPerfString = Task Performance Summary: string taskPerfString = ResourceUtilities.FormatResourceString("TaskPerformanceSummary", null); // BuildStarted Event es.Consume(new BuildStartedEventArgs("bs", null)); //Project Started Event ProjectStartedEventArgs project1Started = new ProjectStartedEventArgs(1, null, null, "p", "t", null, null, new BuildEventContext(BuildEventContext.InvalidNodeId, BuildEventContext.InvalidTargetId, BuildEventContext.InvalidProjectContextId, BuildEventContext.InvalidTaskId)); project1Started.BuildEventContext = new BuildEventContext(1, 1, 1, 1); es.Consume(project1Started); TargetStartedEventArgs targetStarted1 = new TargetStartedEventArgs(null, null, "t", null, null); targetStarted1.BuildEventContext = project1Started.BuildEventContext; // TargetStarted Event es.Consume(targetStarted1); TaskStartedEventArgs taskStarted1 = new TaskStartedEventArgs(null, null, null, null, "task"); taskStarted1.BuildEventContext = project1Started.BuildEventContext; // TaskStarted Event es.Consume(taskStarted1); BuildMessageEventArgs messsage1 = new BuildMessageEventArgs(null, null, null, MessageImportance.High); messsage1.BuildEventContext = project1Started.BuildEventContext; // Message Event es.Consume(messsage1); TaskFinishedEventArgs taskFinished1 = new TaskFinishedEventArgs(null, null, null, null, "task", true); taskFinished1.BuildEventContext = project1Started.BuildEventContext; // TaskFinished Event es.Consume(taskFinished1); TargetFinishedEventArgs targetFinished1 = new TargetFinishedEventArgs(null, null, "t", null, null, true); targetFinished1.BuildEventContext = project1Started.BuildEventContext; // TargetFinished Event es.Consume(targetFinished1); ProjectStartedEventArgs project2Started = new ProjectStartedEventArgs(2, null, null, "p2", "t2", null, null, project1Started.BuildEventContext); //Project Started Event project2Started.BuildEventContext = new BuildEventContext(2, 2, 2, 2); es.Consume(project2Started); TargetStartedEventArgs targetStarted2 = new TargetStartedEventArgs(null, null, "t2", null, null); targetStarted2.BuildEventContext = project2Started.BuildEventContext; // TargetStarted Event es.Consume(targetStarted2); TaskStartedEventArgs taskStarted2 = new TaskStartedEventArgs(null, null, null, null, "task2"); taskStarted2.BuildEventContext = project2Started.BuildEventContext; // TaskStarted Event es.Consume(taskStarted2); BuildMessageEventArgs messsage2 = new BuildMessageEventArgs(null, null, null, MessageImportance.High); messsage2.BuildEventContext = project2Started.BuildEventContext; // Message Event es.Consume(messsage2); TaskFinishedEventArgs taskFinished2 = new TaskFinishedEventArgs(null, null, null, null, "task2", true); taskFinished2.BuildEventContext = project2Started.BuildEventContext; // TaskFinished Event es.Consume(taskFinished2); TargetFinishedEventArgs targetFinished2 = new TargetFinishedEventArgs(null, null, "t2", null, null, true); targetFinished2.BuildEventContext = project2Started.BuildEventContext; // TargetFinished Event es.Consume(targetFinished2); ProjectFinishedEventArgs finished2 = new ProjectFinishedEventArgs(null, null, "p2", true); finished2.BuildEventContext = project2Started.BuildEventContext; // ProjectFinished Event es.Consume(finished2); // BuildFinished Event ProjectFinishedEventArgs finished1 = new ProjectFinishedEventArgs(null, null, "p", true); finished1.BuildEventContext = project1Started.BuildEventContext; // ProjectFinished Event es.Consume(finished1); // BuildFinished Event es.Consume(new BuildFinishedEventArgs("bf", null, true)); // Log so far string actualLog = sc.ToString(); Console.WriteLine("=="); Console.WriteLine(sc.ToString()); Console.WriteLine("=="); // Verify that the log has perf summary // Project perf summary Assert.IsTrue(actualLog.Contains(prjPerfString)); // Target perf summary Assert.IsTrue(actualLog.Contains(targetPerfString)); // Task Perf summary Assert.IsTrue(actualLog.Contains(taskPerfString)); // Clear the log obtained so far sc.Clear(); // BuildStarted event es.Consume(new BuildStartedEventArgs("bs", null)); // BuildFinished es.Consume(new BuildFinishedEventArgs("bf", null, true)); // Log so far actualLog = sc.ToString(); Console.WriteLine("=="); Console.WriteLine(sc.ToString()); Console.WriteLine("=="); // Verify that the log doesn't have perf summary Assert.IsFalse(actualLog.Contains(prjPerfString)); Assert.IsFalse(actualLog.Contains(targetPerfString)); Assert.IsFalse(actualLog.Contains(taskPerfString)); } }
public void TestMinimalWithNormalMessage() { for (int i = 1; i <= 2; i++) { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Minimal, sc.Write, sc.SetColor, sc.ResetColor); L.Initialize(es, i); BuildEventContext buildEventContext = new BuildEventContext(1, 2, 3, 4); BuildStartedEventArgs bse = new BuildStartedEventArgs("bs", null); bse.BuildEventContext = buildEventContext; es.Consume(bse); ProjectStartedEventArgs pse = new ProjectStartedEventArgs(1, "ps", null, "fname", "", null, null, new BuildEventContext(1, 1, 1, 1)); pse.BuildEventContext = buildEventContext; es.Consume(pse); TargetStartedEventArgs trse = new TargetStartedEventArgs("ts", null, "trname", "pfile", "tfile"); trse.BuildEventContext = buildEventContext; es.Consume(trse); TaskStartedEventArgs tase = new TaskStartedEventArgs("tks", null, "tname", "tfname", "tsname"); tase.BuildEventContext = buildEventContext; es.Consume(tase); BuildMessageEventArgs bmea = new BuildMessageEventArgs("foo!", null, "sender", MessageImportance.Normal); bmea.BuildEventContext = buildEventContext; es.Consume(bmea); TaskFinishedEventArgs tafea = new TaskFinishedEventArgs("tkf", null, "fname", "tsname", "tfname", true); tafea.BuildEventContext = buildEventContext; es.Consume(tafea); TargetFinishedEventArgs trfea = new TargetFinishedEventArgs("tf", null, "trname", "fname", "tfile", true); trfea.BuildEventContext = buildEventContext; es.Consume(trfea); ProjectFinishedEventArgs pfea = new ProjectFinishedEventArgs("pf", null, "fname", true); pfea.BuildEventContext = buildEventContext; es.Consume(pfea); BuildFinishedEventArgs bfea = new BuildFinishedEventArgs("bf", null, true); bfea.BuildEventContext = buildEventContext; es.Consume(bfea); Assert.AreEqual(String.Empty, sc.ToString()); } }
public void CustomDisplayedAtDiagnosticMP() { EventSourceSink es = new EventSourceSink(); SimulatedConsole sc = new SimulatedConsole(); ConsoleLogger L = new ConsoleLogger(LoggerVerbosity.Diagnostic, sc.Write, null, null); L.Initialize(es, 2); MyCustomBuildEventArgs c = new MyCustomBuildEventArgs("msg"); c.BuildEventContext = new BuildEventContext(1, 1, 1, 1); es.Consume(c); Assert.IsTrue(sc.ToString().Contains("msg")); }