-
Notifications
You must be signed in to change notification settings - Fork 329
/
Copy pathRunSettingsUtilities.cs
140 lines (122 loc) · 4.94 KB
/
RunSettingsUtilities.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
namespace Microsoft.VisualStudio.TestPlatform.Common.Utilities
{
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.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 (!StringUtilities.IsNullOrWhiteSpace(settingsXml))
{
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>
public static string GetTestResultsDirectory(RunConfiguration runConfiguration)
{
string resultsDirectory = null;
if (runConfiguration != null)
{
// It will try to get path from runsettings, if not found then it will return default path.
resultsDirectory = Environment.ExpandEnvironmentVariables(runConfiguration.ResultsDirectory);
}
return resultsDirectory;
}
/// <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 (!string.IsNullOrEmpty(runConfiguration.SolutionDirectory))
{
// 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 (string.IsNullOrEmpty(settingXml))
{
return cpuCount;
}
try
{
var configuration = XmlRunSettingsUtilities.GetRunConfigurationNode(settingXml);
cpuCount = GetMaxCpuCount(configuration);
}
catch (SettingsException ex)
{
if (EqtTrace.IsVerboseEnabled)
{
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 test adapters path from the run configuration
/// </summary>
/// <param name="runSettings">Test run settings</param>
/// <param name="returnNullIfNotSet">True to return null, if adapter paths is not set.</param>
/// <returns>Test adapters paths</returns>
public static IEnumerable<string> GetTestAdaptersPaths(string runSettings)
{
var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettings);
IEnumerable<string> testAdaptersPaths = Enumerable.Empty<string>();
if (runConfiguration != null)
{
if (runConfiguration.TestAdaptersPathsSet)
{
testAdaptersPaths = runConfiguration.TestAdaptersPaths.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
}
}
return testAdaptersPaths;
}
}
}