109 lines
3.1 KiB
Python
109 lines
3.1 KiB
Python
|
import py
|
||
|
import os
|
||
|
from py.__.io import terminalwriter
|
||
|
|
||
|
def test_terminalwriter_computes_width():
|
||
|
py.magic.patch(terminalwriter, 'get_terminal_width', lambda: 42)
|
||
|
try:
|
||
|
tw = py.io.TerminalWriter()
|
||
|
assert tw.fullwidth == 42
|
||
|
finally:
|
||
|
py.magic.revert(terminalwriter, 'get_terminal_width')
|
||
|
|
||
|
def test_terminalwriter_defaultwidth_80():
|
||
|
py.magic.patch(terminalwriter, '_getdimensions', lambda: 0/0)
|
||
|
try:
|
||
|
tw = py.io.TerminalWriter()
|
||
|
assert tw.fullwidth == os.environ.get('COLUMNS', 80)-1
|
||
|
finally:
|
||
|
py.magic.revert(terminalwriter, '_getdimensions')
|
||
|
|
||
|
|
||
|
def test_terminalwriter_default_instantiation():
|
||
|
tw = py.io.TerminalWriter(stringio=True)
|
||
|
assert hasattr(tw, 'stringio')
|
||
|
|
||
|
class BaseTests:
|
||
|
def test_line(self):
|
||
|
tw = self.getwriter()
|
||
|
tw.line("hello")
|
||
|
l = self.getlines()
|
||
|
assert len(l) == 1
|
||
|
assert l[0] == "hello\n"
|
||
|
|
||
|
def test_sep_no_title(self):
|
||
|
tw = self.getwriter()
|
||
|
tw.sep("-", fullwidth=60)
|
||
|
l = self.getlines()
|
||
|
assert len(l) == 1
|
||
|
assert l[0] == "-" * 60 + "\n"
|
||
|
|
||
|
def test_sep_with_title(self):
|
||
|
tw = self.getwriter()
|
||
|
tw.sep("-", "hello", fullwidth=60)
|
||
|
l = self.getlines()
|
||
|
assert len(l) == 1
|
||
|
assert l[0] == "-" * 26 + " hello " + "-" * 27 + "\n"
|
||
|
|
||
|
def test__escaped(self):
|
||
|
tw = self.getwriter()
|
||
|
text2 = tw._escaped("hello", (31))
|
||
|
assert text2.find("hello") != -1
|
||
|
|
||
|
def test_markup(self):
|
||
|
tw = self.getwriter()
|
||
|
for bold in (True, False):
|
||
|
for color in ("red", "green"):
|
||
|
text2 = tw.markup("hello", **{color: True, 'bold': bold})
|
||
|
assert text2.find("hello") != -1
|
||
|
py.test.raises(ValueError, "tw.markup('x', wronkw=3)")
|
||
|
py.test.raises(ValueError, "tw.markup('x', wronkw=0)")
|
||
|
|
||
|
def test_line_write_markup(self):
|
||
|
tw = self.getwriter()
|
||
|
tw.hasmarkup = True
|
||
|
tw.line("x", bold=True)
|
||
|
tw.write("x\n", red=True)
|
||
|
l = self.getlines()
|
||
|
assert len(l[0]) > 2, l
|
||
|
assert len(l[1]) > 2, l
|
||
|
|
||
|
def test_attr_fullwidth(self):
|
||
|
tw = self.getwriter()
|
||
|
tw.sep("-", "hello", fullwidth=70)
|
||
|
tw.fullwidth = 70
|
||
|
tw.sep("-", "hello")
|
||
|
l = self.getlines()
|
||
|
assert len(l[0]) == len(l[1])
|
||
|
|
||
|
class TestStringIO(BaseTests):
|
||
|
def getwriter(self):
|
||
|
self.tw = py.io.TerminalWriter(stringio=True)
|
||
|
return self.tw
|
||
|
def getlines(self):
|
||
|
io = self.tw.stringio
|
||
|
io.seek(0)
|
||
|
return io.readlines()
|
||
|
|
||
|
class TestCallableFile(BaseTests):
|
||
|
def getwriter(self):
|
||
|
self.writes = []
|
||
|
return py.io.TerminalWriter(self.writes.append)
|
||
|
|
||
|
def getlines(self):
|
||
|
io = py.std.cStringIO.StringIO()
|
||
|
io.write("".join(self.writes))
|
||
|
io.seek(0)
|
||
|
return io.readlines()
|
||
|
|
||
|
def test_attr_hasmarkup():
|
||
|
tw = py.io.TerminalWriter(stringio=True)
|
||
|
assert not tw.hasmarkup
|
||
|
tw.hasmarkup = True
|
||
|
tw.line("hello", bold=True)
|
||
|
s = tw.stringio.getvalue()
|
||
|
assert len(s) > len("hello")
|
||
|
|
||
|
|
||
|
|