~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_source.py

  • Committer: John Arbash Meinel
  • Date: 2009-03-26 16:35:00 UTC
  • mfrom: (4208 +trunk)
  • mto: (3735.40.9 vilajam)
  • mto: This revision was merged to the branch mainline in revision 4280.
  • Revision ID: john@arbash-meinel.com-20090326163500-os7lvdpsdxnxstd0
Merge bzr.dev 4208.

This brings in some more smart-server improvements, 
as well as the iter_files_bytes as chunked, and 
multi-file and directory logging.

Show diffs side-by-side

added added

removed removed

Lines of Context:
110
110
                              % source_dir)
111
111
        return source_dir
112
112
 
113
 
    def get_source_files(self):
 
113
    def get_source_files(self, extensions=None):
114
114
        """Yield all source files for bzr and bzrlib
115
115
 
116
116
        :param our_files_only: If true, exclude files from included libraries
117
117
            or plugins.
118
118
        """
119
119
        bzrlib_dir = self.get_bzrlib_dir()
 
120
        if extensions is None:
 
121
            extensions = ('.py',)
120
122
 
121
123
        # This is the front-end 'bzr' script
122
124
        bzr_path = self.get_bzr_path()
127
129
                if d.endswith('.tmp'):
128
130
                    dirs.remove(d)
129
131
            for f in files:
130
 
                if not f.endswith('.py'):
 
132
                for extension in extensions:
 
133
                    if f.endswith(extension):
 
134
                        break
 
135
                else:
 
136
                    # Did not match the accepted extensions
131
137
                    continue
132
138
                yield osutils.pathjoin(root, f)
133
139
 
134
 
    def get_source_file_contents(self):
135
 
        for fname in self.get_source_files():
 
140
    def get_source_file_contents(self, extensions=None):
 
141
        for fname in self.get_source_files(extensions=extensions):
136
142
            f = open(fname, 'rb')
137
143
            try:
138
144
                text = f.read()
176
182
                          % filename)
177
183
 
178
184
    def test_copyright(self):
179
 
        """Test that all .py files have a valid copyright statement"""
180
 
        # These are files which contain a different copyright statement
181
 
        # and that is okay.
 
185
        """Test that all .py and .pyx files have a valid copyright statement"""
182
186
        incorrect = []
183
187
 
184
188
        copyright_re = re.compile('#\\s*copyright.*(?=\n)', re.I)
188
192
            r'.*Canonical Ltd' # And containing 'Canonical Ltd'
189
193
            )
190
194
 
191
 
        for fname, text in self.get_source_file_contents():
 
195
        for fname, text in self.get_source_file_contents(
 
196
                extensions=('.py', '.pyx')):
192
197
            if self.is_copyright_exception(fname):
193
198
                continue
194
199
            match = copyright_canonical_re.search(text)
223
228
            self.fail('\n'.join(help_text))
224
229
 
225
230
    def test_gpl(self):
226
 
        """Test that all .py files have a GPL disclaimer"""
 
231
        """Test that all .py and .pyx files have a GPL disclaimer."""
227
232
        incorrect = []
228
233
 
229
234
        gpl_txt = """
243
248
"""
244
249
        gpl_re = re.compile(re.escape(gpl_txt), re.MULTILINE)
245
250
 
246
 
        for fname, text in self.get_source_file_contents():
 
251
        for fname, text in self.get_source_file_contents(
 
252
                extensions=('.py', '.pyx')):
247
253
            if self.is_license_exception(fname):
248
254
                continue
249
255
            if not gpl_re.search(text):
291
297
        illegal_newlines = {}
292
298
        long_lines = {}
293
299
        no_newline_at_eof = []
294
 
        for fname, text in self.get_source_file_contents():
 
300
        for fname, text in self.get_source_file_contents(
 
301
                extensions=('.py', '.pyx')):
295
302
            if not self.is_our_code(fname):
296
303
                continue
297
304
            lines = text.splitlines(True)