/// <summary> /// Reads the configuration setup. /// </summary> /// <param name="project">The project.</param> /// <param name="nUnitParameters">The n unit parameters.</param> /// <returns></returns> public DistributedConfigurationSetup ReadConfigurationSetup(TestProject project, NUnitParameters nUnitParameters) { var result = new DistributedConfigurationSetup(); var distributedConfigurationFileNames = GetDistributedConfigurationFileNames(project, nUnitParameters); foreach (var distributedConfigurationFileName in distributedConfigurationFileNames) { if (string.IsNullOrEmpty(distributedConfigurationFileName)) continue; FillSetupInstance(distributedConfigurationFileName, result); } return result; }
/// <summary> /// Gets the substituted configuration file. /// </summary> /// <param name="project">The project.</param> /// <param name="nUnitParameters">The n unit parameters.</param> /// <param name="configurationSubstitutions">The configuration substitutions.</param> /// <returns></returns> public string GetSubstitutedConfigurationFile(TestProject project, NUnitParameters nUnitParameters, DistributedConfigurationSubstitutions configurationSubstitutions) { var distributedConfigurationFileNames = GetDistributedConfigurationFileNames(project, nUnitParameters); if (configurationSubstitutions == null || configurationSubstitutions.Variables.Count == 0) return distributedConfigurationFileNames.FirstOrDefault(); string finalConfigurationFile = null; int hashCode = configurationSubstitutions.GetHashCode(); foreach (var configurationFileName in distributedConfigurationFileNames) { var configurationDocument = XDocument.Load(configurationFileName); SubstitutePlaceHolders(configurationDocument, configurationSubstitutions); var substitutedFileName = Path.ChangeExtension(configurationFileName, string.Format(".{0}.config", hashCode)); configurationDocument.Save(substitutedFileName); if (finalConfigurationFile == null) finalConfigurationFile = substitutedFileName; } return finalConfigurationFile; }
/// <summary> /// Initializes a new instance /// </summary> public ClientParameters() { NUnitParameters = new NUnitParameters(); UnknownOptions = new List<ConsoleOption>(); TimeoutPeriod = TimeSpan.FromHours(10); }
private IEnumerable<string> GetDistributedConfigurationFileNames(TestProject project, NUnitParameters nUnitParameters) { if (nUnitParameters.AssembliesToTest.Count == 1) { var localName = Path.Combine(project.Path, Path.GetFileName(nUnitParameters.AssembliesToTest[0])); if (NUnitProject.IsNUnitProjectFile(localName) && File.Exists(localName)) { var nUnitProject = new NUnitProject(localName); nUnitProject.Load(); var matchingConfig = nUnitProject.Configs.Cast<ProjectConfig>().Where(c => c.Name.Equals(nUnitParameters.Configuration)).FirstOrDefault(); if (matchingConfig == null) { var configFileNamedAsProject = Path.ChangeExtension(localName, ".config"); if (File.Exists(configFileNamedAsProject)) yield return configFileNamedAsProject; yield break; } yield return matchingConfig.ConfigurationFilePath; yield break; } } foreach (var assembly in nUnitParameters.AssembliesToTest) { var localName = Path.Combine(project.Path, Path.GetFileName(assembly)); string possibleConfigName = null; if (File.Exists(possibleConfigName = localName + ".config")) yield return possibleConfigName; else if (File.Exists(possibleConfigName = Path.ChangeExtension(localName, ".config"))) yield return possibleConfigName; } }
private TestPackage GetTestPackage(string projectFileName, NUnitParameters nUnitParameters) { if (!NUnitProject.IsNUnitProjectFile(projectFileName)) return new TestPackage(projectFileName); var nunitProject = new NUnitProject(projectFileName); nunitProject.Load(); if (!string.IsNullOrEmpty(nUnitParameters.Configuration)) nunitProject.SetActiveConfig(nUnitParameters.Configuration); return nunitProject.ActiveConfig.MakeTestPackage(); }