def METHOD_NAME(self, test):
    "Run the given test case or test suite."
    result = self._makeResult()
    result.failfast = self.failfast
    result.buffer = self.buffer
    result.tb_locals = self.tb_locals
    registerResult(result)
    startTime = time.time()
    startTestRun = getattr(result, 'startTestRun', None)
    if startTestRun is not None:
        startTestRun()
    try:
        test(result)
    finally:
        stopTestRun = getattr(result, 'stopTestRun', None)
        if stopTestRun is not None:
            stopTestRun()
        else:
            result.printErrors()
    stopTime = time.time()
    timeTaken = stopTime - startTime
    if hasattr(result, 'separator2'):
        self.stream.writeln(result.separator2)
    METHOD_NAME = result.testsRun
    self.stream.writeln(u("Ran %d test%s in %.3fs") %
                        (METHOD_NAME, METHOD_NAME != 1 and "s" or "", timeTaken))
    self.stream.writeln()
    expectedFails = unexpectedSuccesses = skipped = 0
    try:
        results = map(len, (result.expectedFailures,
                            result.unexpectedSuccesses,
                            result.skipped))
    except AttributeError:
        pass
    else:
        expectedFails, unexpectedSuccesses, skipped = results
    infos = []
    if not result.wasSuccessful():
        self.stream.write(u("FAILED"))
        failed, errored = map(len, (result.failures, result.errors))
        if failed:
            infos.append(u("failures=%d") % failed)
        if errored:
            infos.append(u("errors=%d") % errored)
    else:
        self.stream.write(u("OK"))
    if skipped:
        infos.append(u("skipped=%d") % skipped)
    if expectedFails:
        infos.append(u("expected failures=%d") % expectedFails)
    if unexpectedSuccesses:
        infos.append(u("unexpected successes=%d") % unexpectedSuccesses)
    if infos:
        self.stream.writeln(u(" (%s)") % (u(", ").join(infos),))
    else:
        self.stream.write(u("\n"))
    return result