14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26
def discover_test_names(module_or_name):
27
if isinstance(module_or_name, basestring):
28
match = module_or_name
31
file_names = os.listdir(os.path.dirname(__file__))
33
for file_name in file_names:
34
name, ext = os.path.splitext(file_name)
35
if name.startswith('test_') and ext == '.py' and match in name:
36
test_names.add("%s.%s" % (__name__, name))
40
18
def load_tests(basic_tests, module, loader):
41
test_names = discover_test_names(module)
42
basic_tests.addTest(loader.loadTestsFromModuleNames(test_names))
20
'test_annotate_config',
29
basic_tests.addTest(loader.loadTestsFromModuleNames(
30
["%s.%s" % (__name__, tmn) for tmn in testmod_names]))
46
class MockMethod(object):
49
def bind(klass, test_instance, obj, method_name,
50
return_value=None, raise_error=None, raise_on=1):
51
original_method = getattr(obj, method_name)
52
test_instance.addCleanup(setattr, obj, method_name, original_method)
53
setattr(obj, method_name, klass(return_value, raise_error, raise_on))
55
def __init__(self, return_value=None, raise_error=None, raise_on=1):
60
self.return_value = return_value
61
self.raise_error = raise_error
62
self.raise_on = raise_on
64
def __call__(self, *args, **kwargs):
69
if self.raise_error is not None and self.call_count == self.raise_on:
70
raise self.raise_error
71
return self.return_value
74
class MockProperty(MockMethod):
77
def bind(klass, test_instance, obj, method_name, return_value=None):
78
original_method = getattr(obj, method_name)
79
test_instance.addCleanup(setattr, obj, method_name, original_method)
80
mock = klass(return_value)
81
setattr(obj, method_name, property(mock.get_value, mock.set_value))
84
def get_value(self, other):
86
return self.return_value
88
def set_value(self, other, value):
90
self.return_value = value