Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/setup.py
blob: 93471b5508623943ce0a7c2f5a2a0882b75903e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env python

from distutils.core import setup, Command
from os.path import splitext, basename, join as pjoin, walk
import os, sys
import glob
from unittest import TestLoader, TextTestRunner, TestSuite

class TestCommand(Command):
    user_options = [('coverage',
                     None,
                     'enable code coverage reporting'),
                     ('prefix=',
                     'p',
                     'set sugar installation prefix, for dependency loading'),]
    description = 'runs tests from the test directory'

    def initialize_options(self):
        self._dir = os.getcwd()
        self.coverage = False
        self.prefix = None

    def finalize_options(self):
        if not self.prefix:
            print 
            sys.exit(1)

    def run(self):
        '''
        Finds all the tests modules in tests/, and runs them.
        '''
        prefix = os.path.join(self.prefix,'lib',
                              'python%d.%d'%sys.version_info[:2],
                              'site-packages') 
        sys.path.insert(1, prefix)
        if self.coverage:
            import coverage
            coverage.erase()
            coverage.start()

        loader = TestLoader()
        suite = TestSuite()
        skipped = file('tests/skip', 'r').read().split('\n')
        for t in glob.glob(pjoin(self._dir, 'tests', '*.py')):
            if not t.endswith('__init__.py') and basename(t) not in skipped:
                modname = '.'.join(['tests', splitext(basename(t))[0]])
                mod = __import__(modname, {'sys':sys}, fromlist=[modname])
                print "loading %s" % modname
                suite.addTest(loader.loadTestsFromModule(mod))
            else:
                print "skipping %s" % t

        t = TextTestRunner(verbosity = 1)
        t.run(suite)
        if self.coverage:
            coverage.stop()
            sources = []
            os.path.walk(os.path.join(prefix,'sugar','tutorius'),
                         self._listsources,
                         sources)
            coverage.report(sources)
            coverage.erase()
    
    def _listsources(self, arg, dirname, fnames):
        fnames = filter(lambda x:x.endswith('.py'), fnames)
        for name in fnames:
            arg.append(pjoin(dirname, name))

setup(name='Tutorius',
      version='0.0',
      description='Interactive tutor and Tutorial creator',
      maintainer='Simon Poirier', 
      maintainer_email='simpoir@gmail.com',
      author='Tutorius team',
      author_email='sugar-narratives@googlegroups.com',
      url='http://tutorius.org',
      license='GPLv3',
      packages=[
                'sugar.tutorius',
                'sugar.tutorius.uam',
                'sugar.tutorius.addons',
                'sugar.graphics',
                'sugar.activity',
               ],
      package_dir={'sugar': 'toolkitfix',
                   'sugar.tutorius': 'tutorius',
                   'sugar.tutorius.addons': 'addons',
                  },
      cmdclass = {'test': TestCommand},
      data_files=[('share/icons/sugar/scalable/actions', glob.glob('data/icons/*.svg')),]
     )

# vim: set et sw=4 sts=4 ts=4: