提交 ad34e39a 编写于 作者: B Behdad Esfahbod

Make test tools interactive

By bypassing readlines() buffering.
上级 91540a7d
......@@ -25,6 +25,10 @@ class Colors:
else:
return Colors.Null
@staticmethod
def Default (argv = []):
return Colors.ANSI
class FancyDiffer:
......@@ -80,6 +84,7 @@ class FancyDiffer:
for l in f1:
sys.stdout.writelines (["-", colors.green, l1, colors.end])
class DiffFilters:
@staticmethod
......@@ -89,6 +94,15 @@ class DiffFilters:
sys.stdout.writelines (l)
class ShapeFilters:
@staticmethod
def filter_failures (f):
for l in f:
if l[0] in '-+':
sys.stdout.writelines (l)
class UtilMains:
@staticmethod
......@@ -99,7 +113,7 @@ class UtilMains:
sys.exit (1)
for s in sys.argv[1:]:
callback (open_file_or_stdin (s))
callback (FileHelpers.open_file_or_stdin (s))
@staticmethod
def filter_multiple_strings_or_stdin (callback, string_mnemonic, \
......@@ -113,7 +127,10 @@ class UtilMains:
if '--stdin' in sys.argv:
sys.argv.remove ('--stdin')
for line in sys.stdin.readlines ():
while (1):
line = sys.stdin.readline ()
if not len (line):
break
print callback (line)
else:
args = sys.argv[1:]
......@@ -171,10 +188,14 @@ class Unicode:
s = [unichr (int (x, 16)) for x in re.split ('[, \n]', s) if len (x)]
return ' + '.join (Unicode.pretty_name (x) for x in s)
def open_file_or_stdin (f):
if f == '-':
return sys.stdin
return file (f)
class FileHelprs:
@staticmethod
def open_file_or_stdin (f):
if f == '-':
return sys.stdin
return file (f)
if __name__ == '__main__':
pass
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册