/// <summary> /// persists the configuration file to a well known location /// </summary> public void PersistConfigurationFile(ConfigurationFileType type) { string filePath = null; XDocument versionToPersist = null; switch (type) { case ConfigurationFileType.Current: filePath = Filename; versionToPersist = NewVersion; break; case ConfigurationFileType.Backup: filePath = Path.Combine(Path.GetDirectoryName(Filename), Path.GetFileNameWithoutExtension(Filename) + ".old"); versionToPersist = OriginalVersion; break; case ConfigurationFileType.Replacement: filePath = Path.Combine(Path.GetDirectoryName(Filename), Path.GetFileName(Filename) + ".000"); versionToPersist = OriginalVersion; break; } // first we need to save the altered version of the .csdef file FileStream stream = File.Create(filePath); using (var writer = new StreamWriter(stream)) { writer.Write(versionToPersist.ToStringFullXmlDeclaration()); } }
/// <summary> /// The overlay stf configuration for one setting type. /// </summary> /// <param name="directoryName"> /// The directory name. /// </param> /// <param name="configurationFileType"> /// The configuration file type. /// </param> /// <exception cref="ArgumentOutOfRangeException"> /// Exception if configuration file type is unrecognized /// </exception> private void OverlayStfConfigurationForOneSettingType(string directoryName, ConfigurationFileType configurationFileType) { string configFilename; if (!Directory.Exists(directoryName)) { return; } switch (configurationFileType) { case ConfigurationFileType.Machine: configFilename = "StfConfiguration_Machine.xml"; break; case ConfigurationFileType.User: configFilename = "StfConfiguration_User.xml"; break; case ConfigurationFileType.TestCase: configFilename = "StfConfiguration_TestCase.xml"; break; case ConfigurationFileType.TestSuite: configFilename = "StfConfiguration_TestSuite.xml"; break; default: throw new ArgumentOutOfRangeException(nameof(configurationFileType), configurationFileType, null); } var fileLocation = Path.Combine(directoryName, configFilename); if (!File.Exists(fileLocation)) { KernelLogger.LogInternal($"Skipping Configuration file [{fileLocation}]: It does not exist, so not overlaying"); return; } KernelLogger.LogInternal($"Applying configuration found at [{fileLocation}]"); StfConfiguration.OverLay(fileLocation); }