private static MSTestSettings ToSettings()

in src/Adapter/MSTest.CoreAdapter/MSTestSettings.cs [304:467]


        private static MSTestSettings ToSettings(XmlReader reader)
        {
            ValidateArg.NotNull<XmlReader>(reader, "reader");

            // Expected format of the xml is: -
            //
            // <MSTestV2>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            //     <MapInconclusiveToFailed>false</MapInconclusiveToFailed>
            //     <MapNotRunnableToFailed>false</MapNotRunnableToFailed>
            //     <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies>
            //     <TestTimeout>5000</TestTimeout>
            //     <TreatClassAndAssemblyCleanupWarningsAsErrors>false</TreatClassAndAssemblyCleanupWarningsAsErrors>
            //     <Parallelize>
            //        <Workers>4</Workers>
            //        <Scope>TestClass</Scope>
            //     </Parallelize>
            // </MSTestV2>
            //
            // (or)
            //
            // <MSTest>
            //     <ForcedLegacyMode>true</ForcedLegacyMode>
            //     <SettingsFile>..\..\Local.testsettings</SettingsFile>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            // </MSTest>
            MSTestSettings settings = new MSTestSettings();

            // Read the first element in the section which is either "MSTest"/"MSTestV2"
            reader.ReadToNextElement();

            if (!reader.IsEmptyElement)
            {
                reader.Read();

                while (reader.NodeType == XmlNodeType.Element)
                {
                    bool result;
                    string elementName = reader.Name.ToUpperInvariant();
                    switch (elementName)
                    {
                        case "CAPTURETRACEOUTPUT":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.CaptureDebugTraces = result;
                                }

                                break;
                            }

                        case "ENABLEBASECLASSTESTMETHODSFROMOTHERASSEMBLIES":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.EnableBaseClassTestMethodsFromOtherAssemblies = result;
                                }

                                break;
                            }

                        case "CLASSCLEANUPLIFECYCLE":
                            {
                                var value = reader.ReadInnerXml();
                                if (TryParseEnum(value, out ClassCleanupBehavior lifecycle))
                                {
                                    settings.ClassCleanupLifecycle = lifecycle;
                                }
                                else
                                {
                                    throw new AdapterSettingsException(
                                        string.Format(
                                            CultureInfo.CurrentCulture,
                                            Resource.InvalidClassCleanupLifecycleValue,
                                            value,
                                            string.Join(", ", Enum.GetNames(typeof(ClassCleanupBehavior)))));
                                }

                                break;
                            }

                        case "FORCEDLEGACYMODE":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.ForcedLegacyMode = result;
                                }

                                break;
                            }

                        case "MAPINCONCLUSIVETOFAILED":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.MapInconclusiveToFailed = result;
                                }

                                break;
                            }

                        case "MAPNOTRUNNABLETOFAILED":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.MapNotRunnableToFailed = result;
                                }

                                break;
                            }

                        case "SETTINGSFILE":
                            {
                                string fileName = reader.ReadInnerXml();

                                if (!string.IsNullOrEmpty(fileName))
                                {
                                    settings.TestSettingsFile = fileName;
                                }

                                break;
                            }

                        case "PARALLELIZE":
                            {
                                SetParallelSettings(reader.ReadSubtree(), settings);
                                reader.SkipToNextElement();

                                break;
                            }

                        case "TESTTIMEOUT":
                            {
                                if (int.TryParse(reader.ReadInnerXml(), out int testTimeout) && testTimeout > 0)
                                {
                                    settings.TestTimeout = testTimeout;
                                }

                                break;
                            }

                        case "TREATCLASSANDASSEMBLYCLEANUPWARNINGSASERRORS":
                            {
                                if (bool.TryParse(reader.ReadInnerXml(), out result))
                                {
                                    settings.TreatClassAndAssemblyCleanupWarningsAsErrors = result;
                                }

                                break;
                            }

                        default:
                            {
                                PlatformServiceProvider.Instance.SettingsProvider.Load(reader.ReadSubtree());
                                reader.SkipToNextElement();

                                break;
                            }
                    }
                }
            }

            return settings;
        }