Skip to content

Commit 970d175

Browse files
authored
Changed new configurator method name (#2397)
* Changed new configurator method name * added more robust heck for target framework * default to FrameWork40 * fixed comment typo
1 parent dd07ac3 commit 970d175

File tree

1 file changed

+48
-19
lines changed

1 file changed

+48
-19
lines changed

src/Microsoft.TestPlatform.Common/Utilities/FakesUtilities.cs

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public static class FakesUtilities
2020
{
2121
private const string ConfiguratorAssemblyQualifiedName = "Microsoft.VisualStudio.TestPlatform.Fakes.FakesDataCollectorConfiguration";
2222

23-
private const string ConfiguratorMethodName = "GetDataCollectorSettingsOrDefault";
23+
private const string NetFrameworkConfiguratorMethodName = "GetDataCollectorSettingsOrDefault";
24+
25+
private const string CrossPlatformConfiguratorMethodName = "GetCrossPlatformDataCollectorSettings";
2426

2527
private const string FakesConfiguratorAssembly = "Microsoft.VisualStudio.TestPlatform.Fakes, Version=16.0.0.0, Culture=neutral";
2628

@@ -50,17 +52,44 @@ public static string GenerateFakesSettingsForRunConfiguration(string[] sources,
5052
doc.Load(xmlReader);
5153
}
5254

53-
return !TryAddFakesDataCollectorSettings(doc, sources, GetFramework(runSettingsXml))
54-
? runSettingsXml
55-
: doc.OuterXml;
55+
var frameworkVersion = GetFramework(runSettingsXml);
56+
if (frameworkVersion == null)
57+
{
58+
return runSettingsXml;
59+
}
60+
61+
return TryAddFakesDataCollectorSettings(doc, sources, (FrameworkVersion)frameworkVersion)
62+
? doc.OuterXml
63+
: runSettingsXml;
5664
}
5765

58-
private static FrameworkVersion GetFramework(string runSettingsXml)
66+
/// <summary>
67+
/// returns FrameworkVersion contained in the runsettingsXML
68+
/// </summary>
69+
/// <param name="runSettingsXml"></param>
70+
/// <returns></returns>
71+
private static FrameworkVersion? GetFramework(string runSettingsXml)
5972
{
60-
var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettingsXml);
61-
#pragma warning disable CS0618 // Type or member is obsolete
62-
return config.TargetFrameworkVersion;
63-
#pragma warning restore CS0618 // Type or member is obsolete
73+
// We assume that only .NET Core, .NET Standard, or .NET Framework projects can have fakes.
74+
var targetFramework = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettingsXml)?.TargetFramework;
75+
76+
if (targetFramework == null)
77+
{
78+
return null;
79+
}
80+
81+
// Since there are no FrameworkVersion values for .Net Core 2.0 +, we check TargetFramework instead
82+
// and default to FrameworkCore10 for .Net Core
83+
if (targetFramework.Name.IndexOf("netstandard", StringComparison.OrdinalIgnoreCase) >= 0 ||
84+
targetFramework.Name.IndexOf("netcoreapp", StringComparison.OrdinalIgnoreCase) >= 0)
85+
{
86+
return FrameworkVersion.FrameworkCore10;
87+
}
88+
89+
// Since the Datacollector is separated on the NetFramework/NetCore line, any value of NETFramework
90+
// can be passed along to the fakes data collector configuration creator.
91+
// We default to Framework40 to preserve back compat
92+
return FrameworkVersion.Framework40;
6493
}
6594

6695
/// <summary>
@@ -85,11 +114,11 @@ private static bool TryAddFakesDataCollectorSettings(
85114
// using the CLRIE profiler, and the old involves using the Intellitrace profiler (which isn't supported in
86115
// .NET Core scenarios). The old API still exists for fallback measures.
87116

88-
var newConfigurator = TryGetFakesNewDataCollectorConfigurator();
89-
if (newConfigurator != null)
117+
var crossPlatformConfigurator = TryGetFakesCrossPlatformDataCollectorConfigurator();
118+
if (crossPlatformConfigurator != null)
90119
{
91120
var sourceTFMMap = CreateDictionary(sources, framework);
92-
var fakesSettings = newConfigurator(sourceTFMMap);
121+
var fakesSettings = crossPlatformConfigurator(sourceTFMMap);
93122
// if no fakes, return settings unchanged
94123
if (fakesSettings == null)
95124
{
@@ -132,14 +161,14 @@ private static bool AddFallbackFakesSettings(
132161
return false;
133162
}
134163

135-
Func<IEnumerable<string>, string> oldConfigurator = TryGetFakesDataCollectorConfigurator();
136-
if (oldConfigurator == null)
164+
Func<IEnumerable<string>, string> netFrameworkConfigurator = TryGetNetFrameworkFakesDataCollectorConfigurator();
165+
if (netFrameworkConfigurator == null)
137166
{
138167
return false;
139168
}
140169

141170
// if no fakes, return settings unchanged
142-
var fakesConfiguration = oldConfigurator(sources);
171+
var fakesConfiguration = netFrameworkConfigurator(sources);
143172
if (fakesConfiguration == null)
144173
{
145174
return false;
@@ -184,14 +213,14 @@ private static void EnsureSettingsNode(XmlDocument settings, TestRunSettings set
184213
}
185214
}
186215

187-
private static Func<IEnumerable<string>, string> TryGetFakesDataCollectorConfigurator()
216+
private static Func<IEnumerable<string>, string> TryGetNetFrameworkFakesDataCollectorConfigurator()
188217
{
189218
#if NET451
190219
try
191220
{
192221
Assembly assembly = Assembly.Load(FakesConfiguratorAssembly);
193222
var type = assembly?.GetType(ConfiguratorAssemblyQualifiedName, false);
194-
var method = type?.GetMethod(ConfiguratorMethodName, new Type[] { typeof(IEnumerable<string>) });
223+
var method = type?.GetMethod(NetFrameworkConfiguratorMethodName, new Type[] { typeof(IEnumerable<string>) });
195224
if (method != null)
196225
{
197226
return (Func<IEnumerable<string>, string>)method.CreateDelegate(typeof(Func<IEnumerable<string>, string>));
@@ -208,13 +237,13 @@ private static Func<IEnumerable<string>, string> TryGetFakesDataCollectorConfigu
208237
return null;
209238
}
210239

211-
private static Func<IDictionary<string, FrameworkVersion>, DataCollectorSettings> TryGetFakesNewDataCollectorConfigurator()
240+
private static Func<IDictionary<string, FrameworkVersion>, DataCollectorSettings> TryGetFakesCrossPlatformDataCollectorConfigurator()
212241
{
213242
try
214243
{
215244
Assembly assembly = Assembly.Load(FakesConfiguratorAssembly);
216245
var type = assembly?.GetType(ConfiguratorAssemblyQualifiedName, false);
217-
var method = type?.GetMethod(ConfiguratorMethodName, new Type[] { typeof(IDictionary<string, FrameworkVersion>) });
246+
var method = type?.GetMethod(CrossPlatformConfiguratorMethodName, new Type[] { typeof(IDictionary<string, FrameworkVersion>) });
218247
if (method != null)
219248
{
220249
return (Func<IDictionary<string, FrameworkVersion>, DataCollectorSettings>)method.CreateDelegate(typeof(Func<IDictionary<string, FrameworkVersion>, DataCollectorSettings>));

0 commit comments

Comments
 (0)