/// <summary>
 /// Initializes a new instance of the <see cref="GeneralProgram"/> class.
 /// </summary>
 /// <param name="updatesMonitor">The updates monitor.</param>
 /// <param name="exceptionCatcher">The exception catcher.</param>
 /// <param name="log">The log.</param>
 /// <param name="bootstrapperParameters"> </param>
 protected GeneralProgram(UpdatesMonitor updatesMonitor, ExceptionCatcher exceptionCatcher, ILog log, BootstrapperParameters bootstrapperParameters)
 {
     this.updatesMonitor = updatesMonitor;
     this.exceptionCatcher = exceptionCatcher;
     this.log = log;
     this.bootstrapperParameters = bootstrapperParameters;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ResultsStorage"/> class.
 /// </summary>
 /// <param name="processor">The processor.</param>
 /// <param name="serializer">The serializer.</param>
 /// <param name="log">The log.</param>
 /// <param name="parameters">The parameters.</param>
 /// <param name="folderName">Name of the folder.</param>
 public ResultsStorage(TestResultsProcessor processor, ITestResultsSerializer serializer, ILog log, BootstrapperParameters parameters, string folderName)
 {
     this.processor = processor;
     this.serializer = serializer;
     this.log = log;
     this.parameters = parameters;
     this.folderName = folderName;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="UpdatesMonitor"/> class.
        /// </summary>
        /// <param name="log">The log.</param>
        /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
        /// <param name="versionProvider">The version provider.</param>
        public UpdatesMonitor(ILog log, BootstrapperParameters bootstrapperParameters, IVersionProvider versionProvider)
        {
            path = Path.GetDirectoryName(bootstrapperParameters.BootstrapperFile);
            this.log = log;
            this.versionProvider = versionProvider;

            timer = new Timer(SomeFileWasChangedAfterWait);
        }
 /// <summary>
 /// Initializes a new instance of an agent program
 /// </summary>
 /// <param name="agentHost">The agent host.</param>
 /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
 /// <param name="updatesMonitor">The updates availability monitor.</param>
 /// <param name="exceptionCatcher">The exception catcher.</param>
 /// <param name="instanceTracker">The instance tracker.</param>
 /// <param name="log">The log.</param>
 public AgentProgram(AgentHost agentHost, 
     BootstrapperParameters bootstrapperParameters,
     UpdatesMonitor updatesMonitor, 
     ExceptionCatcher exceptionCatcher,
     IInstanceTracker instanceTracker,
     ILog log)
     : base(updatesMonitor, exceptionCatcher, log, bootstrapperParameters)
 {
     this.instanceTracker = instanceTracker;
     AgentHost = agentHost;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AgentTestRunner"/> class.
 /// </summary>
 /// <param name="projects">The storage.</param>
 /// <param name="runnerCache">The cash.</param>
 /// <param name="initializer">The initializer.</param>
 /// <param name="configurationOperator">The configuration operator.</param>
 /// <param name="exceptionCatcher">The exception catcher.</param>
 /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
 /// <param name="log">The log.</param>
 public AgentTestRunner(
     IProjectsStorage projects,
     INativeRunnerCache runnerCache,
     ITestSystemInitializer initializer,
     IDistributedConfigurationOperator configurationOperator,
     ExceptionCatcher exceptionCatcher,
     BootstrapperParameters bootstrapperParameters,
     ILog log)
 {
     this.projects = projects;
     this.runnerCache = runnerCache;
     this.initializer = initializer;
     this.configurationOperator = configurationOperator;
     this.exceptionCatcher = exceptionCatcher;
     this.log = log;
 }
        /// <summary>
        /// Gets the N unit folder.
        /// </summary>
        /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
        /// <returns></returns>
        public static string[] GetNUnitFolders(BootstrapperParameters bootstrapperParameters)
        {
            string versionFolder =
                !String.IsNullOrEmpty(bootstrapperParameters.RootFolder)
                    ? GetFolderWithMaximumVersionPattern(Path.Combine(bootstrapperParameters.RootFolder, "NUnit"))
                    : Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            if (versionFolder == null)
                return new string[0];

            string temp = Path.Combine(versionFolder, "net-2.0");
            if (Directory.Exists(temp))
                return new[]{temp};

            return new[]{versionFolder};
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TestsRetriever"/> class.
 /// </summary>
 /// <param name="initializer">The initializer.</param>
 /// <param name="parameters">The parameters.</param>
 /// <param name="log">The log.</param>
 public TestsRetriever(ITestSystemInitializer initializer, BootstrapperParameters parameters, ILog log)
 {
     this.initializer = initializer;
     this.parameters = parameters;
     this.log = log;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ClientProgram"/> class.
 /// </summary>
 /// <param name="options">Options, which were provided through command line</param>
 /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
 /// <param name="client">The client.</param>
 /// <param name="resolver">The resolver.</param>
 /// <param name="catcher">The catcher.</param>
 /// <param name="log">The log.</param>
 public ClientProgram(ClientParameters options, BootstrapperParameters bootstrapperParameters, Client client, AssemblyResolver resolver, ExceptionCatcher catcher, ILog log)
     : base(null, catcher, log, bootstrapperParameters)
 {
     this.options = options;
     this.client = client;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ServerProgram"/> class.
 /// </summary>
 /// <param name="serverHost">The server host.</param>
 /// <param name="bootstrapperParameters">The bootstrapper parameters.</param>
 /// <param name="updatesMonitor">The updates monitor.</param>
 /// <param name="log">The log.</param>
 /// <param name="exceptionCatcher">The exception catcher.</param>
 public ServerProgram(ServerHost serverHost, BootstrapperParameters bootstrapperParameters,
                      UpdatesMonitor updatesMonitor, ILog log, ExceptionCatcher exceptionCatcher)
     : base(updatesMonitor, exceptionCatcher, log, bootstrapperParameters)
 {
     this.serverHost = serverHost;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="UpdateReceiver"/> class.
 /// </summary>
 /// <param name="finder">The finder.</param>
 /// <param name="parameters">The parameters.</param>
 /// <param name="zip">The zip.</param>
 public UpdateReceiver(VersionDirectoryFinder finder, BootstrapperParameters parameters, ZipSource zip)
 {
     this.finder = finder;
     this.parameters = parameters;
     this.zip = zip;
 }
 /// <summary>
 /// Writes to domain.
 /// </summary>
 /// <param name="parameters">The parameters.</param>
 /// <param name="domain">The domain.</param>
 public static void WriteToDomain(BootstrapperParameters parameters, AppDomain domain)
 {
     domain.SetData(bootstrapperDataKey, parameters.BootstrapperFile);
     domain.SetData(bootstrapperConfigurationDataKey, parameters.ConfigurationFile);
 }