import sys
def _register_stub(module_name):
    parts=module_name.rsplit('.',1)
    package=parts[0] if len(parts)>1 else module_name
    class _Mod:pass
    _Mod.__name__=module_name
    _Mod.__package__=package
    sys.modules[module_name]=_Mod
    if len(parts)>1 and parts[0] in sys.modules:
        setattr(sys.modules[parts[0]],parts[1],_Mod)
def _populate_module(module_name, source_code):
    parts=module_name.rsplit('.',1)
    package=parts[0] if len(parts)>1 else module_name
    namespace={'__name__':module_name,'__package__':package}
    exec(source_code,namespace)
    module_obj=sys.modules[module_name]
    for key, value in namespace.items():
        if not key.startswith('__'):
            setattr(module_obj,key,value)
    if len(parts)>1 and parts[0] in sys.modules:
        setattr(sys.modules[parts[0]],parts[1],module_obj)


# Pass 1: register empty stubs so import statements resolve.

# Execute the test file.
_test_namespace={}
exec($TEST_SOURCE,_test_namespace)
class _TestModule:pass
for key, value in _test_namespace.items():
    setattr(_TestModule,key,value)
from chumicro_test_harness.runner import run_module
run_module(_TestModule,name_filter=$FILTER_REPR)
