From d685855b6dda85a613d1bcf3e992e2bab10ac7f2 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Fri, 13 Nov 2015 23:16:30 +0000 Subject: fixes for printtree, tox ini changes --- fs/tests/__init__.py | 6 ++++++ fs/utils.py | 29 ++++++++++++++++------------- tox.ini | 41 +++++++++++------------------------------ 3 files changed, 33 insertions(+), 43 deletions(-) diff --git a/fs/tests/__init__.py b/fs/tests/__init__.py index 7af1476..2d9625d 100644 --- a/fs/tests/__init__.py +++ b/fs/tests/__init__.py @@ -63,6 +63,12 @@ class FSTestCases(object): self.assertEqual(self.fs.validatepath('foo/bar'), None) self.assert_(self.fs.isvalidpath('foo/bar')) + def test_tree(self): + """Test tree print""" + self.fs.makedir('foo') + self.fs.createfile('foo/bar.txt') + self.fs.tree() + def test_meta(self): """Checks getmeta / hasmeta are functioning""" # getmeta / hasmeta are hard to test, since there is no way to validate diff --git a/fs/utils.py b/fs/utils.py index 2326bca..52922df 100644 --- a/fs/utils.py +++ b/fs/utils.py @@ -533,9 +533,9 @@ def print_fs(fs, """ if file_out is None: - file_out = sys.stdout.buffer if PY3 else sys.stdout + file_out = sys.stdout - file_encoding = getattr(file_out, 'encoding', 'utf-8') or 'utf-8' + file_encoding = getattr(file_out, 'encoding', u'utf-8') or u'utf-8' file_encoding = file_encoding.upper() if terminal_colors is None: @@ -545,28 +545,31 @@ def print_fs(fs, terminal_colors = hasattr(file_out, 'isatty') and file_out.isatty() def write(line): - file_out.write(line.encode(file_encoding, 'replace') + b'\n') + if PY3: + file_out.write((line + u'\n')) + else: + file_out.write((line + u'\n').encode(file_encoding, 'replace')) def wrap_prefix(prefix): if not terminal_colors: return prefix - return '\x1b[32m%s\x1b[0m' % prefix + return u'\x1b[32m%s\x1b[0m' % prefix def wrap_dirname(dirname): if not terminal_colors: return dirname - return '\x1b[1;34m%s\x1b[0m' % dirname + return u'\x1b[1;34m%s\x1b[0m' % dirname def wrap_error(msg): if not terminal_colors: return msg - return '\x1b[31m%s\x1b[0m' % msg + return u'\x1b[31m%s\x1b[0m' % msg def wrap_filename(fname): if not terminal_colors: return fname - if fname.startswith('.'): - fname = '\x1b[33m%s\x1b[0m' % fname + if fname.startswith(u'.'): + fname = u'\x1b[33m%s\x1b[0m' % fname return fname dircount = [0] filecount = [0] @@ -577,10 +580,10 @@ def print_fs(fs, char_line = u'──' char_corner = u'╰' else: - char_vertline = '|' - char_newnode = '|' - char_line = '--' - char_corner = '`' + char_vertline = u'|' + char_newnode = u'|' + char_line = u'--' + char_corner = u'`' try: dirs = fs.listdir(path, dirs_only=True) @@ -592,7 +595,7 @@ def print_fs(fs, [(False, p) for p in files] ) except Exception, e: prefix = ''.join([(char_vertline + ' ', ' ')[last] for last in levels]) + ' ' - write(wrap_prefix(prefix[:-1] + ' ') + wrap_error("unable to retrieve directory list (%s) ..." % str(e))) + write(wrap_prefix(prefix[:-1] + ' ') + wrap_error(u"unable to retrieve directory list (%s) ..." % str(e))) return 0 if hide_dotfiles: diff --git a/tox.ini b/tox.ini index b7d5505..af8017f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,35 +1,16 @@ [tox] -envlist = py27,py34,py35,pypy +envlist = py26, py27, py33, py34, py35, pypy sitepackages = False [testenv] -deps = distribute - six - dexml - paramiko - boto - nose - mako - pyftpdlib +deps = + six + dexml + nose + py31,py32,py33,py34: winpdb + py26,py27: paramiko + py26,py27: boto + py26,py27: mako + py26,py27: pyftpdlib changedir=.tox -commands = nosetests fs.tests -v \ - [] - -[testenv:py34] -commands = nosetests fs.tests -v \ - [] -deps = distribute - six - dexml - nose - winpdb - -[testenv:py35] -commands = nosetests fs.tests -v \ - [] -deps = distribute - six - dexml - nose - winpdb - +commands = nosetests {posargs:-v fs.tests} -- cgit v1.2.1