public IXPathNavigable AddRunSettings()

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;
        }