~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_source.py

  • Committer: Danny van Heumen
  • Date: 2010-03-09 16:38:10 UTC
  • mto: (4634.139.5 2.0)
  • mto: This revision was merged to the branch mainline in revision 5160.
  • Revision ID: danny@dannyvanheumen.nl-20100309163810-ujn8hcx08f75nlf1
Refined test to make use of locking hooks and also validate if lock is truly a checkout-lock.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
40
40
 
41
41
# Files which are listed here will be skipped when testing for Copyright (or
42
42
# GPL) statements.
43
 
COPYRIGHT_EXCEPTIONS = [
44
 
    'bzrlib/_bencode_py.py',
45
 
    'bzrlib/doc_generate/conf.py',
46
 
    'bzrlib/lsprof.py',
47
 
    ]
 
43
COPYRIGHT_EXCEPTIONS = ['bzrlib/lsprof.py', 'bzrlib/_bencode_py.py',
 
44
    'bzrlib/doc_generate/sphinx_conf.py']
48
45
 
49
 
LICENSE_EXCEPTIONS = [
50
 
    'bzrlib/_bencode_py.py',
51
 
    'bzrlib/doc_generate/conf.py',
52
 
    'bzrlib/lsprof.py',
53
 
    ]
 
46
LICENSE_EXCEPTIONS = ['bzrlib/lsprof.py', 'bzrlib/_bencode_py.py',
 
47
    'bzrlib/doc_generate/sphinx_conf.py']
54
48
# Technically, 'bzrlib/lsprof.py' should be 'bzrlib/util/lsprof.py',
55
49
# (we do not check bzrlib/util/, since that is code bundled from elsewhere)
56
50
# but for compatibility with previous releases, we don't want to move it.
365
359
                    return True
366
360
            return False
367
361
        badfiles = []
368
 
        assert_re = re.compile(r'\bassert\b')
369
362
        for fname, text in self.get_source_file_contents():
370
363
            if not self.is_our_code(fname):
371
364
                continue
372
 
            if not assert_re.search(text):
373
 
                continue
374
 
            ast = parser.ast2tuple(parser.suite(text))
 
365
            ast = parser.ast2tuple(parser.suite(''.join(text)))
375
366
            if search(ast):
376
367
                badfiles.append(fname)
377
368
        if badfiles:
388
379
        """
389
380
        both_exc_and_no_exc = []
390
381
        missing_except = []
391
 
        class_re = re.compile(r'^(cdef\s+)?(public\s+)?'
392
 
                              r'(api\s+)?class (\w+).*:', re.MULTILINE)
393
 
        extern_class_re = re.compile(r'## extern cdef class (\w+)',
394
 
                                     re.MULTILINE)
395
 
        except_re = re.compile(r'cdef\s+' # start with cdef
 
382
        class_re = re.compile(r'^(cdef\s+)?class (\w+).*:', re.MULTILINE)
 
383
        except_re = re.compile(r'cdef\s*' # start with cdef
396
384
                               r'([\w *]*?)\s*' # this is the return signature
397
385
                               r'(\w+)\s*\(' # the function name
398
386
                               r'[^)]*\)\s*' # parameters
401
389
                              )
402
390
        for fname, text in self.get_source_file_contents(
403
391
                extensions=('.pyx',)):
404
 
            known_classes = set([m[-1] for m in class_re.findall(text)])
405
 
            known_classes.update(extern_class_re.findall(text))
 
392
            known_classes = set([m[1] for m in class_re.findall(text)])
406
393
            cdefs = except_re.findall(text)
407
394
            for sig, func, exc_clause, no_exc_comment in cdefs:
408
 
                if sig.startswith('api '):
409
 
                    sig = sig[4:]
410
395
                if not sig or sig in known_classes:
411
396
                    sig = 'object'
412
 
                if 'nogil' in exc_clause:
413
 
                    exc_clause = exc_clause.replace('nogil', '').strip()
414
397
                if exc_clause and no_exc_comment:
415
398
                    both_exc_and_no_exc.append((fname, func))
416
399
                if sig != 'object' and not (exc_clause or no_exc_comment):