return mb;
}
+ [Test]
+ [Category ("MobileNotWorking")]
+ public void DefaultCtor ()
+ {
+ Assert.IsNotNull (ab.Evidence, "#1");
+ }
+
[Test]
[Category ("NotWorking")]
public void ManifestModule ()
}
[Test]
- [Category ("AndroidNotWorking")] // DefineResource doesn't allow path in its fileName parameter and the test attempts to write to / in effect
+ [Category ("MobileNotWorking")] // DefineResource doesn't allow path in its fileName parameter and the test attempts to write to / in effect
public void TestDefineResource ()
{
ab.DefineResource ("foo", "FOO", "foo.txt", ResourceAttributes.Public);
}
[Test]
- [Category ("AndroidNotWorking")] // Missing Mono.Compilerservices.SymbolWriter assembly
public void TestDefineDynamicModule ()
{
ab.DefineDynamicModule ("foo", "foo.dll");
- ab.DefineDynamicModule ("foo2", true);
ab.DefineDynamicModule ("foo3", "foo3.dll");
+ }
+
+ [Category ("MobileNotWorking")] //XA doesn't ship SymbolWriter. https://bugzilla.xamarin.com/show_bug.cgi?id=53038
+ public void TestDefineDynamicModuleWithSymbolWriter ()
+ {
+ ab.DefineDynamicModule ("foo2", true);
ab.DefineDynamicModule ("foo4", "foo4.dll", true);
}
} catch (NotSupportedException e) {
}
}
+
+ class AssemblyBuilderResolver {
+ private Assembly mock;
+ private ResolveEventHandler d;
+ private string theName;
+
+ public AssemblyBuilderResolver (string theName) {
+ mock = CreateMock (theName);
+ d = new ResolveEventHandler (HandleResolveEvent);
+ this.theName = theName;
+ }
+
+ public void StartHandling () {
+ AppDomain.CurrentDomain.AssemblyResolve += d;
+ }
+
+ public void StopHandling () {
+ AppDomain.CurrentDomain.AssemblyResolve -= d;
+ }
+
+ public Assembly HandleResolveEvent (Object sender, ResolveEventArgs args) {
+ if (args.Name.StartsWith (theName))
+ return mock;
+ else
+ return null;
+ }
+
+ private static Assembly CreateMock (string name) {
+ var an = new AssemblyName (name);
+ var ab = AssemblyBuilder.DefineDynamicAssembly (an, AssemblyBuilderAccess.ReflectionOnly);
+ var mb = ab.DefineDynamicModule (an.Name);
+
+ // Just make some content for the assembly
+ var tb = mb.DefineType ("Foo", TypeAttributes.Public);
+ tb.DefineDefaultConstructor (MethodAttributes.Public);
+
+ tb.CreateType ();
+
+ return ab;
+ }
+ }
+
+ [Test]
+ public void ResolveEventHandlerReflectionOnlyError ()
+ {
+ // Regression test for 57850.
+
+ // If a ResolveEventHandler returns a reflection-only
+ // AssemblyBuilder, we should throw a FileNotFoundException.
+ var s = "ResolveEventHandlerReflectionOnlyErrorAssembly";
+ var h = new AssemblyBuilderResolver (s);
+ Assert.Throws<FileNotFoundException>(() => {
+ h.StartHandling ();
+ var aName = new AssemblyName (s);
+ try {
+ AppDomain.CurrentDomain.Load (aName);
+ } finally {
+ h.StopHandling ();
+ }
+ });
+ }
+
+
}
}