added more test coverage for distutils.filelist to prevent regressions when fnmatch or re are changed
This commit is contained in:
parent
e2f35c3588
commit
1c8c9d1264
|
@ -115,7 +115,7 @@ class FileList:
|
|||
# defined: it's the first word of the line. Which of the other
|
||||
# three are defined depends on the action; it'll be either
|
||||
# patterns, (dir and patterns), or (dir_pattern).
|
||||
(action, patterns, dir, dir_pattern) = self._parse_template_line(line)
|
||||
action, patterns, dir, dir_pattern = self._parse_template_line(line)
|
||||
|
||||
# OK, now we know that the action is valid and we have the
|
||||
# right number of words on the line for that action -- so we
|
||||
|
@ -182,9 +182,6 @@ class FileList:
|
|||
raise DistutilsInternalError, \
|
||||
"this cannot happen: invalid action '%s'" % action
|
||||
|
||||
# process_template_line ()
|
||||
|
||||
|
||||
# -- Filtering/selection methods -----------------------------------
|
||||
|
||||
def include_pattern(self, pattern, anchor=1, prefix=None, is_regex=0):
|
||||
|
|
|
@ -1,6 +1,21 @@
|
|||
"""Tests for distutils.filelist."""
|
||||
from os.path import join
|
||||
import unittest
|
||||
from distutils.filelist import glob_to_re
|
||||
from distutils.filelist import glob_to_re, FileList
|
||||
|
||||
MANIFEST_IN = """\
|
||||
include ok
|
||||
include xo
|
||||
exclude xo
|
||||
include foo.tmp
|
||||
global-include *.x
|
||||
global-include *.txt
|
||||
global-exclude *.tmp
|
||||
recursive-include f *.oo
|
||||
recursive-exclude global *.x
|
||||
graft dir
|
||||
prune dir3
|
||||
"""
|
||||
|
||||
class FileListTestCase(unittest.TestCase):
|
||||
|
||||
|
@ -16,6 +31,34 @@ class FileListTestCase(unittest.TestCase):
|
|||
self.assertEquals(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]\Z(?ms)')
|
||||
self.assertEquals(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]\Z(?ms)')
|
||||
|
||||
def test_process_template_line(self):
|
||||
# testing all MANIFEST.in template patterns
|
||||
file_list = FileList()
|
||||
|
||||
# simulated file list
|
||||
file_list.allfiles = ['foo.tmp', 'ok', 'xo', 'four.txt'
|
||||
join('global', 'one.txt'),
|
||||
join('global', 'two.txt'),
|
||||
join('global', 'files.x'),
|
||||
join('global', 'here.tmp'),
|
||||
join('f', 'o', 'f.oo'),
|
||||
join('dir', 'graft-one'),
|
||||
join('dir', 'dir2', 'graft2'),
|
||||
join('dir3', 'ok'),
|
||||
join('dir3', 'sub', 'ok.txt')
|
||||
]
|
||||
|
||||
for line in MANIFEST_IN.split('\n'):
|
||||
if line.strip() == '':
|
||||
continue
|
||||
file_list.process_template_line(line)
|
||||
|
||||
wanted = ['ok', join('global', 'one.txt'), join('global', 'two.txt'),
|
||||
'four.txt', join('f', 'o', 'f.oo'), join('dir', 'graft-one'),
|
||||
join('dir', 'dir2', 'graft2')]
|
||||
|
||||
self.assertEquals(file_list.files, wanted)
|
||||
|
||||
def test_suite():
|
||||
return unittest.makeSuite(FileListTestCase)
|
||||
|
||||
|
|
Loading…
Reference in New Issue