source: orange/Orange/testing/doctest/dtest.py @ 9938:e560a724d80c

Revision 9938:e560a724d80c, 1.7 KB checked in by Jure Zbontar <jure.zbontar@…>, 2 years ago (diff)

Fixed failing doctest in misc/init.py

Line 
1import os
2import doctest
3import unittest
4import sys
5
6
7def ispackage(path):
8    return os.path.isdir(path) and \
9        os.path.isfile(os.path.join(path, '__init__.py'))
10
11
12def getpackage(fname):
13    if not fname.endswith('.py') and not ispackage(fname):
14        return None
15    base, ext = os.path.splitext(os.path.basename(fname))
16    if base == '__init__':
17        mod_parts = []
18    else:
19        mod_parts = [base]
20    path, part = os.path.split(os.path.split(fname)[0])
21    while part:
22        if ispackage(os.path.join(path, part)):
23            mod_parts.append(part)
24        else:
25            break
26        path, part = os.path.split(path)
27    mod_parts.reverse()
28    return os.path.join(path, part), '.'.join(mod_parts)
29
30
31def get_files(base_dirs, exts):
32    for base_dir in base_dirs:
33        for dirpath, _, fnames in os.walk(base_dir):
34            for fname in fnames:
35                if os.path.splitext(fname)[1] in exts:
36                    yield os.path.join(dirpath, fname)
37
38
39def load_tests(loader, tests, ignore):
40    exclude_dirs = ['/orng/', '/doc/', '/unit/', '/testing/', '/multilabel/', '/OrangeWidgets/']
41    for fname in get_files(base_dirs, ['.py']):
42        if any(dir in fname for dir in exclude_dirs):
43            continue
44        #print(fname)
45        path, package = getpackage(fname)
46        sys.path.insert(0, os.path.split(fname)[0])
47        __import__(package)
48        mod = sys.modules[package]
49        try:
50            tests.addTests(doctest.DocTestSuite(mod))
51        except ValueError:  # Has no tests
52            pass
53        sys.path.pop(0)
54    return tests
55
56
57if __name__ == '__main__':
58    base_dirs = [os.path.abspath('../../misc')]
59    unittest.main()
Note: See TracBrowser for help on using the repository browser.