예제 #1
0
    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
예제 #2
0
 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"
예제 #3
0
 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"
예제 #4
0
    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()
예제 #5
0
    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()
예제 #6
0
    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()
예제 #7
0
    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()
예제 #8
0
    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()
예제 #9
0
    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()
예제 #10
0
    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']
예제 #11
0
 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()
예제 #12
0
    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']
예제 #13
0
    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()
예제 #14
0
    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()
예제 #15
0
    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()
예제 #16
0
    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']
예제 #17
0
    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
예제 #18
0
    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', [])
예제 #19
0
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)
예제 #20
0
    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()
예제 #21
0
    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()
예제 #22
0
    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()
예제 #23
0
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
예제 #24
0
    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()
예제 #25
0
    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()
예제 #26
0
    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']
예제 #27
0
    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()