public FixtureLibrary StartSystem(FixtureAssembly fixtureAssembly, MarshalByRefObject remotePublisher)
{
_publisher = (IEventPublisher)remotePublisher;
var observer = new FixtureObserver(_publisher);
// TODO -- if fails, do a Thread.Sleep and try again
_system = fixtureAssembly.System;
_lifecycle = new SystemLifecycle(_system);
// TODO -- make this be async
observer.RecordStatus("Setting up the environment");
_lifecycle.StartApplication();
try
{
var registry = new FixtureRegistry();
_system.RegisterFixtures(registry);
var container = registry.BuildContainer();
var library = TestRunnerBuilder.BuildLibrary(_lifecycle, observer, container, fixtureAssembly.Filter.CreateTypeFilter());
var containerSource = new FixtureContainerSource(container);
_runner = new TestRunner(_lifecycle, library, containerSource);
if (_listener != null)
{
_runner.Listener = _listener;
}
return library;
}
catch (TestEngineFailureException)
{
throw;
}
catch (Exception e)
{
throw new TestEngineFailureException(e.ToString());
}
}