Skip to content

Commit

Permalink
Add AppDomain.CurrentDomain event asserts (dotnet/corefx#38351)
Browse files Browse the repository at this point in the history
Add assets related to AppDomain events
Remove ApiCompat workaround

Commit migrated from dotnet/corefx@f5399d9
  • Loading branch information
sdmaclea authored Jun 12, 2019
1 parent 3e90313 commit 3cbef1b
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ public void ProcessExit_Called()
{
EventHandler handler = (sender, e) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
File.Create(pathToFile);
};

Expand Down Expand Up @@ -519,9 +520,13 @@ public void AssemblyLoad()
bool AssemblyLoadFlag = false;
AssemblyLoadEventHandler handler = (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.LoadedAssembly);

if (args.LoadedAssembly.FullName.Equals(typeof(AppDomainTests).Assembly.FullName))
{
AssemblyLoadFlag = !AssemblyLoadFlag;
AssemblyLoadFlag = true;
}
};

Expand All @@ -541,37 +546,75 @@ public void AssemblyLoad()
}

[Fact]
[ActiveIssue("https://github.com/dotnet/corefx/issues/18718", TargetFrameworkMonikers.Uap)] // Need to copy files out of execution directory'
public void AssemblyResolveInvalidAssemblyName()
{
RemoteExecutor.Invoke(() => {
bool AssemblyResolveFlag = false;
ResolveEventHandler handler = (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.Name);
Assert.NotNull(args.RequestingAssembly);
AssemblyResolveFlag = true;
return null;
};

AppDomain.CurrentDomain.AssemblyResolve += handler;

Type t = Type.GetType("AssemblyResolveTestApp.Class1, InvalidAssemblyName", throwOnError : false);
Assert.Null(t);
Assert.True(AssemblyResolveFlag);
return RemoteExecutor.SuccessExitCode;
}).Dispose();
}

[Fact]
[SkipOnTargetFramework(TargetFrameworkMonikers.Uap, "Does not support Assembly.LoadFile")]
public void AssemblyResolve()
{
CopyTestAssemblies();

RemoteExecutor.Invoke(() => {
ResolveEventHandler handler = (sender, e) =>
// bool AssemblyResolveFlag = false;
ResolveEventHandler handler = (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.Name);
Assert.NotNull(args.RequestingAssembly);
// AssemblyResolveFlag = true;
return Assembly.LoadFile(Path.Combine(Environment.CurrentDirectory, "AssemblyResolveTestApp.dll"));
};

AppDomain.CurrentDomain.AssemblyResolve += handler;

Type t = Type.GetType("AssemblyResolveTestApp.Class1, AssemblyResolveTestApp", true);
Assert.NotNull(t);
// https://github.com/dotnet/corefx/issues/38361
// Assert.True(AssemblyResolveFlag);
return RemoteExecutor.SuccessExitCode;
}).Dispose();
}

[Fact]
[ActiveIssue("https://github.com/dotnet/corefx/issues/18718", TargetFrameworkMonikers.Uap)] // Need to copy files out of execution directory
[SkipOnTargetFramework(TargetFrameworkMonikers.Uap, "Does not support Assembly.LoadFile")]
public void AssemblyResolve_RequestingAssembly()
{
CopyTestAssemblies();

RemoteExecutor.Invoke(() => {
// bool AssemblyResolveFlag = false;

Assembly a = Assembly.LoadFile(Path.Combine(Environment.CurrentDirectory, "TestAppOutsideOfTPA.exe"));

ResolveEventHandler handler = (sender, e) =>
ResolveEventHandler handler = (sender, args) =>
{
Assert.Equal(e.RequestingAssembly, a);
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.Name);
Assert.Same(a, args.RequestingAssembly);
// AssemblyResolveFlag = true;
return Assembly.LoadFile(Path.Combine(Environment.CurrentDirectory, "AssemblyResolveTestApp.dll"));
};

Expand All @@ -580,6 +623,8 @@ public void AssemblyResolve_RequestingAssembly()
MethodInfo myMethodInfo = ptype.GetMethod("foo");
object ret = myMethodInfo.Invoke(null, null);
Assert.NotNull(ret);
// https://github.com/dotnet/corefx/issues/38361
// Assert.True(AssemblyResolveFlag);
return RemoteExecutor.SuccessExitCode;
}).Dispose();
}
Expand Down Expand Up @@ -626,6 +671,10 @@ public void TypeResolve()

ResolveEventHandler handler = (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.Name);
Assert.NotNull(args.RequestingAssembly);
return Assembly.Load("TestApp");
};

Expand Down Expand Up @@ -655,6 +704,10 @@ public void ResourceResolve()

ResolveEventHandler handler = (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Assert.NotNull(args);
Assert.NotNull(args.Name);
Assert.NotNull(args.RequestingAssembly);
return Assembly.Load("TestApp");
};

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ public void SigTermExitCode(int? exitCodeOnSigterm)
{
if (!string.IsNullOrEmpty(sigTermExitCode))
{
AppDomain.CurrentDomain.ProcessExit += delegate
AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
{
Assert.Same(AppDomain.CurrentDomain, sender);
Environment.ExitCode = int.Parse(sigTermExitCode);
};
}
Expand Down

0 comments on commit 3cbef1b

Please sign in to comment.