[corlib] Take shadow copying when computing CodeBase in Assembly::GetName.
[mono.git] / mcs / class / corlib / Test / System / AppDomainTest.cs
index 03de187af3d953521b3b78452e6eff523b6be07a..34874b1f81f0bae8977486ef067eec0eceac7e71 100644 (file)
@@ -3115,6 +3115,26 @@ namespace MonoTests.System
                        tester.AssertLoadMissingAssemblyType ();
                }
 
+               [Test]
+               public void ShadowCopyDontChangeAssemblyCodeBase ()
+               {
+                       var setup = new AppDomainSetup ();
+                       setup.ApplicationBase = tempDir;
+                       setup.ApplicationName = "testdomain";
+                       setup.ShadowCopyFiles = "true";
+                       var ad = CreateTestDomain (setup, true);
+
+                       string assemblyFile = Path.Combine (tempDir, "TestAssembly.dll");
+                       AssemblyName aname = new AssemblyName ();
+                       aname.Name = "TestAssembly";
+                       GenerateAssembly (aname, assemblyFile);
+
+                       var tester = CreateCrossDomainTester (ad);
+                       var codeBaseFromShadowCopy = tester.LoadAndGetName ("TestAssembly");
+                       var expected = Assembly.LoadFrom (Path.Combine (tempDir, "TestAssembly.dll"));
+                       Assert.AreEqual (expected.GetName ().CodeBase, codeBaseFromShadowCopy);
+               }
+
                private static AppDomain CreateTestDomain (string baseDirectory, bool assemblyResolver)
                {
                        AppDomainSetup setup = new AppDomainSetup ();
@@ -3258,6 +3278,12 @@ namespace MonoTests.System
                        {
                                return obj;
                        }
+
+                       public string LoadAndGetName (string assemblyName)
+                       {
+                               var assembly = Assembly.Load (assemblyName);
+                               return assembly.GetName ().CodeBase;
+                       }
                }
 
                [Serializable ()]