'Group tests together based on their results.
@param results: An iterable of tuples of two or more elements.  The
first element of each tuple is a test case.  The remaining
elements describe the outcome of that test case.
@param formatter: A callable which turns a test case result into a
string.  The elements after the first of the tuples in
C{results} will be passed as positional arguments to
C{formatter}.
@return: A C{list} of two-tuples.  The first element of each tuple
is a unique string describing one result from at least one of
the test cases in C{results}.  The second element is a list of
the test cases which had that result.'

def _groupResults(self, results, formatter):

    groups = OrderedDict()
    for content in results:
        case = content[0]
        outcome = content[1:]
        key = formatter(*outcome)
        groups.setdefault(key, []).append(case)
    return items(groups)
