in GoogleTestAdapter/VsPackage.Shared/Settings/RunSettingsService.cs [33:98]
public IXPathNavigable AddRunSettings(IXPathNavigable runSettingDocument,
IRunSettingsConfigurationInfo configurationInfo, ILogger logger)
{
XPathNavigator runSettingsNavigator = runSettingDocument.CreateNavigator();
Debug.Assert(runSettingsNavigator != null, "userRunSettingsNavigator == null!");
if (!runSettingsNavigator.MoveToChild(Constants.RunSettingsName, ""))
{
logger.Log(MessageLevel.Warning, Common.Resources.RunSettingsMissingNode);
return runSettingsNavigator;
}
var settingsContainer = new RunSettingsContainer();
settingsContainer.SolutionSettings = new RunSettings();
try
{
if (CopyToUnsetValues(runSettingsNavigator, settingsContainer))
{
runSettingsNavigator.DeleteSelf(); // this node is to be replaced by the final run settings
}
}
catch (InvalidRunSettingsException)
{
}
string solutionRunSettingsFile = GetSolutionSettingsXmlFile();
try
{
if (File.Exists(solutionRunSettingsFile))
{
var settings = new XmlReaderSettings(); // Don't use an object initializer for FxCop to understand.
settings.XmlResolver = null;
using (var reader = XmlReader.Create(solutionRunSettingsFile, settings))
{
var solutionRunSettingsDocument = new XPathDocument(reader);
XPathNavigator solutionRunSettingsNavigator = solutionRunSettingsDocument.CreateNavigator();
if (solutionRunSettingsNavigator.MoveToChild(Constants.RunSettingsName, ""))
{
CopyToUnsetValues(solutionRunSettingsNavigator, settingsContainer);
}
else
{
logger.Log(MessageLevel.Warning, string.Format(Common.Resources.SolutionFoundButMissingNode, solutionRunSettingsFile, Constants.RunSettingsName));
}
}
}
}
catch (Exception e)
{
logger.Log(MessageLevel.Warning,
string.Format(Common.Resources.CantParseSettings, solutionRunSettingsFile, e));
}
foreach (var projectSettings in settingsContainer.ProjectSettings)
{
projectSettings.GetUnsetValuesFrom(settingsContainer.SolutionSettings);
}
GetValuesFromGlobalSettings(settingsContainer);
runSettingsNavigator.MoveToChild(Constants.RunSettingsName, "");
runSettingsNavigator.AppendChild(settingsContainer.ToXml().CreateNavigator());
runSettingsNavigator.MoveToRoot();
return runSettingsNavigator;
}