def test_at_repo_root_with_subdir(self): self.create_git_file('root.txt') self.create_dir('subdir') self.create_git_file('subdir', 'entry.txt') self.assertEqual( set(self.gitlsfiles(self.directory)), set([posix(realpath('root.txt')), posix(realpath('subdir/entry.txt'))]))
def test_at_repo_subdir(self): self.create_git_file('root.txt') os.mkdir(join(self.directory, 'subdir')) self.create_git_file('subdir', 'entry.txt') self.assertEqual( set(self.gitlsfiles(join(self.directory, 'subdir'))), set([posix(realpath('root.txt')), posix(realpath('subdir/entry.txt'))]))
def test_directory_only_contains_another_directory(self): self.create_git_file('root.txt') self.create_dir('foo', 'bar') self.create_git_file('foo', 'bar', 'entry.txt') self.assertEqual( set(self.gitlsfiles()), set([posix(realpath('root.txt')), posix(realpath('foo/bar/entry.txt'))]))
def test_empty_dirname_in_subdir(self): self.create_git_file('root.txt') os.mkdir(join(self.directory, 'subdir')) self.create_git_file('subdir', 'entry.txt') os.chdir(join(self.directory, 'subdir')) self.assertEqual( set(self.gitlsfiles()), set([posix(realpath('../root.txt')), posix(realpath('../subdir/entry.txt'))]))
def test_at_repo_root_with_subdir(self): self.create_git_file('root.txt') self.create_dir('subdir') self.create_git_file('subdir', 'entry.txt') self.assertEqual( set(self.gitlsfiles(self.directory)), set([ posix(realpath('root.txt')), posix(realpath('subdir/entry.txt')) ]))
def test_at_repo_subdir(self): self.create_git_file('root.txt') os.mkdir(join(self.directory, 'subdir')) self.create_git_file('subdir', 'entry.txt') self.assertEqual( set(self.gitlsfiles(join(self.directory, 'subdir'))), set([ posix(realpath('root.txt')), posix(realpath('subdir/entry.txt')) ]))
def test_empty_dirname_in_subdir(self): self.create_git_file('root.txt') os.mkdir(join(self.directory, 'subdir')) self.create_git_file('subdir', 'entry.txt') os.chdir(join(self.directory, 'subdir')) self.assertEqual( set(self.gitlsfiles()), set([ posix(realpath('../root.txt')), posix(realpath('../subdir/entry.txt')) ]))
def listfiles(dirname=''): cwd = realpath(dirname or os.curdir) prefix_length = len(cwd) + 1 git_files = gitlsfiles(dirname) git_dirs = _gitlsdirs(git_files, prefix_length) if sys.version_info >= (2, 6): walker = os.walk(cwd, followlinks=True) else: walker = os.walk(cwd) for root, dirs, files in walker: dirs[:] = [x for x in dirs if posix(realpath(join(root, x))) in git_dirs] for file in files: filename = join(root, file) if posix(realpath(filename)) in git_files: yield filename[prefix_length:]
def listfiles(dirname=''): git_files = gitlsfiles(dirname) if not git_files: return cwd = realpath(dirname or os.curdir) prefix_length = len(cwd) + 1 git_dirs = _gitlsdirs(git_files, prefix_length) if sys.version_info >= (2, 6): walker = os.walk(cwd, followlinks=True) else: walker = os.walk(cwd) for root, dirs, files in walker: dirs[:] = [ x for x in dirs if posix(realpath(join(root, x))) in git_dirs ] for file in files: filename = join(root, file) if posix(realpath(filename)) in git_files: yield filename[prefix_length:]
def test_nonascii_filename(self): filename = 'héhé.html' # HFS Plus uses decomposed UTF-8 if sys.platform == 'darwin': filename = decompose(filename) self.create_git_file(filename) self.assertEqual( [fn for fn in os.listdir(self.directory) if fn[0] != '.'], [filename]) self.assertEqual(set(self.gitlsfiles(self.directory)), set([posix(realpath(filename))]))
def listfiles(dirname=''): git_files = gitlsfiles(dirname) cwd = realpath(dirname or os.curdir) prefix_length = len(cwd) + 1 if sys.version_info >= (2, 6): walker = os.walk(cwd, followlinks=True) else: walker = os.walk(cwd) for root, dirs, files in walker: for file in files: filename = join(root, file) if posix(realpath(filename)) in git_files: yield filename[prefix_length:]
def test_nonascii_filename(self): filename = 'héhé.html' # HFS Plus uses decomposed UTF-8 if sys.platform == 'darwin': filename = decompose(filename) self.create_git_file(filename) self.assertEqual( [fn for fn in os.listdir(self.directory) if fn[0] != '.'], [filename]) self.assertEqual( set(self.gitlsfiles(self.directory)), set([posix(realpath(filename))]))
def listfiles(dirname=""): git_files = gitlsfiles(dirname) cwd = realpath(dirname or os.curdir) prefix_length = len(cwd) + 1 if sys.version_info >= (2, 6): walker = os.walk(cwd, followlinks=True) else: walker = os.walk(cwd) for root, dirs, files in walker: for file in files: filename = join(root, file) if posix(realpath(filename)) in git_files: yield filename[prefix_length:]
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)))]))
def test_latin1_filename(self): if sys.version_info >= (3, ): filename = 'héhé.html'.encode('latin-1') else: filename = 'h\xe9h\xe9.html' # HFS Plus quotes unknown bytes if sys.platform == 'darwin': filename = hfs_quote(filename) # 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_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)))]))
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)))]))
def test_latin1_filename(self): if sys.version_info >= (3,): filename = 'héhé.html'.encode('latin-1') else: filename = 'h\xe9h\xe9.html' # HFS Plus quotes unknown bytes if sys.platform == 'darwin': filename = hfs_quote(filename) # 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_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)))]))
def test_at_repo_root(self): self.create_git_file('root.txt') self.assertEqual( set(self.gitlsfiles(self.directory)), set([posix(realpath('root.txt'))]))
def test_empty_dirname(self): self.create_git_file('root.txt') self.assertEqual( set(self.gitlsfiles()), set([posix(realpath('root.txt'))]))
def test_at_repo_root(self): self.create_git_file('root.txt') self.assertEqual(set(self.gitlsfiles(self.directory)), set([posix(realpath('root.txt'))]))
def test_directory_only_contains_another_directory(self): self.create_dir('foo/bar') self.create_git_file('foo/bar/root.txt') self.assertEqual( set(self.gitlsfiles()), set([posix(realpath(join('foo', 'bar', 'root.txt')))]))
def test_empty_dirname(self): self.create_git_file('root.txt') self.assertEqual(set(self.gitlsfiles()), set([posix(realpath('root.txt'))]))