~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
719 by Martin Pool
- reorganize selftest code
19
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
20
MODULES_TO_TEST = []
21
MODULES_TO_DOCTEST = []
720 by Martin Pool
- start moving external tests into the testsuite framework
22
608 by Martin Pool
- Split selftests out into a new module and start changing them
23
def selftest():
721 by Martin Pool
- framework for running external commands from unittest suite
24
    from unittest import TestLoader, TestSuite
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
25
    import bzrlib, bzrlib.store, bzrlib.inventory, bzrlib.branch
908 by Martin Pool
- merge john's plugins-have-test_suite.patch:
26
    import bzrlib.osutils, bzrlib.commands, bzrlib.merge3, bzrlib.plugin
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
27
    global MODULES_TO_TEST, MODULES_TO_DOCTEST
800 by Martin Pool
Merge John's import-speedup branch:
28
723 by Martin Pool
- move whitebox/blackbox modules into bzrlib.selftest subdirectory
29
    import bzrlib.selftest.whitebox
30
    import bzrlib.selftest.blackbox
743 by Martin Pool
- new simple versioning test cases
31
    import bzrlib.selftest.versioning
822 by Martin Pool
- Renamed merge3 test suite for easier access.
32
    import bzrlib.selftest.testmerge3
846 by Martin Pool
- start adding refactored/simplified hash cache
33
    import bzrlib.selftest.testhashcache
897 by Martin Pool
- merge john's revision-naming code
34
    import bzrlib.selftest.testrevisionnamespaces
905 by Martin Pool
- merge aaron's append_multiple.patch
35
    import bzrlib.selftest.testbranch
915 by Martin Pool
- add simple test case for bzr status
36
    import bzrlib.selftest.teststatus
963 by Martin Pool
- add the start of a test for inventory file-id matching
37
    import bzrlib.selftest.testinv
809 by Martin Pool
- stubbed out call to merge_core tests
38
    import bzrlib.merge_core
721 by Martin Pool
- framework for running external commands from unittest suite
39
    from doctest import DocTestSuite
40
    import os
41
    import shutil
42
    import time
745 by Martin Pool
- redirect stdout/stderr while running tests
43
    import sys
851 by Martin Pool
- run merge_core tests from bzr selftest
44
    import unittest
721 by Martin Pool
- framework for running external commands from unittest suite
45
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
46
    for m in (bzrlib.store, bzrlib.inventory, bzrlib.branch,
47
              bzrlib.osutils, bzrlib.commands, bzrlib.merge3):
48
        if m not in MODULES_TO_DOCTEST:
49
            MODULES_TO_DOCTEST.append(m)
858 by Martin Pool
- re-enable hashcache tests
50
            
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
51
    for m in (bzrlib.selftest.whitebox,
52
              bzrlib.selftest.versioning,
963 by Martin Pool
- add the start of a test for inventory file-id matching
53
              bzrlib.selftest.testinv,
858 by Martin Pool
- re-enable hashcache tests
54
              bzrlib.selftest.testmerge3,
884 by Martin Pool
- reenable blackbox test module
55
              bzrlib.selftest.testhashcache,
915 by Martin Pool
- add simple test case for bzr status
56
              bzrlib.selftest.teststatus,
897 by Martin Pool
- merge john's revision-naming code
57
              bzrlib.selftest.blackbox,
58
              bzrlib.selftest.testhashcache,
59
              bzrlib.selftest.testrevisionnamespaces,
905 by Martin Pool
- merge aaron's append_multiple.patch
60
              bzrlib.selftest.testbranch,
897 by Martin Pool
- merge john's revision-naming code
61
              ):
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
62
        if m not in MODULES_TO_TEST:
63
            MODULES_TO_TEST.append(m)
64
65
797 by Martin Pool
- run the right bzr for testing
66
    TestBase.BZRPATH = os.path.join(os.path.realpath(os.path.dirname(bzrlib.__path__[0])), 'bzr')
67
    print '%-30s %s' % ('bzr binary', TestBase.BZRPATH)
68
744 by Martin Pool
- show nicer descriptions while running tests
69
    print
721 by Martin Pool
- framework for running external commands from unittest suite
70
71
    suite = TestSuite()
72
809 by Martin Pool
- stubbed out call to merge_core tests
73
    # should also test bzrlib.merge_core, but they seem to be out of date with
74
    # the code.
75
843 by Martin Pool
- workaround for flaky TestLoader in python2.3
76
858 by Martin Pool
- re-enable hashcache tests
77
    # XXX: python2.3's TestLoader() doesn't seem to find all the
78
    # tests; don't know why
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
79
    for m in MODULES_TO_TEST:
80
         suite.addTest(TestLoader().loadTestsFromModule(m))
843 by Martin Pool
- workaround for flaky TestLoader in python2.3
81
855 by Martin Pool
- Patch from John to allow plugins to add their own tests.
82
    for m in (MODULES_TO_DOCTEST):
721 by Martin Pool
- framework for running external commands from unittest suite
83
        suite.addTest(DocTestSuite(m))
84
908 by Martin Pool
- merge john's plugins-have-test_suite.patch:
85
    for p in bzrlib.plugin.all_plugins:
86
        if hasattr(p, 'test_suite'):
87
            suite.addTest(p.test_suite())
88
851 by Martin Pool
- run merge_core tests from bzr selftest
89
    suite.addTest(unittest.makeSuite(bzrlib.merge_core.MergeTest, 'test_'))
90
846 by Martin Pool
- start adding refactored/simplified hash cache
91
    return run_suite(suite, 'testbzr')
841 by Martin Pool
- Start splitting bzr-independent parts of the test framework into
92
93
764 by Martin Pool
- log messages from a particular test are printed if that test fails
94