/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_source.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-06 01:18:08 UTC
  • mfrom: (7143 work)
  • mto: This revision was merged to the branch mainline in revision 7151.
  • Revision ID: jelmer@jelmer.uk-20181106011808-y870f4vq0ork3ahu
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
74
74
    def find_occurences(self, rule, filename):
75
75
        """Find the number of occurences of rule in a file."""
76
76
        occurences = 0
77
 
        source = file(filename, 'r')
 
77
        source = open(filename, 'r')
78
78
        for line in source:
79
79
            if line.find(rule) > -1:
80
80
                occurences += 1
145
145
 
146
146
    def get_source_file_contents(self, extensions=None):
147
147
        for fname in self.get_source_files(extensions=extensions):
148
 
            f = open(fname, 'rb')
149
 
            try:
150
 
                text = f.read()
151
 
            finally:
152
 
                f.close()
153
 
            yield fname, text
 
148
            with open(fname, 'r') as f:
 
149
                yield fname, f.read()
154
150
 
155
151
    def is_our_code(self, fname):
156
152
        """True if it's a "real" part of breezy rather than external code"""
350
346
                continue
351
347
            if not assert_re.search(text):
352
348
                continue
353
 
            ast = parser.ast2tuple(parser.suite(text))
354
 
            if search(ast):
 
349
            st = parser.suite(text)
 
350
            code = parser.st2tuple(st)
 
351
            if search(code):
355
352
                badfiles.append(fname)
356
353
        if badfiles:
357
354
            self.fail(
367
364
        """
368
365
        both_exc_and_no_exc = []
369
366
        missing_except = []
 
367
        common_classes = ('StaticTuple',)
370
368
        class_re = re.compile(r'^(cdef\s+)?(public\s+)?'
371
369
                              r'(api\s+)?class (\w+).*:', re.MULTILINE)
372
 
        extern_class_re = re.compile(r'## extern cdef class (\w+)',
373
 
                                     re.MULTILINE)
374
370
        except_re = re.compile(
375
371
            r'cdef\s+'        # start with cdef
376
372
            r'([\w *]*?)\s*'  # this is the return signature
381
377
        for fname, text in self.get_source_file_contents(
382
378
                extensions=('.pyx',)):
383
379
            known_classes = {m[-1] for m in class_re.findall(text)}
384
 
            known_classes.update(extern_class_re.findall(text))
 
380
            known_classes.update(common_classes)
385
381
            cdefs = except_re.findall(text)
386
382
            for sig, func, exc_clause, no_exc_comment in cdefs:
387
383
                if sig.startswith('api '):