'Summarize the result of the test run.
The summary includes a report of all of the errors, todos, skips and
so forth that occurred during the run. It also includes the number of
tests that were run and how long it took to run them (not including
load time).
Expects that C{_printErrors}, C{_writeln}, C{_write}, C{_printSummary}
and C{_separator} are all implemented.'

def done(self):

    if (self._publisher is not None):
        self._publisher.removeObserver(self._observeWarnings)
    self._printErrors()
    self._writeln(self._separator)
    if (self._startTime is not None):
        self._writeln('Ran    %d    tests    in    %.3fs', self.testsRun, (time.time() - self._startTime))
    self._write('\n')
    self._printSummary()
