/// <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;
        }
Ejemplo n.º 2
0
 private static int GetKeyForSubstitutions(DistributedConfigurationSubstitutions substitutions)
 {
     return substitutions == null ? 0 : substitutions.GetHashCode();
 }