TeamCity.VSTest.TestLogger/IoCConfiguration.cs (45 lines of code) (raw):
#if !NET35
namespace TeamCity.VSTest.TestLogger
{
using System;
using System.Collections.Generic;
using IoC;
using JetBrains.TeamCity.ServiceMessages.Write;
using JetBrains.TeamCity.ServiceMessages.Write.Special;
using JetBrains.TeamCity.ServiceMessages.Write.Special.Impl.Updater;
using MessageWriters;
using static IoC.Lifetime;
internal class IoCConfiguration: IConfiguration
{
public IEnumerable<IToken> Apply(IMutableContainer container)
{
var autowiringStrategy = AutowiringStrategies.AspectOriented()
.Tag<TagAttribute>(attribute => attribute.Tag);
var options = new Options();
yield return container
.Bind<IAutowiringStrategy>().To(ctx => autowiringStrategy)
.Bind<IMessageHandler>().To<MessageHandler>()
.Bind<IOptions>().As(Singleton).To(ctx => options)
.Bind<ITestNameProvider>().As(Singleton).To<TestNameProvider>()
.Bind<ISuiteNameProvider>().As(Singleton).To<SuiteNameProvider>()
.Bind<IEventRegistry>().Bind<IEventContext>().As(Singleton).To<EventContext>()
.Bind<ITeamCityServiceMessages>().To<TeamCityServiceMessages>()
.Bind<IServiceMessageFormatter>().To<ServiceMessageFormatter>()
.Bind<IFlowIdGenerator>().To<FlowIdGenerator>()
.Bind<IIdGenerator>().To<IdGenerator>()
.Bind<DateTime>().To(ctx => DateTime.Now)
.Bind<IServiceMessageUpdater>().Tag(typeof(TimestampUpdater)).As(Singleton).To<TimestampUpdater>()
.Bind<IServiceMessageUpdater>().Tag(typeof(MessageBackupUpdater)).As(Singleton).To<MessageBackupUpdater>()
.Bind<IServiceMessageUpdater>().Tag(typeof(TestInfoUpdater)).As(Singleton).To<TestInfoUpdater>()
.Bind<IAttachments>().As(Singleton).To<Attachments>()
.Bind<ITestAttachmentPathResolver>().As(Singleton).To<TestAttachmentPathResolver>()
.Bind<IBytesWriterFactory>().As(Singleton).To<BytesWriterFactory>()
.Bind<IFailedTestsReportWriter>().As(Singleton).To<FailedTestsReportWriter>()
.Bind<IMessageWriter>().As(Singleton).To(ctx => new MessageWriterFactory(ctx.Container.Inject<Options>()).GetMessageWriter())
.Bind<ITeamCityWriter>().To(
ctx => ctx.Container.Inject<ITeamCityServiceMessages>().CreateWriter(
message => ctx.Container.Inject<IMessageWriter>().Write(message), options.FallbackToStdOutTestReporting));
}
}
}
#endif