Пример #1
0
        private IRunner CreateTextRunner(IEnumerable <string> assemblies, string scenarioText)
        {
            var writer   = new StreamWriter(new MemoryStream());
            var listener = new TextWriterEventListener(writer);

            return(CreateTextRunner(assemblies, listener, scenarioText));
        }
Пример #2
0
        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 .*"));
        }
Пример #3
0
                public void Run_Feature()
                {
                    var messages = new StringWriter();
                    var listener = new TextWriterEventListener(messages);

                    TestFeatures.FeatureNamedStory.ExecuteFile(typeof(GreetingSystemActionSteps).Assembly, listener);
                    _messages = messages.ToString();
                }
Пример #4
0
                public void Run_Feature()
                {
                    var messages = new StringWriter();
                    var listener = new TextWriterEventListener(messages);

                    TestFeatures.FeatureWithPendingStep.ExecuteFile(listener);
                    _messages = messages.ToString();
                }
Пример #5
0
                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();
                }
Пример #6
0
        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));
        }
Пример #7
0
            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());
            }
Пример #8
0
            public void SetUp()
            {
                _messages = new StringWriter();
                var listener = new TextWriterEventListener(_messages);

                _results = CreateBasicConfiguration()
                           .SetEventListener(listener)
                           .SetScenarioFiles(new[] { TestFeatures.FeatureNamedStory })
                           .Build()
                           .Run();
            }
Пример #9
0
        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);
        }
Пример #11
0
                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();
                    }
                }
Пример #12
0
        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);
        }