Exemplo n.º 1
0
def test():
    """Runs the tests without code coverage"""
    tests = unittest.TestLoader().discover('project/tests', pattern='test*.py')
    result = unittest.TextTestRunner(verbosity=2).run(tests)
    if result.wasSuccessful():
        return 0
    sys.exit(result)
Exemplo n.º 2
0
    def run(self, test):
        "Run the given test case or test suite."
        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer
        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()
        stopTime = time.time()
        timeTaken = stopTime - startTime
        result.printErrors()
        if hasattr(result, 'separator2'):
            self.stream.writeln(result.separator2)
        run = result.testsRun
        self.stream.writeln("Ran %d test%s in %.3fs" %
                            (run, run != 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("FAILED")
            failed, errored = map(len, (result.failures, result.errors))
            if failed:
                infos.append("failures=%d" % failed)
            if errored:
                infos.append("errors=%d" % errored)
        else:
            self.stream.write("OK")
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            self.stream.writeln(" (%s)" % (", ".join(infos),))
        else:
            self.stream.write("\n")
        return result
Exemplo n.º 3
0
    def run(self, test):
        "Run the given test case or test suite."
        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer
        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()
        stopTime = time.time()
        timeTaken = stopTime - startTime
        run = result.testsRun
        self.log.info("Ran %d test%s in %.3fs",
                      run, run != 1 and "s" or "", timeTaken)

        expectedFails = unexpectedSuccesses = skipped = 0
        try:
            results = map(len, (result.expectedFailures,
                                result.unexpectedSuccesses,
                                result.skipped))
        except AttributeError:
            pass
        else:
            expectedFails, unexpectedSuccesses, skipped = results

        infos = []
        summary = StringIO()
        lvl = logging.INFO
        if not result.wasSuccessful():
            summary.write("FAILED")
            lvl = logging.ERROR
            failed, errored = map(len, (result.failures, result.errors))
            if failed:
                infos.append("failures=%d" % failed)
            if errored:
                infos.append("errors=%d" % errored)
        else:
            summary.write("OK")
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            summary.write(" (%s)" % (", ".join(infos),))
        self.log.log(lvl, summary.getvalue())
        return result
Exemplo n.º 4
0
    def _render_result(self, result, boot_time_taken, tests_time_taken):
        self._echo()

        if self.verbosity > 0:
            self._print_errors(result)

        if result.wasSuccessful():
            fg = 'green'
            outcome = 'SUCCESS'
        else:
            fg = 'red'
            outcome = 'FAILURE'

        if self.verbosity > 1:
            self._fill('=', fg=fg)
        self._echo(outcome, fg=fg, bold=True)

        counts = [('tests ran', result.testsRun)]

        display = {
            'expectedFailures': 'expected failures',
            'notImplemented': 'not implemented',
            'unexpectedSuccesses': 'unexpected successes',
        }

        for bit in [
                'failures', 'errors', 'expectedFailures', 'notImplemented',
                'unexpectedSuccesses', 'skipped'
        ]:
            count = len(getattr(result, bit))
            if count:
                counts.append((display.get(bit, bit), count))

        for bit, count in counts:
            self._echo(f'  {bit}: ', nl=False)
            self._echo(f'{count}', bold=True)

        self._echo()
        self._echo(f'Running times: ')
        if boot_time_taken:
            self._echo('  bootstrap: ', nl=False)
            self._echo(self._format_time(boot_time_taken), bold=True)

        self._echo('  tests: ', nl=False)
        self._echo(self._format_time(tests_time_taken), bold=True)

        if boot_time_taken:
            self._echo('  total: ', nl=False)
            self._echo(self._format_time(boot_time_taken + tests_time_taken),
                       bold=True)

        self._echo()

        return result
Exemplo n.º 5
0
    def run(self, test):
        "Run the given test case or test suite."
        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer
        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()
        stopTime = time.time()
        timeTaken = stopTime - startTime
        run = result.testsRun
        self.log.info("Ran %d test%s in %.3fs", run, run != 1 and "s" or "",
                      timeTaken)

        expectedFails = unexpectedSuccesses = skipped = 0
        try:
            results = map(len, (result.expectedFailures,
                                result.unexpectedSuccesses, result.skipped))
        except AttributeError:
            pass
        else:
            expectedFails, unexpectedSuccesses, skipped = results

        infos = []
        summary = StringIO()
        lvl = logging.INFO
        if not result.wasSuccessful():
            summary.write("FAILED")
            lvl = logging.ERROR
            failed, errored = map(len, (result.failures, result.errors))
            if failed:
                infos.append("failures=%d" % failed)
            if errored:
                infos.append("errors=%d" % errored)
        else:
            summary.write("OK")
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            summary.write(" (%s)" % (", ".join(infos), ))
        self.log.log(lvl, summary.getvalue())
        return result
Exemplo n.º 6
0
def cov():
    """Runs unit tests with coverage"""
    tests = unittest.TestLoader().discover('project/tests')
    result = unittest.TextTestRunner(verbosity=2).run(tests)
    if result.wasSuccessful():
        COV.stop()
        COV.save()
        print("Coverage summary:")
        COV.report()
        COV.html_report()
        COV.erase()
        return 0
    sys.exit(result)
Exemplo n.º 7
0
def tests():
    """ Runs the tests without code coverage """

    loader = unittest.defaultTestLoader
    suite = unittest.TestSuite()

    for test_module in loader.discover('core/tests', pattern='test*.py'):
        suite.addTest(test_module)

    result = unittest.TextTestRunner(verbosity=1).run(suite)

    if result.wasSuccessful():
        return 0
    return 1
Exemplo n.º 8
0
    def _render_result(self, result, boot_time_taken, tests_time_taken):
        self._echo()

        if self.verbosity > 0:
            self._print_errors(result)

        if result.wasSuccessful():
            fg = 'green'
            outcome = 'SUCCESS'
        else:
            fg = 'red'
            outcome = 'FAILURE'

        if self.verbosity > 1:
            self._fill('=', fg=fg)
        self._echo(outcome, fg=fg, bold=True)

        counts = [('tests ran', result.testsRun)]

        for bit in ['failures', 'errors', 'expectedFailures',
                    'unexpectedSuccesses', 'skipped']:
            count = len(getattr(result, bit))
            if count:
                counts.append((bit, count))

        for bit, count in counts:
            self._echo(f'  {bit}: ', nl=False)
            self._echo(f'{count}', bold=True)

        self._echo()
        self._echo(f'Running times: ')
        if boot_time_taken:
            self._echo('  bootstrap: ', nl=False)
            self._echo(self._format_time(boot_time_taken), bold=True)

        self._echo('  tests: ', nl=False)
        self._echo(self._format_time(tests_time_taken), bold=True)

        if boot_time_taken:
            self._echo('  total: ', nl=False)
            self._echo(self._format_time(boot_time_taken + tests_time_taken),
                       bold=True)

        self._echo()

        return result
Exemplo n.º 9
0
 def run(self, test):
     "Run the given test case or test suite."
     result = self._makeResult()
     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()
     stopTime = time.time()
     timeTaken = stopTime - startTime
     result.printErrors()
     self.stream.writeln(result.separator2)
     run = result.testsRun
     self.stream.writeln("Ran %d test%s in %.3fs" %
                         (run, run != 1 and "s" or "", timeTaken))
     self.stream.writeln()
     results = map(len, (result.expectedFailures,
                         result.unexpectedSuccesses, result.skipped))
     expectedFails, unexpectedSuccesses, skipped = results
     infos = []
     if not result.wasSuccessful():
         self.stream.write("FAILED")
         failed, errored = map(len, (result.failures, result.errors))
         if failed:
             infos.append("failures=%d" % failed)
         if errored:
             infos.append("errors=%d" % errored)
     else:
         self.stream.write("OK")
     if skipped:
         infos.append("skipped=%d" % skipped)
     if expectedFails:
         infos.append("expected failures=%d" % expectedFails)
     if unexpectedSuccesses:
         infos.append("unexpected successes=%d" % unexpectedSuccesses)
     if infos:
         self.stream.writeln(" (%s)" % (", ".join(infos), ))
     else:
         self.stream.write("\n")
     return result
Exemplo n.º 10
0
    def run(self, test):
        "Run the given test case or test suite."

        # Load the json file first, so a student can't overwrite it...
        with open('wsuvtest.json') as fin:
            config = json.load(fin)

        result = super(WSUVTextTestRunner, self).run(test)
        run = result.testsRun
        failed, errored = 0, 0
        if not result.wasSuccessful():
            failed, errored = len(result.failures), len(result.errors)
        pts = (run - failed -
               errored) * 1.0 * config['scores']['Correctness'] / run

        outstr = [
            "Total points %.1f out of %.1f" %
            (pts, config['scores']['Correctness']),
            '{"scores": {"Correctness": %.1f}}' % (pts)
        ]
        return "\n".join(outstr)
Exemplo n.º 11
0
    def run(self, test):
        """Run the given test case or test suite."""

        self.resultclass.number_of_tests = test.countTestCases()

        if self.verbosity >= 2:
            self.stream.writeln(colored('\nTesting:\n', attrs=['bold']))
        else:
            self.stream.writeln('Testing...')

        self._check_suites(test)

        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer

        with warnings.catch_warnings():
            if self.warnings:
                # if self.warnings is set, use it to filter all the warnings
                warnings.simplefilter(self.warnings)
                # if the filter is 'default' or 'always', special-case the
                # warnings from the deprecated unittest methods to show them
                # no more than once per module, because they can be fairly
                # noisy.  The -Wd and -Wa flags can be used to bypass this
                # only when self.warnings is None.
                if self.warnings in ['default', 'always']:
                    warnings.filterwarnings(
                        'module',
                        category=DeprecationWarning,
                        message='Please use assert\w+ instead.')

            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()
            stopTime = time.time()

        timeTaken = stopTime - startTime
        result.printErrors()

        run = result.testsRun

        details = {
            'success': result.wasSuccessful(),
            'failures': len(result.failures) + len(result.unexpectedSuccesses),
            'errors': len(result.errors),
            'skipped': len(result.skipped),
            'time': round(timeTaken, 3),
            'sum': run,

        }
        details['successes'] = run - (details['failures'] + details['errors'])
        result.printSummary(details)

        return result
Exemplo n.º 12
0
    def run(self, test):
        """Run the given test case or test suite."""

        self.resultclass.number_of_tests = test.countTestCases()

        if self.verbosity >= 2:
            self.stream.writeln(colored('\nTesting:\n', attrs=['bold']))
        else:
            self.stream.writeln('Testing...')

        self._check_suites(test)

        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer

        with warnings.catch_warnings():
            if self.warnings:
                # if self.warnings is set, use it to filter all the warnings
                warnings.simplefilter(self.warnings)
                # if the filter is 'default' or 'always', special-case the
                # warnings from the deprecated unittest methods to show them
                # no more than once per module, because they can be fairly
                # noisy.  The -Wd and -Wa flags can be used to bypass this
                # only when self.warnings is None.
                if self.warnings in ['default', 'always']:
                    warnings.filterwarnings(
                        'module',
                        category=DeprecationWarning,
                        message='Please use assert\w+ instead.')

            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()
            stopTime = time.time()

        timeTaken = stopTime - startTime
        result.printErrors()

        run = result.testsRun

        details = {
            'success': result.wasSuccessful(),
            'failures': len(result.failures) + len(result.unexpectedSuccesses),
            'errors': len(result.errors),
            'skipped': len(result.skipped),
            'time': round(timeTaken, 3),
            'sum': run,
        }
        details['successes'] = run - (details['failures'] + details['errors'])
        result.printSummary(details)

        return result
    def run(self, test):
        "Run the given test case or test suite."
        result = self._makeResult()
        result.failfast = self.failfast
        result.buffer = self.buffer

        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)
        run = result.testsRun
        self.stream.writeln("Ran %d test%s in %.3fs" %
                            (run, run != 1 and "s" or "", timeTaken))
        self.stream.writeln()

        expectedFails = unexpectedSuccesses = skipped = 0
        try:
            results = list(
                map(len, (result.expectedFailures, result.unexpectedSuccesses,
                          result.skipped)))
            expectedFails, unexpectedSuccesses, skipped = results
        except AttributeError:
            pass
        infos = []
        if not result.wasSuccessful():
            self.stream.write(SET_FAIL_OUTPUT + " FAILED " + RESET_OUTPUT)
            failed, errored = list(map(len, (result.failures, result.errors)))
            if failed:
                infos.append("%sfailures=%d%s" %
                             (SET_FAILURE_TEXT, failed, RESET_OUTPUT))
            if errored:
                infos.append("%serrors=%d%s" %
                             (SET_ERROR_TEXT, errored, RESET_OUTPUT))
        else:
            self.stream.write(SET_OK_OUTPUT + " OK " + RESET_OUTPUT)
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            self.stream.writeln(" (%s)" % (", ".join(infos), ))
        else:
            self.stream.write("\n")

        if result.slow_tests:
            self.stream.writeln("Slow tests: ")
        for test in result.slow_tests:
            self.stream.writeln("{0} : {1}".format(
                test['name'], result.format_time(test['elapsed'])))

        result.closeLogFiles()
        return result
Exemplo n.º 14
0
    def run(self, test):
        "Run the given test case or test suite."

        # convert test classes to Tango Test Suite compliant
        def convertToTango(test):
            try:
                iter(test)
            except TypeError:
                test.__class__.__bases__ = (TangoTestCase, )
            else:
                test.__class__ = TangoTestSuite
                for t in test:
                    convertToTango(t)

        convertToTango(test)

        result = self._makeResult()
        registerResult(result)
        result.failfast = self.failfast
        result.buffer = self.buffer
        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()
        stopTime = time.time()
        timeTaken = stopTime - startTime
        result.printErrors()
        if hasattr(result, 'separator2'):
            self.stream.writeln(result.separator2)
        run = result.testsRun
        self.stream.writeln("Ran %d test%s in %.3fs" %
                            (run, run != 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("FAILED")
            failed, errored = map(len, (result.failures, result.errors))
            if failed:
                infos.append("failures=%d" % failed)
            if errored:
                infos.append("errors=%d" % errored)
        else:
            self.stream.write("OK")
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            self.stream.writeln(" (%s)" % (", ".join(infos), ))
        else:
            self.stream.write("\n")
        return result
    def run(self, test):
        "Run the given test case or test suite."
        result = self._makeResult()
        result.failfast = self.failfast
        result.buffer = self.buffer

        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)
        run = result.testsRun
        self.stream.writeln("Ran %d test%s in %.3fs" %
                            (run, run != 1 and "s" or "", timeTaken))
        self.stream.writeln()

        expectedFails = unexpectedSuccesses = skipped = 0
        try:
            results = list(
                map(
                    len, (
                        result.expectedFailures,
                        result.unexpectedSuccesses,
                        result.skipped
                    )
                )
            )
            expectedFails, unexpectedSuccesses, skipped = results
        except AttributeError:
            pass
        infos = []
        if not result.wasSuccessful():
            self.stream.write(SET_FAIL_OUTPUT + " FAILED " + RESET_OUTPUT)
            failed, errored = list(map(len, (result.failures, result.errors)))
            if failed:
                infos.append("%sfailures=%d%s" % (SET_FAILURE_TEXT, failed, RESET_OUTPUT))
            if errored:
                infos.append("%serrors=%d%s" % (SET_ERROR_TEXT, errored, RESET_OUTPUT))
        else:
            self.stream.write(SET_OK_OUTPUT + " OK " + RESET_OUTPUT)
        if skipped:
            infos.append("skipped=%d" % skipped)
        if expectedFails:
            infos.append("expected failures=%d" % expectedFails)
        if unexpectedSuccesses:
            infos.append("unexpected successes=%d" % unexpectedSuccesses)
        if infos:
            self.stream.writeln(" (%s)" % (", ".join(infos),))
        else:
            self.stream.write("\n")

        if result.slow_tests:
            self.stream.writeln("Slow tests: ")
        for test in result.slow_tests:
            self.stream.writeln(
                "{0} : {1}".format(test['name'], result.format_time(test['elapsed']))
            )

        result.closeLogFiles()
        return result