diff options
| author | Jelmer Vernooij <jelmer@samba.org> | 2011-12-08 21:56:08 +0100 | 
|---|---|---|
| committer | Jelmer Vernooij <jelmer@samba.org> | 2011-12-08 23:44:10 +0100 | 
| commit | 31eba612f47fc19381eddc8b2fa825b56953784f (patch) | |
| tree | fe3c2e7e3d246095527ca30fd444b68e69831786 /source4/scripting/python | |
| parent | eae3e6230facf84f59b7d3a6582131d664372f1f (diff) | |
| download | samba-31eba612f47fc19381eddc8b2fa825b56953784f.tar.gz samba-31eba612f47fc19381eddc8b2fa825b56953784f.tar.bz2 samba-31eba612f47fc19381eddc8b2fa825b56953784f.zip  | |
Add test for PEP8 - currently all errors are ignored, but we warn about them - and can ratchet if we want to.
Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Thu Dec  8 23:44:10 CET 2011 on sn-devel-104
Diffstat (limited to 'source4/scripting/python')
| -rw-r--r-- | source4/scripting/python/samba/tests/source.py | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/tests/source.py b/source4/scripting/python/samba/tests/source.py index c67634912d..260d753801 100644 --- a/source4/scripting/python/samba/tests/source.py +++ b/source4/scripting/python/samba/tests/source.py @@ -26,11 +26,16 @@ import os  import re  import warnings +import samba +samba.ensure_external_module("pep8", "pep8") +import pep8 +  from samba.tests import (      TestCase,      ) +  def get_python_source_files():      """Iterate over all Python source files."""      library_dir = os.path.join(os.path.dirname(__file__), "..", "..", "samba") @@ -166,3 +171,48 @@ class TestSource(TestCase):          if illegal_newlines:              self.fail(self._format_message(illegal_newlines,                  'Non-unix newlines were found in the following source files:')) + +    pep8_ignore = [ +        'E401',      # multiple imports on one line +        'E501',      # line too long +        'E251',      # no spaces around keyword / parameter equals +        'E201',      # whitespace after '[' +        'E202',      # whitespace before ')' +        'E302',      # expected 2 blank lines, found 1 +        'E231',      # missing whitespace after ',' +        'E225',      # missing whitespace around operator +        'E111',      # indentation is not a multiple of four +        'E261',      # at least two spaces before inline comment +        'E702',      # multiple statements on one line (semicolon) +        'E221',      # multiple spaces before operator +        'E303',      # too many blank lines (2) +        'E203',      # whitespace before ':' +        'E222',      # multiple spaces after operator +        'E301',      # expected 1 blank line, found 0 +        'E211',      # whitespace before '(' +        'E701',      # multiple statements on one line (colon) +        ] + +    def test_pep8(self): +        pep8.process_options() +        pep8.options.repeat = True +        pep8_errors = [] +        pep8_warnings = [] +        for fname, text in get_source_file_contents(): +            def report_error(line_number, offset, text, check): +                code = text[:4] +                if code in self.pep8_ignore: +                    code = 'W' + code[1:] +                text = code + text[4:] +                print "%s:%s: %s" % (fname, line_number, text) +                summary = (fname, line_number, offset, text, check) +                if code[0] == 'W': +                    pep8_warnings.append(summary) +                else: +                    pep8_errors.append(summary) +            lines = text.splitlines(True) +            checker = pep8.Checker(fname, lines) +            checker.report_error = report_error +            checker.check_all() +        if len(pep8_errors) > 0: +            self.fail('there were %d pep8 errors' % len(pep8_errors))  | 
