提交 98669ceb 编写于 作者: B Behdad Esfahbod

Use groupby()

上级 c438a14b
...@@ -150,7 +150,8 @@ class DiffFilters: ...@@ -150,7 +150,8 @@ class DiffFilters:
@staticmethod @staticmethod
def filter_failures (f): def filter_failures (f):
for lines in DiffHelpers.separate_test_cases (f): for key, lines in DiffHelpers.separate_test_cases (f):
lines = list (lines)
if not DiffHelpers.test_passed (lines): if not DiffHelpers.test_passed (lines):
for l in lines: yield l for l in lines: yield l
...@@ -160,7 +161,7 @@ class DiffSinks: ...@@ -160,7 +161,7 @@ class DiffSinks:
def print_stat (f): def print_stat (f):
passed = 0 passed = 0
failed = 0 failed = 0
for lines in DiffHelpers.separate_test_cases (f): for key, lines in DiffHelpers.separate_test_cases (f):
if DiffHelpers.test_passed (lines): if DiffHelpers.test_passed (lines):
passed += 1 passed += 1
else: else:
...@@ -176,22 +177,11 @@ class DiffHelpers: ...@@ -176,22 +177,11 @@ class DiffHelpers:
have a colon character, groups them by identifier, have a colon character, groups them by identifier,
yielding lists of all lines with the same identifier.''' yielding lists of all lines with the same identifier.'''
acc = [] def identifier (l):
iden = None if ':' in l[1:]:
for l in f: return l[1:l.index (':')]
if ':' not in l: return l
if acc: yield acc return groupby (f, key=identifier)
acc = []
iden = None
yield [l]
continue
l_iden = l[1:l.index (':')]
if acc and iden != l_iden:
yield acc
acc = []
iden = l_iden
acc.append (l)
if acc: yield acc
@staticmethod @staticmethod
def test_passed (lines): def test_passed (lines):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册