interop.net.test_loadorder
index
e:\vslrft\dlr\languages\ironpython\tests\interop\net\test_loadorder.py

INTERESTING LOAD SEQUENCES
 
Simply Load
* What should become visible?
* What should not?
  - Type/namespaces in the referenced assembly
  - 
Type with static constructor
* Thread-safety: we could run the static ctor while initializing the package 
  and we shouldn't have any locks held when that happens.
 
Different loading approaches
* clr.AddReferenceXXX
* Assembly.LoadXXX
* ?
 
Loading the same assembly multiple times
* Loading one assembly simultaneously 
* Loading multiple assemblies simultaneously
* Fetching types in one assembly simultaneously
  - From mscorlib, or from user assembly
  - "old", or new
 
Loading one .NET assembly after another .NET assembly
The loaded type is NS.C, now you try to load
* non-generic type which has type name NS
* generic type which has type name NS
The loaded non-generic type is C, now you try to load
* type which has namespace C
The loaded generic type is C`1, now you try to load
*  type which has namespace C
The loaded type is non-generic type, now you try to load
* non-generic type, or generic type 
  -  which has different namespace, different name
  - which has different namespace, same name
  - which has same namespace, different name
  - which has same namespace, same name
The loaded type is generic type, now you try to 
* non-generic type, or generic type 
  -  which has different namespace, different name
  - which has different namespace, same name
  - which has same namespace, different name
  - which has same namespace, same name
The loaded "type" C is already a merged non-generic type C and generic type 
C`1 (if supported), now you try to load
* non-generic type which has same namespace, same name
* generic type which has same namespace, same name
The loaded "type" C is already a merged generic type C`1 and generic type 
C`2 (if supported), now you try to load
* non-generic type which has same namespace, same name
* generic type which has same namespace, same name
 
Reload scenario (or think loading 2 assemblies in different angle)
The updated assembly now has
* one top-level type removed, added, unchanged, changed
* one nested type removed, add, unchanged, changed
* one type under namespace removed, added, unchanged, changed
* one whole namespace removed, added, unchanged, changed        
* one member (method, field, ...) removed, added, unchanged, changed under one 
  type
 
Loading one interesting .NET assembly after another DLR module 
The loaded DLR module is C, now you try to load
* a non-generic type which has type name C
* a generic type which has type name C`2
* a type which has namespace C
 
Loading one interesting DLR module after another .NET assembly
The loaded type is NS.C, now you try to load 
* a DLR module "NS"
The loaded non-generic type is C, now you try to load
* a DLR module "C"
The loaded generic type is C`3, now you try to load
* a DLR module "C"

 
Modules
       
clr
iptest.file_util
logging
nt
sys
time
iptest.type_util

 
Functions
       
test_all()

 
Data
        MAX_FAILURE_RETRY = 3
System = <module 'System' (CLS module, 4 assemblies loaded)>
colon = ':'
ironpython_dlls = ['Microsoft.Scripting.Core.dll', 'Microsoft.Scripting.dll', 'Microsoft.Scripting.Internal.dll', 'IronPython.Modules.dll', 'IronPython.dll']
is_32 = True
is_64 = False
is_cli = True
is_cli32 = True
is_cli64 = False
is_cpython = False
is_debug = True
is_ironpython = True
is_orcas = True
is_peverify_run = False
is_silverlight = False
is_snap = False
is_stress = False
is_vista = False
newline = '\r\n'
one_arg_params = ('-X:Optimize', '-W', '-c', '-X:MaxRecursion', '-X:AssembliesDir')
separator = r'\'