########################################################################
# $Header: /var/local/cvsroot/4Suite/Ft/Lib/TestSuite/TestLoader.py,v 1.1 2006-08-11 15:50:12 jkloth Exp $
"""
Provides the TestLoader class for loading test modules or packages.

Copyright 2006 Fourthought, Inc. (USA).
Detailed license and copyright information: http://4suite.org/COPYRIGHT
Project home, documentation, distributions: http://4suite.org/
"""

from Ft.Lib.TestSuite import TestObject

class TestLoader(TestObject.TestObject):

    def __init__(self, name, path, addModes, skipModes, allModes):
        TestObject.TestObject.__init__(self, name)
        self.path = path
        self.addModes = addModes
        self.skipModes = skipModes
        self.allModes = allModes
        self.tests = []
        return

    def loadTest(self, name):
        from Ft.Lib.TestSuite import TestModule
        # 'name' is relative to this loader
        if self.path:
            module_name = self.path + '.' + name
        else:
            module_name = name
        module = __import__(module_name, {}, {}, ['*'])
        return TestModule.TestModule(name, module, self.addModes,
                                     self.skipModes, self.allModes)

    def addTest(self, name):
        test = self.loadTest(name)
        self.tests.append(test)
        return test

    def getTests(self):
        return self.tests
