~bzr-pqm/bzr/bzr.dev

608 by Martin Pool
- Split selftests out into a new module and start changing them
1
# Copyright (C) 2005 by Canonical Ltd
2
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
609 by Martin Pool
- cleanup test code
17
841 by Martin Pool
- Start splitting bzr-independent parts of the test framework into
18
from testsweet import TestBase, run_suite, InTempDir
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
19
import bzrlib.commands
974.1.27 by aaron.bentley at utoronto
Initial greedy fetch work
20
import bzrlib.fetch
719 by Martin Pool
- reorganize selftest code
21
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
22
MODULES_TO_TEST = []
23
MODULES_TO_DOCTEST = []
720 by Martin Pool
- start moving external tests into the testsuite framework
24
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
25
26
class BzrTestBase(InTempDir):
27
    """bzr-specific test base class"""
28
    def run_bzr(self, *args, **kwargs):
29
        retcode = kwargs.get('retcode', 0)
30
        self.assertEquals(bzrlib.commands.run_bzr(args), retcode)
31
        
32
965 by Martin Pool
- selftest is less verbose by default, and takes a -v option if you want it
33
def selftest(verbose=False):
721 by Martin Pool
- framework for running external commands from unittest suite
34
    from unittest import TestLoader, TestSuite
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
35
    import bzrlib, bzrlib.store, bzrlib.inventory, bzrlib.branch
908 by Martin Pool
- merge john's plugins-have-test_suite.patch:
36
    import bzrlib.osutils, bzrlib.commands, bzrlib.merge3, bzrlib.plugin
721 by Martin Pool
- framework for running external commands from unittest suite
37
    from doctest import DocTestSuite
38
    import os
39
    import shutil
40
    import time
745 by Martin Pool
- redirect stdout/stderr while running tests
41
    import sys
851 by Martin Pool
- run merge_core tests from bzr selftest
42
    import unittest
721 by Martin Pool
- framework for running external commands from unittest suite
43
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
44
    global MODULES_TO_TEST, MODULES_TO_DOCTEST
45
46
    testmod_names = \
47
                  ['bzrlib.selftest.whitebox',
48
                   'bzrlib.selftest.versioning',
49
                   'bzrlib.selftest.testinv',
50
                   'bzrlib.selftest.testmerge3',
51
                   'bzrlib.selftest.testhashcache',
52
                   'bzrlib.selftest.teststatus',
53
                   'bzrlib.selftest.testlog',
54
                   'bzrlib.selftest.blackbox',
55
                   'bzrlib.selftest.testrevisionnamespaces',
56
                   'bzrlib.selftest.testbranch',
57
                   'bzrlib.selftest.testrevision',
58
                   'bzrlib.merge_core',
59
                   'bzrlib.selftest.testdiff',
974.1.27 by aaron.bentley at utoronto
Initial greedy fetch work
60
                   'bzrlib.fetch'
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
61
                   ]
62
63
    # XXX: should also test bzrlib.merge_core, but they seem to be out
64
    # of date with the code.
65
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
66
    for m in (bzrlib.store, bzrlib.inventory, bzrlib.branch,
67
              bzrlib.osutils, bzrlib.commands, bzrlib.merge3):
68
        if m not in MODULES_TO_DOCTEST:
69
            MODULES_TO_DOCTEST.append(m)
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
70
969 by Martin Pool
- Add less-sucky is_within_any
71
    
797 by Martin Pool
- run the right bzr for testing
72
    TestBase.BZRPATH = os.path.join(os.path.realpath(os.path.dirname(bzrlib.__path__[0])), 'bzr')
73
    print '%-30s %s' % ('bzr binary', TestBase.BZRPATH)
74
744 by Martin Pool
- show nicer descriptions while running tests
75
    print
721 by Martin Pool
- framework for running external commands from unittest suite
76
77
    suite = TestSuite()
78
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
79
    suite.addTest(TestLoader().loadTestsFromNames(testmod_names))
80
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
81
    for m in MODULES_TO_TEST:
82
         suite.addTest(TestLoader().loadTestsFromModule(m))
843 by Martin Pool
- workaround for flaky TestLoader in python2.3
83
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
84
    for m in (MODULES_TO_DOCTEST):
721 by Martin Pool
- framework for running external commands from unittest suite
85
        suite.addTest(DocTestSuite(m))
86
908 by Martin Pool
- merge john's plugins-have-test_suite.patch:
87
    for p in bzrlib.plugin.all_plugins:
88
        if hasattr(p, 'test_suite'):
89
            suite.addTest(p.test_suite())
90
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
91
    import bzrlib.merge_core
851 by Martin Pool
- run merge_core tests from bzr selftest
92
    suite.addTest(unittest.makeSuite(bzrlib.merge_core.MergeTest, 'test_'))
93
965 by Martin Pool
- selftest is less verbose by default, and takes a -v option if you want it
94
    return run_suite(suite, 'testbzr', verbose=verbose)
841 by Martin Pool
- Start splitting bzr-independent parts of the test framework into
95
96
764 by Martin Pool
- log messages from a particular test are printed if that test fails
97