static TestMessageVisitor <IMessageSinkMessage> CreateVisitor(object consoleLock, bool quiet, string defaultDirectory, XElement assemblyElement, bool teamCity, bool appVeyor) { TestMessageVisitor visitor = null; if (teamCity) { visitor = new TeamCityVisitor(consoleLogger, assemblyElement, () => cancel, displayNameFormatter: teamCityDisplayNameFormatter); } else if (appVeyor) { visitor = new AppVeyorVisitor(consoleLock, defaultDirectory, assemblyElement, () => cancel, completionMessages); } else { visitor = new StandardOutputVisitor(consoleLock, quiet, defaultDirectory, assemblyElement, () => cancel, completionMessages); } var assembly = typeof(Program).Assembly; var visitors = new List <TestMessageVisitor>(); var dir = Path.GetDirectoryName(assembly.Location) ?? Environment.CurrentDirectory; foreach (var file in Directory.GetFiles(dir, "xunit.extensions*.dll")) { visitors.AddRange(Assembly.LoadFile(file) .GetTypes() .Where(t => t.IsSubclassOf(typeof(TestMessageVisitor))) .Select(t => (TestMessageVisitor)Activator.CreateInstance(t)).ToArray()); } visitors.Add(visitor); return(new TestMessageVisitorObserver <IMessageSinkMessage>(visitors.ToArray())); }
public DesignTimeExecutionVisitor( ITestExecutionSink sink, IDictionary <ITestCase, VsTestCase> conversions, TestMessageVisitor <ITestAssemblyFinished> next) { _sink = sink; _conversions = conversions; _next = next; }
public void SignalsEventWhenMessageOfSpecifiedTypeIsSeen() { var visitor = new TestMessageVisitor<IDiscoveryCompleteMessage>(); var message1 = Substitute.For<IMessageSinkMessage>(); var message2 = Substitute.For<IDiscoveryCompleteMessage>(); visitor.OnMessage(message1); Assert.False(visitor.Finished.WaitOne(0)); visitor.OnMessage(message2); Assert.True(visitor.Finished.WaitOne(0)); }
public void FinishedEventNotSignaledByDefault() { var visitor = new TestMessageVisitor<IMessageSinkMessage>(); Assert.False(visitor.Finished.WaitOne(0)); }