Author: gert
Date: 2007-10-16 05:42:56 -0400 (Tue, 16 Oct 2007)
New Revision: 87564

Added:
   trunk/gert/standalone/bug334200/
   trunk/gert/standalone/bug334200/default.build
   trunk/gert/standalone/bug334200/test.cs
Modified:
   trunk/gert/standalone/known-issues
Log:
Added test for bug #334200.


Added: trunk/gert/standalone/bug334200/default.build
===================================================================
--- trunk/gert/standalone/bug334200/default.build       2007-10-16 09:32:23 UTC 
(rev 87563)
+++ trunk/gert/standalone/bug334200/default.build       2007-10-16 09:42:56 UTC 
(rev 87564)
@@ -0,0 +1,58 @@
+<project name="bug334200" default="rebuild">
+       <target name="mono-1.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,ONLY_1_1,MONO" />
+       </target>
+
+       <target name="mono-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0,MONO" />
+       </target>
+
+       <target name="net-1.1">
+               <property name="csc.defines" value="NET_1_0,NET_1_1,ONLY_1_1" />
+       </target>
+
+       <target name="net-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0" />
+       </target>
+
+       <property name="frameworks" value="mono-1.0,mono-2.0,net-1.1,net-2.0" />
+
+       <target name="clean">
+               <delete>
+                       <fileset>
+                               <include name="out" />
+                               <include name="test.exe" />
+                       </fileset>
+               </delete>
+       </target>
+
+       <target name="build">
+               <property name="original.targetframework" 
value="${nant.settings.currentframework}" />
+
+               <foreach property="framework" item="String" in="${frameworks}" 
delim=",">
+                       <if test="${framework::exists(framework)}">
+                               <property name="nant.settings.currentframework" 
value="${framework}" />
+                               <call 
target="${nant.settings.currentframework}" />
+                               <call target="run" />
+                               <call target="clean" />
+                       </if>
+               </foreach>
+
+               <property name="nant.settings.currentframework" 
value="${original.targetframework}" />
+       </target>
+
+       <target name="compile">
+               <csc target="exe" define="${csc.defines}" output="test.exe" 
warnaserror="true" warninglevel="4">
+                       <sources>
+                               <include name="test.cs" />
+                       </sources>
+               </csc>
+       </target>
+
+       <target name="run" depends="compile">
+               <exec program="test.exe" managed="true" output="out" />
+               <fail if="${file::exists('out')}" />
+       </target>
+
+       <target name="rebuild" depends="clean, build" />
+</project>


Property changes on: trunk/gert/standalone/bug334200/default.build
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/gert/standalone/bug334200/test.cs
===================================================================
--- trunk/gert/standalone/bug334200/test.cs     2007-10-16 09:32:23 UTC (rev 
87563)
+++ trunk/gert/standalone/bug334200/test.cs     2007-10-16 09:42:56 UTC (rev 
87564)
@@ -0,0 +1,61 @@
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Reflection.Emit;
+
+class Program
+{
+       static ArrayList _assemblyBuilders = new ArrayList ();
+
+       static void Main ()
+       {
+               AppDomain.CurrentDomain.AssemblyResolve += new 
ResolveEventHandler (
+                       AppDomain_AssemblyResolve);
+
+               AssemblyBuilder ab = 
AppDomain.CurrentDomain.DefineDynamicAssembly (
+                       CreateAssemblyName ("bug331601a"),
+                       AssemblyBuilderAccess.RunAndSave,
+                       AppDomain.CurrentDomain.BaseDirectory);
+               _assemblyBuilders.Add (ab);
+
+               object p1 = Create (ab, "A", typeof (MyClass));
+
+               Type t1 = ab.GetType (p1.GetType ().FullName, true);
+               Console.WriteLine (t1.AssemblyQualifiedName);
+
+               Type t2 = Type.GetType (p1.GetType ().AssemblyQualifiedName, 
true, false);
+               Console.WriteLine (t2.AssemblyQualifiedName);
+       }
+
+       static AssemblyName CreateAssemblyName (string name)
+       {
+               AssemblyName aname = new AssemblyName ();
+               aname.Name = name;
+               return aname;
+       }
+
+       static object Create (AssemblyBuilder ab, string typeName, Type 
baseType)
+       {
+               ModuleBuilder mb = ab.DefineDynamicModule (ab.GetName ().Name + 
".dll");
+               TypeBuilder tb = mb.DefineType (typeName, 
TypeAttributes.Public, baseType);
+               tb.SetCustomAttribute (new CustomAttributeBuilder (
+                       typeof (SerializableAttribute).GetConstructor (
+                       Type.EmptyTypes), new object [0]));
+               Type emittedType = tb.CreateType ();
+               return Activator.CreateInstance (emittedType);
+       }
+
+       static Assembly AppDomain_AssemblyResolve (object sender, 
ResolveEventArgs args)
+       {
+               foreach (AssemblyBuilder ab in _assemblyBuilders) {
+                       if (args.Name.StartsWith (ab.GetName ().Name))
+                               return ab;
+               }
+               return null;
+       }
+}
+
+[Serializable]
+public class MyClass
+{
+}


Property changes on: trunk/gert/standalone/bug334200/test.cs
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/gert/standalone/known-issues
===================================================================
--- trunk/gert/standalone/known-issues  2007-10-16 09:32:23 UTC (rev 87563)
+++ trunk/gert/standalone/known-issues  2007-10-16 09:42:56 UTC (rev 87564)
@@ -95,3 +95,4 @@
 bug333342/**
 bug333686/**
 bug334173/**
+bug334200/**

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to