| File: Utilities\RunSettingsUtilities.cs | Web Access |
| Project: src\vstest\src\Microsoft.TestPlatform.Common\Microsoft.TestPlatform.Common.csproj (Microsoft.VisualStudio.TestPlatform.Common) |
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Microsoft.VisualStudio.TestPlatform.ObjectModel; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities; namespace Microsoft.VisualStudio.TestPlatform.Common.Utilities; /// <summary> /// Utility methods for RunSettings. /// </summary> public static class RunSettingsUtilities { /// <summary> /// Create RunSettings object corresponding to settingsXml /// </summary> public static RunSettings? CreateAndInitializeRunSettings(string? settingsXml) { RunSettings? settings = null; if (!settingsXml.IsNullOrWhiteSpace()) { settings = new RunSettings(); settings.LoadSettingsXml(settingsXml); settings.InitializeSettingsProviders(settingsXml); } return settings; } /// <summary> /// Gets the test results directory from the run configuration /// </summary> /// <param name="runConfiguration">Test run configuration</param> /// <returns>Test results directory</returns> [return: NotNullIfNotNull("runConfiguration")] public static string? GetTestResultsDirectory(RunConfiguration? runConfiguration) { if (runConfiguration != null) { // It will try to get path from runsettings, if not found then it will return default path. return Environment.ExpandEnvironmentVariables(runConfiguration.ResultsDirectory); } return null; } /// <summary> /// Gets the target framework from the run configuration /// </summary> /// <param name="runConfiguration">Test run configuration</param> /// <returns>Target Framework</returns> public static Framework? GetTargetFramework(RunConfiguration? runConfiguration) { if (runConfiguration != null) { // It will get target framework from runsettings return runConfiguration.TargetFramework; } return null; } /// <summary> /// Gets the solution directory from run configuration /// </summary> /// <param name="runConfiguration">Test run configuration</param> /// <returns>Solution directory</returns> public static string? GetSolutionDirectory(RunConfiguration? runConfiguration) { string? solutionDirectory = null; if (runConfiguration != null) { if (!runConfiguration.SolutionDirectory.IsNullOrEmpty()) { // Env var is expanded in run configuration solutionDirectory = runConfiguration.SolutionDirectory; } } return solutionDirectory; } /// <summary> /// Gets the maximum CPU count from setting xml /// </summary> /// <param name="settingXml">setting xml</param> /// <returns>Maximum CPU Count</returns> public static int GetMaxCpuCount(string? settingXml) { int cpuCount = Constants.DefaultCpuCount; if (settingXml.IsNullOrEmpty()) { return cpuCount; } try { var configuration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingXml); cpuCount = GetMaxCpuCount(configuration); } catch (SettingsException ex) { EqtTrace.Verbose("RunSettingsUtilities.GetMaxCpuCount: Unable to get maximum CPU count from Setting Xml. {0}", ex); } return cpuCount; } /// <summary> /// Gets the maximum CPU count from run configuration /// </summary> /// <param name="runConfiguration">Test run configuration</param> /// <returns>Maximum CPU Count</returns> public static int GetMaxCpuCount(RunConfiguration? runConfiguration) { int cpuCount = Constants.DefaultCpuCount; if (runConfiguration != null) { cpuCount = runConfiguration.MaxCpuCount; } return cpuCount; } /// <summary> /// Gets the value of TreatNoTestsAsError parameter from runsettings file /// </summary> /// <param name="runSettings">Runsetting string value</param> /// <returns>The value of TreatNoTestsAsError</returns> public static bool GetTreatNoTestsAsError(string? runSettings) { bool treatNoTestsAsError = false; if (runSettings != null) { try { RunConfiguration runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettings); treatNoTestsAsError = GetTreatNoTestsAsError(runConfiguration); } catch (SettingsException se) { EqtTrace.Error("RunSettingsUtilities.GetTreatNoTestsAsError: Unable to get the value of TreatNoTestsAsError from runsettings: Error {0}", se); } } return treatNoTestsAsError; } private static bool GetTreatNoTestsAsError(RunConfiguration? runConfiguration) { bool treatNoTestsAsError = false; if (runConfiguration != null) { treatNoTestsAsError = runConfiguration.TreatNoTestsAsError; } return treatNoTestsAsError; } /// <summary> /// Gets the test adapters path from the run configuration /// </summary> /// <param name="runSettings">Test run settings</param> /// <returns>Test adapters paths</returns> public static IEnumerable<string> GetTestAdaptersPaths(string? runSettings) { var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettings); IEnumerable<string> testAdaptersPaths = []; if (runConfiguration != null) { if (runConfiguration.TestAdaptersPathsSet) { testAdaptersPaths = runConfiguration.TestAdaptersPaths.Split([';'], StringSplitOptions.RemoveEmptyEntries); } } return testAdaptersPaths; } /// <summary> /// Gets the test adapter loading strategy /// </summary> /// <param name="runSettings">Test run settings</param> /// <returns>Test adapter loading strategy</returns> internal static TestAdapterLoadingStrategy GetLoadingStrategy(string? runSettings) { var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettings); return runConfiguration.TestAdapterLoadingStrategy; } }