private IRunner CreateTextRunner(IEnumerable <string> assemblies, string scenarioText) { var writer = new StreamWriter(new MemoryStream()); var listener = new TextWriterEventListener(writer); return(CreateTextRunner(assemblies, listener, scenarioText)); }
public void TextWriterEventListener() { string text; using (var writer = new StringWriter(CultureInfo.InvariantCulture)) { using (var listener = new TextWriterEventListener(Events.Log, writer, DateTime.UtcNow, warningNumber => WarningState.AsWarning, EventLevel.Warning)) { listener.RegisterEventSource(TestEvents.Log); TestEvents log = TestEvents.Log; // should be captured log.AlwaysEvent("Cookie 1 "); log.CriticalEvent("Cookie 2 "); log.ErrorEvent("Cookie 3 "); log.WarningEvent("Cookie 4 "); // shouldn't be captured log.InfoEvent("Cookie 5 "); log.VerboseEvent("Cookie 6 "); } text = writer.ToString(); } XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 1 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 2 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 3 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 4 .*")); XAssert.IsFalse(Regex.IsMatch(text, ".*Cookie 5 .*")); XAssert.IsFalse(Regex.IsMatch(text, ".*Cookie 6 .*")); using (var writer = new StringWriter(CultureInfo.InvariantCulture)) { using (var listener = new TextWriterEventListener(Events.Log, writer, DateTime.UtcNow, warningNumber => WarningState.AsWarning)) { listener.RegisterEventSource(TestEvents.Log); TestEvents log = TestEvents.Log; // should be captured log.AlwaysEvent("Cookie 11 "); log.CriticalEvent("Cookie 12 "); log.ErrorEvent("Cookie 13 "); log.WarningEvent("Cookie 14 "); log.InfoEvent("Cookie 15 "); log.VerboseEvent("Cookie 16 "); } text = writer.ToString(); } XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 11 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 12 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 13 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 14 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 15 .*")); XAssert.IsTrue(Regex.IsMatch(text, ".*Cookie 16 .*")); }
public void Run_Feature() { var messages = new StringWriter(); var listener = new TextWriterEventListener(messages); TestFeatures.FeatureNamedStory.ExecuteFile(typeof(GreetingSystemActionSteps).Assembly, listener); _messages = messages.ToString(); }
public void Run_Feature() { var messages = new StringWriter(); var listener = new TextWriterEventListener(messages); TestFeatures.FeatureWithPendingStep.ExecuteFile(listener); _messages = messages.ToString(); }
public void Run_Feature() { var messages = new StringWriter(); var listener = new TextWriterEventListener(messages); var feature = File.ReadAllText(TestFeatures.FeatureNamedStory); feature.ExecuteText(typeof(GreetingSystemSteps.GreetingSystem).Assembly, listener); _messages = messages.ToString(); }
public void TestMessageLabels() { string text; string alwaysEventLabel = "message"; string criticalEventLabel = "critical"; string errorEventLabel = "error"; string warningEventLabel = "warning"; string suppressedWarningEventLabel = "NoWarn"; string infoEventLabel = "info"; string verboseEventLabel = "verbose"; using (var writer = new StringWriter(CultureInfo.InvariantCulture)) { using (var listener = new TextWriterEventListener(Events.Log, writer, DateTime.UtcNow, warningNumber => WarningState.AsWarning)) { listener.RegisterEventSource(TestEvents.Log); TestEvents log = TestEvents.Log; log.AlwaysEvent("Cookie 1"); log.CriticalEvent("Cookie 2"); log.ErrorEvent("Cookie 3"); log.WarningEvent("Cookie 4"); log.InfoEvent("Cookie 5"); log.VerboseEvent("Cookie 6"); } text = writer.ToString(); } XAssert.IsTrue(Regex.IsMatch(text, $"^{alwaysEventLabel} DX{(int)EventId.AlwaysEvent:D4}: Cookie 1\\r?$", RegexOptions.Multiline)); XAssert.IsTrue(Regex.IsMatch(text, $"^{criticalEventLabel} DX{(int)EventId.CriticalEvent:D4}: Cookie 2\\r?$", RegexOptions.Multiline)); XAssert.IsTrue(Regex.IsMatch(text, $"^{errorEventLabel} DX{(int)EventId.ErrorEvent:D4}: Cookie 3\\r?$", RegexOptions.Multiline)); XAssert.IsTrue(Regex.IsMatch(text, $"^{warningEventLabel} DX{(int)EventId.WarningEvent:D4}: Cookie 4\\r?$", RegexOptions.Multiline)); XAssert.IsTrue(Regex.IsMatch(text, $"^{infoEventLabel} DX{(int)EventId.InfoEvent:D4}: Cookie 5\\r?$", RegexOptions.Multiline)); XAssert.IsTrue(Regex.IsMatch(text, $"^{verboseEventLabel} DX{(int)EventId.VerboseEvent:D4}: Cookie 6\\r?$", RegexOptions.Multiline)); // suppress the warning message (similar to passing /noWarn:10002 (EventId.WarningEvent)) using (var writer = new StringWriter(CultureInfo.InvariantCulture)) { using (var listener = new TextWriterEventListener(Events.Log, writer, DateTime.UtcNow, warningNumber => WarningState.Suppressed)) { listener.RegisterEventSource(TestEvents.Log); TestEvents log = TestEvents.Log; // although we are suppressing the warning, it still should be captured (suppression only applies to console output and err/wrn files) // however, this time a different label should be used log.WarningEvent("Cookie 4"); } text = writer.ToString(); } XAssert.IsTrue(Regex.IsMatch(text, $"^{suppressedWarningEventLabel} DX{(int)EventId.WarningEvent:D4}: Cookie 4\\r?$", RegexOptions.Multiline)); }
public void ShouldMarkFailingStepAsFailedInOutput() { var writer = new StringWriter(); var listener = new TextWriterEventListener(writer); CreateBasicConfiguration().SetEventListener(listener).SetScenarioFiles(new[] { TestFeatures.FeatureWithFailingStep }) .Build() .Run(); StringAssert.Contains("Then I should be greeted with “Hello, Scott!” - FAILED", writer.ToString()); }
public void SetUp() { _messages = new StringWriter(); var listener = new TextWriterEventListener(_messages); _results = CreateBasicConfiguration() .SetEventListener(listener) .SetScenarioFiles(new[] { TestFeatures.FeatureNamedStory }) .Build() .Run(); }
private NBehaveConfiguration CreateBasicConfiguration() { var writer = new StreamWriter(new MemoryStream()); var listener = new TextWriterEventListener(writer); var config = ConfigurationNoAppDomain .New .SetAssemblies(new[] { "TestPlainTextAssembly.dll" }) .SetEventListener(listener) .SetScenarioFiles(new[] { TestFeatures.FeatureWithManyScenarios }); return(config); }
public void TextWriterEventListenerConstructors() { // using defaults using (TextWriterEventListener listener = new TextWriterEventListener()) { IdentityModelEventSource.Logger.LogLevel = EventLevel.Informational; listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational); IdentityModelEventSource.Logger.WriteWarning("This is a warning!"); listener.DisableEvents(IdentityModelEventSource.Logger); } string logText = File.ReadAllText(TextWriterEventListener.DefaultLogFileName); Assert.Contains("This is a warning!", logText); File.Delete(TextWriterEventListener.DefaultLogFileName); // passing custom file path var filename = Guid.NewGuid().ToString() + ".txt"; using (TextWriterEventListener listener = new TextWriterEventListener(filename)) { listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational); IdentityModelEventSource.Logger.WriteWarning("This is a warning for custom file path!"); listener.DisableEvents(IdentityModelEventSource.Logger); } logText = File.ReadAllText(filename); Assert.Contains("This is a warning for custom file path!", logText); File.Delete(filename); // using StreamWriter filename = Guid.NewGuid().ToString() + ".txt"; Stream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write); StreamWriter streamWriter = new StreamWriter(fileStream); using (TextWriterEventListener listener = new TextWriterEventListener(streamWriter)) { listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational); IdentityModelEventSource.Logger.WriteWarning("This is a warning for streamwriter!"); listener.DisableEvents(IdentityModelEventSource.Logger); } streamWriter.Flush(); streamWriter.Dispose(); logText = File.ReadAllText(filename); Assert.Contains("This is a warning for streamwriter!", logText); File.Delete(filename); }
public void Run_Feature() { var messages = new StringWriter(); try { var listener = new TextWriterEventListener(messages); TestFeatures.FeatureWithFailingStep.ExecuteFile(typeof(GreetingSystemActionSteps).Assembly, listener); } catch (StepFailedException) { } finally { _messages = messages.ToString(); } }
public static IDisposable SetupLogging(EventLevel level, IEventWriter writer) { var eventListener = new TextWriterEventListener(eventSource: Events.Log, writer: writer, baseTime: DateTime.UtcNow, level: level); var primarySource = bxl.ETWLogger.Log; if (primarySource.ConstructionException != null) { // Rethrow an exception preserving the original stack trace. var edi = ExceptionDispatchInfo.Capture(primarySource.ConstructionException); edi.Throw(); // This code is unreachable, but compiler doesn't know about it. throw null; } eventListener.RegisterEventSource(primarySource); eventListener.EnableTaskDiagnostics(BuildXL.Tracing.ETWLogger.Tasks.CommonInfrastructure); AriaV2StaticState.Enable(AriaTenantToken.Key); var eventSources = new EventSource[] { bxl.ETWLogger.Log, BuildXL.Engine.Cache.ETWLogger.Log, BuildXL.Engine.ETWLogger.Log, BuildXL.Scheduler.ETWLogger.Log, BuildXL.Tracing.ETWLogger.Log, bxlScriptAnalyzer.ETWLogger.Log, BuildXL.Ide.LanguageServer.ETWLogger.Log, BuildXL.FrontEnd.Core.ETWLogger.Log, BuildXL.FrontEnd.Script.ETWLogger.Log, BuildXL.FrontEnd.Nuget.ETWLogger.Log, }; using (var listener = new TrackingEventListener(Events.Log)) { foreach (var eventSource in eventSources) { Events.Log.RegisterMergedEventSource(eventSource); } } return(eventListener); }
public void TextWriterEventListenerLogging() { var filename = Guid.NewGuid().ToString() + ".txt"; var guid1 = Guid.NewGuid().ToString(); var guid2 = Guid.NewGuid().ToString(); var guid3 = Guid.NewGuid().ToString(); IdentityModelEventSource.Logger.LogLevel = EventLevel.Verbose; using (TextWriterEventListener listener = new TextWriterEventListener(filename)) { listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational); IdentityModelEventSource.Logger.WriteInformation(guid1); IdentityModelEventSource.Logger.WriteVerbose(guid2); IdentityModelEventSource.Logger.WriteCritical(guid3); } string logText = File.ReadAllText(filename); Assert.DoesNotContain(guid2, logText); Assert.Contains(guid1, logText); Assert.Contains(guid3, logText); File.Delete(filename); }