def test_process_template_line(self): # testing all MANIFEST.in template patterns file_list = FileList() ml = make_local_path # simulated file list self.make_files([ 'foo.tmp', 'ok', 'xo', 'four.txt', 'buildout.cfg', # filelist does not filter out VCS directories, # it's sdist that does ml('.hg/last-message.txt'), ml('global/one.txt'), ml('global/two.txt'), ml('global/files.x'), ml('global/here.tmp'), ml('f/o/f.oo'), ml('dir/graft-one'), ml('dir/dir2/graft2'), ml('dir3/ok'), ml('dir3/sub/ok.txt'), ]) MANIFEST_IN = DALS("""\ include ok include xo exclude xo include foo.tmp include buildout.cfg global-include *.x global-include *.txt global-exclude *.tmp recursive-include f *.oo recursive-exclude global *.x graft dir prune dir3 """) for line in MANIFEST_IN.split('\n'): if not line: continue file_list.process_template_line(line) wanted = [ 'buildout.cfg', 'four.txt', 'ok', ml('.hg/last-message.txt'), ml('dir/graft-one'), ml('dir/dir2/graft2'), ml('f/o/f.oo'), ml('global/one.txt'), ml('global/two.txt'), ] file_list.sort() assert file_list.files == wanted
def test_process_template_line_invalid(self): # invalid lines file_list = FileList() for action in ('include', 'exclude', 'global-include', 'global-exclude', 'recursive-include', 'recursive-exclude', 'graft', 'prune', 'blarg'): try: file_list.process_template_line(action) except DistutilsTemplateError: pass except Exception: assert False, "Incorrect error thrown" else: assert False, "Should have thrown an error"
def test_graft(self): ml = make_local_path # graft file_list = FileList() self.make_files(['a.py', ml('d/b.py'), ml('d/d/e.py'), ml('f/f.py')]) file_list.process_template_line('graft d') file_list.sort() assert file_list.files == [ml('d/b.py'), ml('d/d/e.py')] self.assertNoWarnings() file_list.process_template_line('graft e') file_list.sort() assert file_list.files == [ml('d/b.py'), ml('d/d/e.py')] self.assertWarnings()
def test_prune(self): ml = make_local_path # prune file_list = FileList() file_list.files = ['a.py', ml('d/b.py'), ml('d/d/e.py'), ml('f/f.py')] file_list.process_template_line('prune d') file_list.sort() assert file_list.files == ['a.py', ml('f/f.py')] self.assertNoWarnings() file_list.process_template_line('prune e') file_list.sort() assert file_list.files == ['a.py', ml('f/f.py')] self.assertWarnings()
def test_global_include(self): ml = make_local_path # global-include file_list = FileList() self.make_files(['a.py', 'b.txt', ml('d/c.py')]) file_list.process_template_line('global-include *.py') file_list.sort() assert file_list.files == ['a.py', ml('d/c.py')] self.assertNoWarnings() file_list.process_template_line('global-include *.rb') file_list.sort() assert file_list.files == ['a.py', ml('d/c.py')] self.assertWarnings()
def test_recursive_exclude(self): ml = make_local_path # recursive-exclude file_list = FileList() file_list.files = ['a.py', ml('d/b.py'), ml('d/c.txt'), ml('d/d/e.py')] file_list.process_template_line('recursive-exclude d *.py') file_list.sort() assert file_list.files == ['a.py', ml('d/c.txt')] self.assertNoWarnings() file_list.process_template_line('recursive-exclude e *.py') file_list.sort() assert file_list.files == ['a.py', ml('d/c.txt')] self.assertWarnings()
def test_recursive_include(self): ml = make_local_path # recursive-include file_list = FileList() self.make_files(['a.py', ml('d/b.py'), ml('d/c.txt'), ml('d/d/e.py')]) file_list.process_template_line('recursive-include d *.py') file_list.sort() assert file_list.files == [ml('d/b.py'), ml('d/d/e.py')] self.assertNoWarnings() file_list.process_template_line('recursive-include e *.py') file_list.sort() assert file_list.files == [ml('d/b.py'), ml('d/d/e.py')] self.assertWarnings()
def test_global_exclude(self): ml = make_local_path # global-exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', ml('d/c.py')] file_list.process_template_line('global-exclude *.py') file_list.sort() assert file_list.files == ['b.txt'] self.assertNoWarnings() file_list.process_template_line('global-exclude *.rb') file_list.sort() assert file_list.files == ['b.txt'] self.assertWarnings()
def test_include_pattern(self): # return False if no match file_list = FileList() self.make_files([]) assert not file_list.include_pattern('*.py') # return True if files match file_list = FileList() self.make_files(['a.py', 'b.txt']) assert file_list.include_pattern('*.py') # test * matches all files file_list = FileList() self.make_files(['a.py', 'b.txt']) file_list.include_pattern('*') assert file_list.files == ['a.py', 'b.txt']
def run(self): """Run the command. """ self.filelist = FileList() if not os.path.exists(self.manifest): self.write_manifest() self.filelist.findall() self.add_defaults() if os.path.exists(self.template): self.read_template() self.prune_file_list() # Replace python with c files self.update_sources() self.filelist.sort() self.filelist.remove_duplicates() self.write_manifest()
def test_exclude_pattern(self): # return False if no match file_list = FileList() assert not file_list.exclude_pattern('*.py') # return True if files match file_list = FileList() file_list.files = ['a.py', 'b.py'] assert file_list.exclude_pattern('*.py') # test excludes file_list = FileList() file_list.files = ['a.py', 'a.txt'] file_list.exclude_pattern('*.py') assert file_list.files == ['a.txt']
def test_recursive_include(self): l = make_local_path # recursive-include file_list = FileList() self.make_files(['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')]) file_list.process_template_line('recursive-include d *.py') file_list.sort() assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertNoWarnings() file_list.process_template_line('recursive-include e *.py') file_list.sort() assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertWarnings()
def test_include(self): ml = make_local_path # include file_list = FileList() self.make_files(['a.py', 'b.txt', ml('d/c.py')]) file_list.process_template_line('include *.py') file_list.sort() assert file_list.files == ['a.py'] self.assertNoWarnings() file_list.process_template_line('include *.rb') file_list.sort() assert file_list.files == ['a.py'] self.assertWarnings()
def test_include_pattern(self): # return False if no match file_list = FileList() self.make_files([]) assert not file_list.include_pattern('*.py') # return True if files match file_list = FileList() self.make_files(['a.py', 'b.txt']) assert file_list.include_pattern('*.py') # test * matches all files file_list = FileList() self.make_files(['a.py', 'b.txt']) file_list.include_pattern('*') file_list.sort() assert file_list.files == ['a.py', 'b.txt']
def prepare_setuptools(self): dist = Distribution() dist.script_name = 'mu.py' self.sdist = setuptools.command.sdist.sdist(dist) self.sdist.filelist = FileList() self.build = build_py(dist) self.build.packages = [] packages = self.config_data.get('packages') if packages is not None: self.build.packages.extend(find_packages(**packages)) self.build.py_modules = self.config_data.get('py_modules', [])
class ManifestMaker(_ManifestMaker): """Generate a Manifest using Cythonized source files """ def run(self): """Run the command. """ self.filelist = FileList() if not os.path.exists(self.manifest): self.write_manifest() self.filelist.findall() self.add_defaults() if os.path.exists(self.template): self.read_template() self.prune_file_list() # Replace python with c files self.update_sources() self.filelist.sort() self.filelist.remove_duplicates() self.write_manifest() def update_sources(self): """Update the Python files with the C files using cdist options. """ cdist_cmd = self.get_finalized_command('cdist') old_filelist, self.filelist.files = self.filelist.files[:], [] for filename in old_filelist: for pattern in cdist_cmd.exclude_sources: if globstar_match(filename, pattern): self.filelist.append(filename) break else: root, ext = os.path.splitext(filename) if ext[1:] in cdist_cmd.source_extensions: original = filename filename = root + '.c' cdist_cmd.python_sources[original] = filename self.filelist.append(filename)
def test_prune(self): l = make_local_path # prune file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')] file_list.process_template_line('prune d') assert file_list.files == ['a.py', l('f/f.py')] self.assertNoWarnings() file_list.process_template_line('prune e') assert file_list.files == ['a.py', l('f/f.py')] self.assertWarnings()
def test_global_exclude(self): l = make_local_path # global-exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('global-exclude *.py') assert file_list.files == ['b.txt'] self.assertNoWarnings() file_list.process_template_line('global-exclude *.rb') assert file_list.files == ['b.txt'] self.assertWarnings()
def test_recursive_exclude(self): l = make_local_path # recursive-exclude file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')] file_list.process_template_line('recursive-exclude d *.py') assert file_list.files == ['a.py', l('d/c.txt')] self.assertNoWarnings() file_list.process_template_line('recursive-exclude e *.py') assert file_list.files == ['a.py', l('d/c.txt')] self.assertWarnings()
def _get_included_files(package_masks): old_threshold = set_threshold(ERROR) file_list = FileList() file_list.extend(_iter_package_modules(package_masks)) manifest = TextFile('MANIFEST.in', strip_comments=1, skip_blanks=1, join_lines=1, lstrip_ws=1, rstrip_ws=1, collapse_join=1) for line in manifest.readlines(): file_list.process_template_line(line) set_threshold(old_threshold) return file_list.files
def test_include(self): l = make_local_path # include file_list = FileList() self.make_files(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('include *.py') assert file_list.files == ['a.py'] self.assertNoWarnings() file_list.process_template_line('include *.rb') assert file_list.files == ['a.py'] self.assertWarnings()
def test_exclude(self): ml = make_local_path # exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', ml('d/c.py')] file_list.process_template_line('exclude *.py') file_list.sort() assert file_list.files == ['b.txt', ml('d/c.py')] self.assertNoWarnings() file_list.process_template_line('exclude *.rb') file_list.sort() assert file_list.files == ['b.txt', ml('d/c.py')] self.assertWarnings()
def test_exclude_pattern(self): # return False if no match file_list = FileList() assert not file_list.exclude_pattern('*.py') # return True if files match file_list = FileList() file_list.files = ['a.py', 'b.py'] assert file_list.exclude_pattern('*.py') # test excludes file_list = FileList() file_list.files = ['a.py', 'a.txt'] file_list.exclude_pattern('*.py') file_list.sort() assert file_list.files == ['a.txt']
def test_process_template(self): l = make_local_path # invalid lines file_list = FileList() for action in ('include', 'exclude', 'global-include', 'global-exclude', 'recursive-include', 'recursive-exclude', 'graft', 'prune', 'blarg'): try: file_list.process_template_line(action) except DistutilsTemplateError: pass except Exception: assert False, "Incorrect error thrown" else: assert False, "Should have thrown an error" # include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('include *.py') assert file_list.files == ['a.py'] self.assertNoWarnings() file_list.process_template_line('include *.rb') assert file_list.files == ['a.py'] self.assertWarnings() # exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('exclude *.py') assert file_list.files == ['b.txt', l('d/c.py')] self.assertNoWarnings() file_list.process_template_line('exclude *.rb') assert file_list.files == ['b.txt', l('d/c.py')] self.assertWarnings() # global-include file_list = FileList() file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) file_list.process_template_line('global-include *.py') assert file_list.files == ['a.py', l('d/c.py')] self.assertNoWarnings() file_list.process_template_line('global-include *.rb') assert file_list.files == ['a.py', l('d/c.py')] self.assertWarnings() # global-exclude file_list = FileList() file_list.files = ['a.py', 'b.txt', l('d/c.py')] file_list.process_template_line('global-exclude *.py') assert file_list.files == ['b.txt'] self.assertNoWarnings() file_list.process_template_line('global-exclude *.rb') assert file_list.files == ['b.txt'] self.assertWarnings() # recursive-include file_list = FileList() file_list.set_allfiles(['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')]) file_list.process_template_line('recursive-include d *.py') assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertNoWarnings() file_list.process_template_line('recursive-include e *.py') assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertWarnings() # recursive-exclude file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')] file_list.process_template_line('recursive-exclude d *.py') assert file_list.files == ['a.py', l('d/c.txt')] self.assertNoWarnings() file_list.process_template_line('recursive-exclude e *.py') assert file_list.files == ['a.py', l('d/c.txt')] self.assertWarnings() # graft file_list = FileList() file_list.set_allfiles(['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')]) file_list.process_template_line('graft d') assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertNoWarnings() file_list.process_template_line('graft e') assert file_list.files == [l('d/b.py'), l('d/d/e.py')] self.assertWarnings() # prune file_list = FileList() file_list.files = ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')] file_list.process_template_line('prune d') assert file_list.files == ['a.py', l('f/f.py')] self.assertNoWarnings() file_list.process_template_line('prune e') assert file_list.files == ['a.py', l('f/f.py')] self.assertWarnings()