~landscape/zope3/newer-from-ztk

« back to all changes in this revision

Viewing changes to src/twisted/test/test_doc.py

  • Committer: Thomas Hervé
  • Date: 2009-07-08 13:52:04 UTC
  • Revision ID: thomas@canonical.com-20090708135204-df5eesrthifpylf8
Remove twisted copy

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from twisted.trial import unittest
2
 
import inspect, glob, os
3
 
from os import path
4
 
 
5
 
from twisted.python import reflect
6
 
 
7
 
import twisted
8
 
 
9
 
def errorInFile(f, line=17, name=''):
10
 
    """Return a filename formatted so emacs will recognize it as an error point
11
 
 
12
 
    @param line: Line number in file.  Defaults to 17 because that's about how
13
 
        long the copyright headers are.
14
 
    """
15
 
    return '%s:%d:%s' % (f, line, name)
16
 
    # return 'File "%s", line %d, in %s' % (f, line, name)
17
 
 
18
 
class DocCoverage(unittest.TestCase):
19
 
    def setUp(self):
20
 
        remove = len(os.path.dirname(os.path.dirname(twisted.__file__)))+1
21
 
        def visit(dirlist, directory, files):
22
 
            if '__init__.py' in files:
23
 
                d = directory[remove:].replace('/','.')
24
 
                dirlist.append(d)
25
 
        self.packageNames = []
26
 
        os.path.walk(os.path.dirname(twisted.__file__),
27
 
                     visit, self.packageNames)
28
 
 
29
 
    def testModules(self):
30
 
        """Looking for docstrings in all modules."""
31
 
        docless = []
32
 
        for packageName in self.packageNames:
33
 
            if packageName in ('twisted.test',):
34
 
                # because some stuff in here behaves oddly when imported
35
 
                continue
36
 
            try:
37
 
                package = reflect.namedModule(packageName)
38
 
            except ImportError, e:
39
 
                # This is testing doc coverage, not importability.
40
 
                # (Really, I don't want to deal with the fact that I don't
41
 
                #  have pyserial installed.)
42
 
                # print e
43
 
                pass
44
 
            else:
45
 
                docless.extend(self.modulesInPackage(packageName, package))
46
 
        self.failIf(docless, "No docstrings in module files:\n"
47
 
                    "%s" % ('\n'.join(map(errorInFile, docless)),))
48
 
 
49
 
    def modulesInPackage(self, packageName, package):
50
 
        docless = []
51
 
        directory = path.dirname(package.__file__)
52
 
        for modfile in glob.glob(path.join(directory, '*.py')):
53
 
            moduleName = inspect.getmodulename(modfile)
54
 
            if moduleName == '__init__':
55
 
                # These are tested by test_packages.
56
 
                continue
57
 
            elif moduleName in ('spelunk_gnome','gtkmanhole'):
58
 
                # argh special case pygtk evil argh.  How does epydoc deal
59
 
                # with this?
60
 
                continue
61
 
            try:
62
 
                module = reflect.namedModule('.'.join([packageName,
63
 
                                                       moduleName]))
64
 
            except Exception, e:
65
 
                # print moduleName, "misbehaved:", e
66
 
                pass
67
 
            else:
68
 
                if not inspect.getdoc(module):
69
 
                    docless.append(modfile)
70
 
        return docless
71
 
 
72
 
    def testPackages(self):
73
 
        """Looking for docstrings in all packages."""
74
 
        docless = []
75
 
        for packageName in self.packageNames:
76
 
            try:
77
 
                package = reflect.namedModule(packageName)
78
 
            except Exception, e:
79
 
                # This is testing doc coverage, not importability.
80
 
                # (Really, I don't want to deal with the fact that I don't
81
 
                #  have pyserial installed.)
82
 
                # print e
83
 
                pass
84
 
            else:
85
 
                if not inspect.getdoc(package):
86
 
                    docless.append(package.__file__.replace('.pyc','.py'))
87
 
        self.failIf(docless, "No docstrings for package files\n"
88
 
                    "%s" % ('\n'.join(map(errorInFile, docless),)))
89
 
 
90
 
 
91
 
    # This test takes a while and doesn't come close to passing.  :(
92
 
    testModules.skip = "Activate me when you feel like writing docstrings, and fixing GTK crashing bugs."