~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/TestUtil.py

  • Committer: Martin Pool
  • Date: 2011-03-28 01:28:09 UTC
  • mto: (5425.4.19 220464-stale-locks)
  • mto: This revision was merged to the branch mainline in revision 5970.
  • Revision ID: mbp@canonical.com-20110328012809-frw003r09tcrxkiz
Represent lock held info as an object, not just a dict

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 Canonical Ltd
2
2
#       Author: Robert Collins <robert.collins@canonical.com>
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
20
20
import logging
21
21
import unittest
22
22
 
23
 
from bzrlib import pyutils
24
 
 
25
23
# Mark this python module as being part of the implementation
26
24
# of unittest: this gives us better tracebacks where the last
27
25
# shown frame is the test code, not our assertXYZ.
29
27
 
30
28
 
31
29
class LogCollector(logging.Handler):
32
 
 
33
30
    def __init__(self):
34
31
        logging.Handler.__init__(self)
35
32
        self.records=[]
36
 
 
37
33
    def emit(self, record):
38
34
        self.records.append(record.getMessage())
39
35
 
62
58
                visitor.visitSuite(test)
63
59
                visitTests(test, visitor)
64
60
            else:
65
 
                print "unvisitable non-unittest.TestCase element %r (%r)" % (
66
 
                    test, test.__class__)
 
61
                print "unvisitable non-unittest.TestCase element %r (%r)" % (test, test.__class__)
67
62
 
68
63
 
69
64
class TestSuite(unittest.TestSuite):
111
106
 
112
107
    def loadTestsFromModuleName(self, name):
113
108
        result = self.suiteClass()
114
 
        module = pyutils.get_named_object(name)
 
109
        module = _load_module_by_name(name)
115
110
 
116
111
        result.addTests(self.loadTestsFromModule(module))
117
112
        return result
184
179
            return self.suiteClass()
185
180
 
186
181
 
 
182
def _load_module_by_name(mod_name):
 
183
    parts = mod_name.split('.')
 
184
    module = __import__(mod_name)
 
185
    del parts[0]
 
186
    # for historical reasons python returns the top-level module even though
 
187
    # it loads the submodule; we need to walk down to get the one we want.
 
188
    while parts:
 
189
        module = getattr(module, parts.pop(0))
 
190
    return module
 
191
 
 
192
 
187
193
class TestVisitor(object):
188
194
    """A visitor for Tests"""
189
 
 
190
195
    def visitSuite(self, aTestSuite):
191
196
        pass
192
 
 
193
197
    def visitCase(self, aTestCase):
194
198
        pass