Example #1
0
    def test_latin1_filename(self):
        if sys.version_info >= (3,):
            filename = 'héhé.html'.encode('latin-1')
        else:
            filename = 'h\xe9h\xe9.html'

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3,):
            filename = filename.decode('latin-1')

        self.create_file(filename)

        # HFS Plus quotes unknown bytes
        if sys.platform == 'darwin':
            filename = hfs_quote(filename)

        self.add_file(filename)

        self.assertEqual(
                [fn for fn in os.listdir(os.curdir) if fn[0] != '.'],
                [fsdecode(filename)])

        self.assertEqual(
                set(self.listfiles()),
                set([fsdecode(filename)]))
Example #2
0
    def test_utf8_filename(self):
        if sys.version_info >= (3, ):
            filename = 'héhé.html'.encode('utf-8')
        else:
            filename = 'héhé.html'

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3, ):
            filename = filename.decode('utf-8')

        self.create_file(filename)

        # HFS Plus uses decomposed UTF-8
        if sys.platform == 'darwin':
            filename = decompose(filename)

        self.add_file(filename)

        self.assertEqual([fn for fn in os.listdir(os.curdir) if fn[0] != '.'],
                         [fsdecode(filename)])

        # git ls-files returns composed UTF-8
        if sys.platform == 'darwin':
            filename = compose(filename)

        self.assertEqual(set(self.listfiles()), set([fsdecode(filename)]))
Example #3
0
    def test_utf8_filename(self):
        if sys.version_info >= (3,):
            filename = 'héhé.html'.encode('utf-8')
        else:
            filename = 'héhé.html'

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3,):
            filename = filename.decode('utf-8')

        self.create_file(filename)

        # HFS Plus uses decomposed UTF-8
        if sys.platform == 'darwin':
            filename = decompose(filename)

        self.add_file(filename)

        self.assertEqual(
                [fn for fn in os.listdir(os.curdir) if fn[0] != '.'],
                [fsdecode(filename)])

        # git ls-files returns composed UTF-8
        if sys.platform == 'darwin':
            filename = compose(filename)

        self.assertEqual(
                set(self.listfiles()),
                set([fsdecode(filename)]))
Example #4
0
def listfiles(dirname=''):
    # NB: Passing the '-z' option to 'git ls-files' below returns the
    # output as a blob of null-terminated filenames without canonical-
    # ization or use of double-quoting.
    #
    # So we'll get back e.g.:
    #
    # 'pyramid/tests/fixtures/static/h\xc3\xa9h\xc3\xa9.html'
    #
    # instead of:
    #
    # '"pyramid/tests/fixtures/static/h\\303\\251h\\303\\251.html"'
    #
    # for each file.
    try:
        filenames = check_output(['git', 'ls-files', '-z'],
                                 cwd=dirname or None,
                                 stderr=PIPE)
    except (CalledProcessError, OSError):
        # Setuptools mandates we fail silently
        return

    for filename in filenames.split(b('\x00')):
        if filename:
            if sys.platform == 'win32':
                yield ntfsdecode(filename)
            else:
                yield fsdecode(filename)
Example #5
0
def listfiles(dirname=''):
    # NB: Passing the '-z' option to 'git ls-files' below returns the
    # output as a blob of null-terminated filenames without canonical-
    # ization or use of double-quoting.
    #
    # So we'll get back e.g.:
    #
    # 'pyramid/tests/fixtures/static/h\xc3\xa9h\xc3\xa9.html'
    #
    # instead of:
    #
    # '"pyramid/tests/fixtures/static/h\\303\\251h\\303\\251.html"'
    #
    # for each file.
    try:
        filenames = check_output(
            ['git', 'ls-files', '-z'], cwd=dirname or None, stderr=PIPE)
    except (CalledProcessError, OSError):
        # Setuptools mandates we fail silently
        return

    for filename in filenames.split(b('\x00')):
        if filename:
            if sys.platform == 'win32':
                yield ntfsdecode(filename)
            else:
                yield fsdecode(filename)
Example #6
0
    def test_latin1_filename(self):
        if sys.version_info >= (3, ):
            filename = 'héhé.html'.encode('latin-1')
        else:
            filename = 'h\xe9h\xe9.html'

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3, ):
            filename = filename.decode('latin-1')

        self.create_file(filename)

        # HFS Plus quotes unknown bytes
        if sys.platform == 'darwin':
            filename = hfs_quote(filename)

        self.add_file(filename)

        self.assertEqual([fn for fn in os.listdir(os.curdir) if fn[0] != '.'],
                         [fsdecode(filename)])

        self.assertEqual(set(self.listfiles()), set([fsdecode(filename)]))
Example #7
0
    def test_utf8_filename(self):
        if sys.version_info >= (3, ):
            filename = 'héhé.html'.encode('utf-8')
        else:
            filename = 'héhé.html'

        # HFS Plus uses decomposed UTF-8
        if sys.platform == 'darwin':
            filename = decompose(filename)

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3, ):
            filename = filename.decode('utf-8')

        self.create_git_file(filename)

        self.assertEqual(
            [fn for fn in os.listdir(self.directory) if fn[0] != '.'],
            [fsdecode(filename)])

        self.assertEqual(set(self.gitlsfiles(self.directory)),
                         set([posix(realpath(fsdecode(filename)))]))
Example #8
0
    def test_utf8_filename(self):
        if sys.version_info >= (3,):
            filename = 'héhé.html'.encode('utf-8')
        else:
            filename = 'héhé.html'

        # HFS Plus uses decomposed UTF-8
        if sys.platform == 'darwin':
            filename = decompose(filename)

        # Windows does not like byte filenames under Python 3
        if sys.platform == 'win32' and sys.version_info >= (3,):
            filename = filename.decode('utf-8')

        self.create_git_file(filename)

        self.assertEqual(
                [fn for fn in os.listdir(self.directory) if fn[0] != '.'],
                [fsdecode(filename)])

        self.assertEqual(
                set(self.gitlsfiles(self.directory)),
                set([posix(realpath(fsdecode(filename)))]))
Example #9
0
def gitlsfiles(dirname=''):
    # NB: Passing the '-z' option to 'git ls-files' below returns the
    # output as a blob of null-terminated filenames without canonical-
    # ization or use of double-quoting.
    #
    # So we'll get back e.g.:
    #
    # 'pyramid/tests/fixtures/static/h\xc3\xa9h\xc3\xa9.html'
    #
    # instead of:
    #
    # '"pyramid/tests/fixtures/static/h\\303\\251h\\303\\251.html"'
    #
    # for each file.
    res = set()

    try:
        topdir = check_output(['git', 'rev-parse', '--show-toplevel'],
                              cwd=dirname or None,
                              stderr=PIPE).strip()

        if sys.platform == 'win32':
            cwd = ntfsdecode(topdir)
        else:
            cwd = topdir

        filenames = check_output(['git', 'ls-files', '-z'],
                                 cwd=cwd,
                                 stderr=PIPE)
    except (CalledProcessError, OSError):
        # Setuptools mandates we fail silently
        return res

    for filename in filenames.split(b('\x00')):
        if filename:
            filename = posixpath.join(topdir, filename)
            if sys.platform == 'darwin':
                filename = hfs_quote(filename)
            if sys.platform == 'win32':
                filename = ntfsdecode(filename)
            else:
                filename = fsdecode(filename)
            if sys.platform == 'darwin':
                filename = decompose(filename)
            res.add(filename)
    return res
Example #10
0
def gitlsfiles(dirname=''):
    # NB: Passing the '-z' option to 'git ls-files' below returns the
    # output as a blob of null-terminated filenames without canonical-
    # ization or use of double-quoting.
    #
    # So we'll get back e.g.:
    #
    # 'pyramid/tests/fixtures/static/h\xc3\xa9h\xc3\xa9.html'
    #
    # instead of:
    #
    # '"pyramid/tests/fixtures/static/h\\303\\251h\\303\\251.html"'
    #
    # for each file.
    res = set()

    try:
        topdir = check_output(
            ['git', 'rev-parse', '--show-toplevel'], cwd=dirname or None,
            stderr=PIPE).strip()

        if sys.platform == 'win32':
            cwd = ntfsdecode(topdir)
        else:
            cwd = topdir

        filenames = check_output(
            ['git', 'ls-files', '-z'], cwd=cwd, stderr=PIPE)
    except (CalledProcessError, OSError):
        # Setuptools mandates we fail silently
        return res

    for filename in filenames.split(b('\x00')):
        if filename:
            filename = posixpath.join(topdir, filename)
            if sys.platform == 'darwin':
                filename = hfs_quote(filename)
            if sys.platform == 'win32':
                filename = ntfsdecode(filename)
            else:
                filename = fsdecode(filename)
            if sys.platform == 'darwin':
                filename = decompose(filename)
            res.add(filename)
    return res