Ignore Broken Pipe errors
diff --git a/test/shaping/hb_test_tools.py b/test/shaping/hb_test_tools.py
index f303256..42b8bac 100644
--- a/test/shaping/hb_test_tools.py
+++ b/test/shaping/hb_test_tools.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
-import sys, os, re, difflib, unicodedata
+import sys, os, re, difflib, unicodedata, errno
class Colors:
class Null:
@@ -72,17 +72,22 @@
@staticmethod
def diff_files (f1, f2, colors=Colors.Null):
- for (l1,l2) in zip (f1, f2):
- if l1 == l2:
- sys.stdout.writelines ([" ", l1])
- continue
+ try:
+ for (l1,l2) in zip (f1, f2):
+ if l1 == l2:
+ sys.stdout.writelines ([" ", l1])
+ continue
- sys.stdout.writelines (FancyDiffer.diff_lines (l1, l2, colors))
- # print out residues
- for l in f1:
- sys.stdout.writelines (["-", colors.red, l1, colors.end])
- for l in f1:
- sys.stdout.writelines (["-", colors.green, l1, colors.end])
+ sys.stdout.writelines (FancyDiffer.diff_lines (l1, l2, colors))
+ # print out residues
+ for l in f1:
+ sys.stdout.writelines (["-", colors.red, l1, colors.end])
+ for l in f1:
+ sys.stdout.writelines (["-", colors.green, l1, colors.end])
+ except IOError as e:
+ if e.errno != errno.EPIPE:
+ print >> sys.stderr, "%s: %s" (sys.argv[0], e.strerror)
+ sys.exit (1)
class DiffFilters:
@@ -112,8 +117,13 @@
print "Usage: %s %s..." % (sys.argv[0], mnemonic)
sys.exit (1)
- for s in sys.argv[1:]:
- callback (FileHelpers.open_file_or_stdin (s))
+ try:
+ for s in sys.argv[1:]:
+ callback (FileHelpers.open_file_or_stdin (s))
+ except IOError as e:
+ if e.errno != errno.EPIPE:
+ print >> sys.stderr, "%s: %s" (sys.argv[0], e.strerror)
+ sys.exit (1)
@staticmethod
def process_multiple_args (callback, mnemonic):
@@ -122,8 +132,13 @@
print "Usage: %s %s..." % (sys.argv[0], mnemonic)
sys.exit (1)
- for s in sys.argv[1:]:
- callback (s)
+ try:
+ for s in sys.argv[1:]:
+ callback (s)
+ except IOError as e:
+ if e.errno != errno.EPIPE:
+ print >> sys.stderr, "%s: %s" (sys.argv[0], e.strerror)
+ sys.exit (1)
@staticmethod
def filter_multiple_strings_or_stdin (callback, mnemonic, \
@@ -135,18 +150,23 @@
% (sys.argv[0], mnemonic, sys.argv[0])
sys.exit (1)
- if '--stdin' in sys.argv:
- sys.argv.remove ('--stdin')
- while (1):
- line = sys.stdin.readline ()
- if not len (line):
- break
- print callback (line)
- else:
- args = sys.argv[1:]
- if concat_separator != False:
- args = [concat_separator.join (args)]
- print separator.join (callback (x) for x in (args))
+ try:
+ if '--stdin' in sys.argv:
+ sys.argv.remove ('--stdin')
+ while (1):
+ line = sys.stdin.readline ()
+ if not len (line):
+ break
+ print callback (line)
+ else:
+ args = sys.argv[1:]
+ if concat_separator != False:
+ args = [concat_separator.join (args)]
+ print separator.join (callback (x) for x in (args))
+ except IOError as e:
+ if e.errno != errno.EPIPE:
+ print >> sys.stderr, "%s: %s" (sys.argv[0], e.strerror)
+ sys.exit (1)
class Unicode: