in GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs [72:118]
public static RunSettingsContainer LoadFromXml(XPathNavigator rootElement)
{
ValidateArg.NotNull(rootElement, nameof(rootElement));
RunSettingsContainer runSettingsContainer = null;
if (rootElement.Name.Equals(GoogleTestConstants.SettingsName))
{
var schemaSet = new XmlSchemaSet();
var schemaStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("GoogleTestAdapterSettings.xsd");
var schemaSettings = new XmlReaderSettings(); // Don't use an object initializer for FxCop to understand.
schemaSettings.XmlResolver = null;
schemaSet.Add(null, XmlReader.Create(schemaStream, schemaSettings));
var settings = new XmlReaderSettings(); // Don't use an object initializer for FxCop to understand.
settings.Schemas = schemaSet;
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;
settings.XmlResolver = null;
settings.ValidationEventHandler += (object o, ValidationEventArgs e) => throw e.Exception;
var reader = XmlReader.Create(new MemoryStream(Encoding.UTF8.GetBytes(rootElement.OuterXml)), settings);
try
{
var serializer = new XmlSerializer(typeof(SettingsSerializationContainer));
var serializationContainer = serializer.Deserialize(reader) as SettingsSerializationContainer;
runSettingsContainer = new RunSettingsContainer(serializationContainer);
ValidateAdditionalRunSettingsConstraints(runSettingsContainer.SolutionSettings);
foreach (var runSettings in runSettingsContainer.ProjectSettings)
ValidateAdditionalRunSettingsConstraints(runSettings);
}
catch (InvalidRunSettingsException)
{
throw;
}
catch (InvalidOperationException e) when (e.InnerException is XmlSchemaValidationException)
{
throw new InvalidRunSettingsException(String.Format(Resources.Invalid, GoogleTestConstants.SettingsName), e.InnerException);
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
}
}
return runSettingsContainer ?? new RunSettingsContainer();
}