@throttle(1 / 25)
    def update_status(self):
        #self.logger.debug(' |- updating status')
        if self.result['total'] > 0:
            parts = ['{executed}/{total} {status}']
        elif self.result['executed'] > 0:
            parts = ['{executed}/? {status}']
        else:
            parts = ['{status}']

        for status in ('passed', 'failed', 'missing', 'skipped', 'todo'):
            if self.result[status] > 0:
                parts.append('{{{status}}} {status}'.format(status=status))

        spinner = settings.get('progress_spinner', '-\|/')
        ticks = int((time.time() - self.start_time) * 5)

        message = '[ ' + ' | '.join(parts) + ' ]'
        if self.result['status'] == 'running':
            message = spinner[ticks % len(spinner)] + ' ' + message

        self.view.set_status('Test Runner', message.format(
            status=self.result['status'],
            passed=self.result['passed'],
            failed=self.result['failed'],
            skipped=self.result['skipped'],
            todo=self.result['todo'],
            executed=self.result['executed'],
            missing=self.result['missing'],
            total=self.result['total'])
        )

        if self.is_alive():
            self.update_status()
dataset/ETHPy150Open accerqueira/sublime-test-runner/TestRunner.py/TestRunnerWorker.update_status/original