~ubuntu-branches/debian/wheezy/quodlibet/wheezy

« back to all changes in this revision

Viewing changes to tests/__init__.py

  • Committer: Bazaar Package Importer
  • Author(s): Luca Falavigna
  • Date: 2009-01-30 23:55:34 UTC
  • mto: (18.1.1 squeeze) (2.1.9 sid)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20090130235534-45857nfsgobw4apc
Tags: upstream-2.0
ImportĀ upstreamĀ versionĀ 2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from __future__ import division
 
2
 
 
3
import glob
 
4
import os
 
5
import sys
 
6
import unittest
 
7
 
 
8
from unittest import TestCase
 
9
suites = []
 
10
add = suites.append
 
11
 
 
12
for name in glob.glob(os.path.join(os.path.dirname(__file__), "test_*.py")):
 
13
    module = __name__ + "." + os.path.basename(name)
 
14
    __import__(module[:-3], {}, {}, [])
 
15
 
 
16
class Result(unittest.TestResult):
 
17
 
 
18
    separator1 = '=' * 70
 
19
    separator2 = '-' * 70
 
20
 
 
21
    def addSuccess(self, test):
 
22
        unittest.TestResult.addSuccess(self, test)
 
23
        sys.stdout.write('.')
 
24
 
 
25
    def addError(self, test, err):
 
26
        unittest.TestResult.addError(self, test, err)
 
27
        sys.stdout.write('E')
 
28
 
 
29
    def addFailure(self, test, err):
 
30
        unittest.TestResult.addFailure(self, test, err)
 
31
        sys.stdout.write('F')
 
32
 
 
33
    def printErrors(self):
 
34
        succ = self.testsRun - (len(self.errors) + len(self.failures))
 
35
        v = "%3d" % succ
 
36
        count = 50 - self.testsRun
 
37
        sys.stdout.write((" " * count) + v + "\n")
 
38
        self.printErrorList('ERROR', self.errors)
 
39
        self.printErrorList('FAIL', self.failures)
 
40
 
 
41
    def printErrorList(self, flavour, errors):
 
42
        for test, err in errors:
 
43
            sys.stdout.write(self.separator1 + "\n")
 
44
            sys.stdout.write("%s: %s\n" % (flavour, str(test)))
 
45
            sys.stdout.write(self.separator2 + "\n")
 
46
            sys.stdout.write("%s\n" % err)
 
47
 
 
48
class Runner(object):
 
49
    def run(self, test):
 
50
        suite = unittest.makeSuite(test)
 
51
        pref = '%s (%d): ' % (test.__name__, len(suite._tests))
 
52
        print pref + " " * (25 - len(pref)),
 
53
        result = Result()
 
54
        suite(result)
 
55
        result.printErrors()
 
56
        return bool(result.failures + result.errors)
 
57
 
 
58
def unit(run=[], filter_func=None):
 
59
    import quodlibet.const
 
60
    quodlibet.const.CONFIG = os.path.join(os.getcwd(), "config.temp")
 
61
 
 
62
    runner = Runner()
 
63
    failures = False
 
64
    use_suites = filter(filter_func, suites)
 
65
    for test in use_suites:
 
66
        if (not run
 
67
            or test.__name__ in run
 
68
            or test.__module__[11:] in run):
 
69
            failures |= runner.run(test)
 
70
    try: os.remove(quodlibet.const.CONFIG)
 
71
    except EnvironmentError: pass
 
72
    return failures