Add AppDomain.CurrentDomain event asserts (dotnet/corefx#38351)
authorSteve MacLean <stmaclea@microsoft.com>
Wed, 12 Jun 2019 06:12:34 +0000 (02:12 -0400)
committerGitHub <noreply@github.com>
Wed, 12 Jun 2019 06:12:34 +0000 (02:12 -0400)
Add assets related to AppDomain events
Remove ApiCompat workaround

Commit migrated from https://github.com/dotnet/corefx/commit/f5399d9d24536697a3bc36339e13ba085fc28938

src/libraries/System.Runtime.Extensions/tests/System/AppDomainTests.cs
src/libraries/System.Runtime.Loader/src/MatchingRefApiCompatBaseline.txt [deleted file]
src/libraries/System.Runtime/tests/System/ExitCodeTests.Unix.cs

index 2898638..3268a04 100644 (file)
@@ -221,6 +221,7 @@ namespace System.Tests
             {
                 EventHandler handler = (sender, e) =>
                 {
+                    Assert.Same(AppDomain.CurrentDomain, sender);
                     File.Create(pathToFile);
                 };
 
@@ -519,9 +520,13 @@ namespace System.Tests
                 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;
                     }
                 };
 
@@ -541,14 +546,44 @@ namespace System.Tests
         }
 
         [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"));
                 };
 
@@ -556,22 +591,30 @@ namespace System.Tests
 
                 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"));
                 };
 
@@ -580,6 +623,8 @@ namespace System.Tests
                 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();
         }
@@ -626,6 +671,10 @@ namespace System.Tests
 
                 ResolveEventHandler handler = (sender, args) =>
                 {
+                    Assert.Same(AppDomain.CurrentDomain, sender);
+                    Assert.NotNull(args);
+                    Assert.NotNull(args.Name);
+                    Assert.NotNull(args.RequestingAssembly);
                     return Assembly.Load("TestApp");
                 };
 
@@ -655,6 +704,10 @@ namespace System.Tests
 
                 ResolveEventHandler handler = (sender, args) =>
                 {
+                    Assert.Same(AppDomain.CurrentDomain, sender);
+                    Assert.NotNull(args);
+                    Assert.NotNull(args.Name);
+                    Assert.NotNull(args.RequestingAssembly);
                     return Assembly.Load("TestApp");
                 };
 
diff --git a/src/libraries/System.Runtime.Loader/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Runtime.Loader/src/MatchingRefApiCompatBaseline.txt
deleted file mode 100644 (file)
index 2542d48..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Compat issues with assembly System.Runtime.Loader:
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.add_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.add_AssemblyResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.add_ResourceResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.add_TypeResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.GetLoadedAssemblies()' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.remove_AssemblyLoad(System.AssemblyLoadEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.remove_AssemblyResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.remove_ResourceResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-MembersMustExist : Member 'System.Runtime.Loader.AssemblyLoadContext.remove_TypeResolve(System.ResolveEventHandler)' does not exist in the reference but it does exist in the implementation.
-Total Issues: 9
index 30e86c4..3bf81ef 100644 (file)
@@ -27,8 +27,9 @@ namespace System.Tests
             {
                 if (!string.IsNullOrEmpty(sigTermExitCode))
                 {
-                    AppDomain.CurrentDomain.ProcessExit += delegate
+                    AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
                     {
+                        Assert.Same(AppDomain.CurrentDomain, sender);
                         Environment.ExitCode = int.Parse(sigTermExitCode);
                     };
                 }