/// <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)); } } }
/// <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)); } } }
/// <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)); } }