Skip to content

Commit 4e29874

Browse files
authored
Abort when init and run messages fail to process (#2857)
* Abort when init and run messages fail to process, usually on deserialization, to prevent the host from hanging * Send the message via the abort handler when we abort the run
1 parent 1fd2c1c commit 4e29874

File tree

6 files changed

+207
-83
lines changed

6 files changed

+207
-83
lines changed

src/Microsoft.TestPlatform.Common/ExtensionFramework/TestPluginCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ private Assembly CurrentDomainAssemblyResolve(object sender, AssemblyResolveEven
529529
{
530530
try
531531
{
532-
EqtTrace.Verbose("CurrentDomain_AssemblyResolve: Resolving assembly '{0}'.", args.Name);
532+
EqtTrace.Verbose("CurrentDomainAssemblyResolve: Resolving assembly '{0}'.", args.Name);
533533

534534
if (this.resolvedAssemblies.TryGetValue(args.Name, out assembly))
535535
{

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ private Assembly OnResolve(object sender, AssemblyResolveEventArgs args)
106106

107107
if (this.searchDirectories == null || this.searchDirectories.Count == 0)
108108
{
109+
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: There are no search directories, returning.", args.Name);
109110
return null;
110111
}
111112

@@ -146,23 +147,30 @@ private Assembly OnResolve(object sender, AssemblyResolveEventArgs args)
146147
continue;
147148
}
148149

150+
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: Searching in: '{1}'.", args.Name, dir);
151+
149152
foreach (var extension in SupportedFileExtensions)
150153
{
151154
var assemblyPath = Path.Combine(dir, requestedName.Name + extension);
152155
try
153156
{
154157
if (!File.Exists(assemblyPath))
155158
{
159+
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: Assembly path does not exist: '{1}', returning.", args.Name, assemblyPath);
160+
156161
continue;
157162
}
158163

159164
AssemblyName foundName = this.platformAssemblyLoadContext.GetAssemblyNameFromPath(assemblyPath);
160165

161166
if (!this.RequestedAssemblyNameMatchesFound(requestedName, foundName))
162167
{
168+
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: File exists but version/public key is wrong. Try next extension.", args.Name);
163169
continue; // File exists but version/public key is wrong. Try next extension.
164170
}
165171

172+
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: Loading assembly '{1}'.", args.Name, assemblyPath);
173+
166174
assembly = this.platformAssemblyLoadContext.LoadAssemblyFromPath(assemblyPath);
167175
this.resolvedAssemblies[args.Name] = assembly;
168176

@@ -172,7 +180,7 @@ private Assembly OnResolve(object sender, AssemblyResolveEventArgs args)
172180
}
173181
catch (FileLoadException ex)
174182
{
175-
EqtTrace.Info("AssemblyResolver.OnResolve: {0}: Failed to load assembly. Reason:{1} ", args.Name, ex);
183+
EqtTrace.Error("AssemblyResolver.OnResolve: {0}: Failed to load assembly. Reason:{1} ", args.Name, ex);
176184

177185
// Re-throw FileLoadException, because this exception means that the assembly
178186
// was found, but could not be loaded. This will allow us to report a more

0 commit comments

Comments
 (0)