test_resolver.py :  » Template-Engines » Myghty » Myghty-1.1 » test » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Template Engines » Myghty 
Myghty » Myghty 1.1 » test » test_resolver.py
import testbase
import myghty.resolver as resolver
import myghty.exception as exception
import unittest, sys, string

class FileResolveTest(testbase.MyghtyTest):
    def class_set_up(self):
        
        self.resolver = resolver.Resolver(
            component_root = [{'htdocs': self.htdocs}, {'comp': self.components}],
            use_static_source = True
        )
        
        self.create_file(self.htdocs, 'hello.myt', "hello component")
        self.create_file(self.components, 'searchup.myt', "searchup component")
        self.create_directory(self.htdocs, './foo/lala')
        self.create_file(self.htdocs, './foo/searchup2.myt', "<html> foo</html>")
        self.create_file(self.htdocs, './foo/lala/hi.myt', "im hi.myt")
        self.create_file(self.components, 'dhandler', "im a dhandler")

    def class_tear_down(self):
        self.remove_file(self.components, "dhandler")
        self.remove_file(self.components, "searchup.myt")
        self.remove_file(self.htdocs, './foo/searchup2.myt')
        self.remove_file(self.htdocs, './foo/lala/hi.myt')
        self.remove_file(self.htdocs, 'hello.myt')
        
    def testcomponent(self):
        "locates a component in the root directory"
        resolution = self.resolver.resolve('/hello.myt', search_upwards = False, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.path == '/hello.myt' and csource.dir_name == '/', "hello.myt not located")

    def testdircomponent(self):
        "locates a component in a subdirectory"
        resolution = self.resolver.resolve('/foo/lala/hi.myt', search_upwards = False, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.path == '/foo/lala/hi.myt' and csource.dir_name == '/foo/lala' and csource.name=='hi.myt', "hi.myt not properly located")
    
    def testcomponentnoslash(self):
        "locates a component with no directory information in the URI"
        resolution = self.resolver.resolve('hello.myt', search_upwards = False, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None, "hello.myt not located")
        self.assert_(csource.path == '/hello.myt' and csource.dir_name == '/', "hello.myt has wrong path info, path %s dir_name %s" % (csource.path, csource.dir_name))

    def testcache(self):
        "locates a component twice with caching on, checks that the second resolution succeeded"
        resolution = self.resolver.resolve('/hello.myt', search_upwards = False, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        resolution = self.resolver.resolve('/hello.myt', search_upwards = False, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.path == '/hello.myt' and csource.dir_name == '/', "hello.myt not located")

    
    def testupwardsnonexistentdir(self):
        "locates a component searching upwards, with the initial directory nonexistent"
        resolution = self.resolver.resolve('/foo/bar/searchup.myt', search_upwards = True, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.path == '/searchup.myt' and csource.dir_name == '/', "search upwards test #1 failed")
        
    def testupwardsrealdir(self):
        "locates a component searching upwards, with a real initial directory"
        resolution = self.resolver.resolve('/foo/lala/searchup2.myt', search_upwards = True, raise_error = True)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.path == '/foo/searchup2.myt' and csource.dir_name == '/foo', "search upwards test #2 failed, " + csource.path + " " + csource.dir_name)

    def testnotfound(self):
        "tries to locate a component that doesnt exist"
        resolution = self.resolver.resolve('/foo/hi.myt', search_upwards = False, raise_error = False)
        self.assert_(resolution is None, "not found test failed")
        
    def testupwardsnotfound(self):
        "tries to locate a component searching upwards that does not exist"
        resolution = self.resolver.resolve('/foo/autohandler', search_upwards = True, raise_error = False)
        self.assert_(resolution is None, "not found upwards test failed")

    def testupwardsnoslash(self):
        "locates a component upwards, where the uri has no directory information"
        resolution = self.resolver.resolve('autohandler', search_upwards = True, raise_error = False)
        self.assert_(resolution is None, "not found upwards test with no slashes failed")


    def testdhandler(self):
        "locates a dhandler"
        resolution = self.resolver.resolve('/foo/bar/lala/foo.myt', enable_dhandler = True, raise_error = False)
        dumpresolution(resolution)
        self.assert_(resolution is not None, "dhandler test failed")
        csource = resolution.csource
        self.assert_(csource.path == '/dhandler' and csource.dir_name == '/', "dhandler test failed")
        self.assert_(resolution.dhandler_path == 'foo/bar/lala/foo.myt', "dhandler_path is %s" % resolution.dhandler_path)

    def testdhandlernoslash(self):
        "attempts to locate a dhandler with an initial uri that has no directory information, and no dhandler"
        self.remove_file(self.components, "dhandler")
        resolution = self.resolver.resolve('hoho.myt', enable_dhandler = True, raise_error = False)
        self.assert_(resolution is None, "dhandler test with no slashes failed")
        
    def testdir(self):
        "attempts to locate a component with a uri that resolves to a real directory"
        try:
            resolution = self.resolver.resolve('/foo/lala/', search_upwards = False, raise_error = True)
            self.assert_(False, "didnt detect directory")
        # we sort of liked when this was PathIsDirectory
        except exception.ComponentNotFound, e:
            #print e.message()
            self.assert_(True)
        

class PathModuleResolveTest(testbase.MyghtyTest):
    def class_set_up(self):
        self.create_file(self.components, 'pathmodule1.py', 
"""
import myghty.component as component

def dostuff(m):
    pass

    
""")

        self.create_file(self.lib, 'pathmodule2.py', 
"""
import myghty.component as component

def lala(m):
    pass

""")

        pm2 = __import__('pathmodule2')
        
        self.create_directory(self.components, 'foo/bar')

        self.create_file(self.components, 'foo/bar/pathmodule3.py', 
"""
import myghty.component as component

def dostuff(m):
    pass

def index():
    pass

class lala:
    def __call__():
        pass
        
    def foofoo(m):
        pass
        
bar = lala()
""")

        self.create_file(self.components, 'foo/dhandler.py', 
"""
import myghty.component as component

def dostuff(m):
    pass

def index(m):
    pass
    
class lala:
    def __call__():
        pass
        
hoho = lala()
""")

        self.resolver = resolver.Resolver(
            module_root = [
                # a file path
                self.components,
            
                # an actual module
                pm2, 
                
            ],
        )            

    def class_tear_down(self):
        self.remove_file(self.components, 'pathmodule1.py')
        self.remove_file(self.components, 'pathmodule2.py')
        self.remove_file(self.components, 'foo/dhandler.py')
        self.remove_file(self.components, 'foo/bar/pathmodule3.py')

    def testpathmod1(self):
        resolution = self.resolver.resolve('/pathmodule1/dostuff', raise_error = True)
            
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod2(self):
        resolution = self.resolver.resolve('/lala', raise_error = False)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod3(self):
        resolution = self.resolver.resolve('/foo/bar/pathmodule3/dostuff', raise_error = False)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod4(self):
        resolution = self.resolver.resolve('/foo/bar/pathmodule3/lala', raise_error = False)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod5(self):
        resolution = self.resolver.resolve('/foo/hoho', raise_error = False, enable_dhandler = True)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod6(self):
        resolution = self.resolver.resolve('/foo/bar/pathmodule3/', raise_error = False)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)

    def testpathmod7(self):
        resolution = self.resolver.resolve('/foo/bar/pathmodule3/bar/foofoo', raise_error = False)
        dumpresolution(resolution)
        csource = resolution.csource
        self.assert_(csource is not None)




class ModuleResolveTest(testbase.MyghtyTest):
    def class_set_up(self):
        self.create_file(self.lib, '__init__.py', "")
        self.create_file(self.lib, 'mymodule1.py', 
"""
import myghty.component as component
  
def mod1dostuff(m):
    pass
    
class TestComp(component.ModuleComponent):
  
   def do_component_init(self, **params):
      pass               
  
   def do_run_component(self, m, ARGS, **params):
      pass
""")

        self.create_file(self.lib, 'mymodule2.py', 
"""
import myghty.component as component

def dostuff(m):
    pass

def index(m):
    pass
    
class TestComp(component.ModuleComponent):
  
   def do_component_init(self, **params):
      pass               
  
   def do_run_component(self, m, ARGS, **params):
      pass
      
class foo(object):
    def run(self, m):
        pass

lala = foo()
""")


        self.mod2 = __import__('mymodule2')

        self.resolver = resolver.Resolver(
            module_components = [
                {'/index.myt' : 'mymodule1:TestComp'}, 
                {'/foo/.*': self.mod2.TestComp},
                {'/bar/.*': "mymodule2:dostuff"},
                {'/foo2/.*': self.mod2.lala.run},
                {'/foo3/.*': "mymodule2:lala.run"},
            ],
        )
    
    def class_tear_down(self):
        self.remove_file(self.lib, '__init__.py')
        self.remove_file(self.lib, 'mymodule1.py')
        self.remove_file(self.lib, 'mymodule1.pyc')
        self.remove_file(self.lib, 'mymodule2.py')
        self.remove_file(self.lib, 'mymodule2.pyc')
        try: del sys.modules['mymodule1']
        except KeyError:pass
        try: del sys.modules['mymodule2']
        except KeyError:pass    


    def testresolvestring(self):
        resolution = self.resolver.resolve('/index.myt', search_upwards = False, raise_error = False)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.id == 'module|mymodule1:class:TestComp', "unexpected id: " + csource.id)
        self.assert_(sys.modules.has_key('mymodule1'), 'module1 module not loaded into sys.modules')

    def testresolvemod(self):
        resolution = self.resolver.resolve('/foo/lala.myt', search_upwards = False, raise_error = False)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None and csource.id == 'module|mymodule2:class:TestComp', "unexpected id: " + csource.id)
        self.assert_(sys.modules.has_key('mymodule2'), 'module2 module not loaded into sys.modules')
    
    def testresolvemodfunction(self):
        resolution = self.resolver.resolve('/bar/lala', raise_error = False)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None)
        self.assert_(sys.modules.has_key('mymodule2'), 'module2 module not loaded into sys.modules')
        
    def testresolvemodmethod(self):
        resolution = self.resolver.resolve('/foo2/lala', raise_error = False)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None)

    def testresolvemodmethodstring(self):
        resolution = self.resolver.resolve('/foo3/lala', raise_error = False)
        csource = resolution.csource
        dumpresolution(resolution)
        self.assert_(csource is not None)

        
    def testnotfound(self):
        resolution = self.resolver.resolve('/foob/lala.myt', search_upwards = True, raise_error= False)
        self.assert_(resolution is None)
            

def dumpresolution (resolution):
    # TODO: echo flags
    if False:
        print "\nID: " + resolution.csource.id
        print "resolve: " + string.join(resolution.detail, ',')
        print "match: " + repr(resolution.match)
    
if __name__ == '__main__':
    runner = unittest.TextTestRunner(verbosity=2, descriptions=False)
    unittest.main(testRunner=runner)        
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.