summaryrefslogtreecommitdiff
path: root/test/metacity-test
blob: 6d09d664b2762dce6a6fa72c9cc740f5b46b33fd (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
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/python
#
# metacity-test.py -- testing for Metacity
# 
# Copyright (C) 2008 Thomas Thurman
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#

import sys
import getopt

#################
#
#  These belong in a file, one of several in a subdirectory
#  which gets scanned, so we can easily do plugins, and so
#  we get precompilation.

build_tests = {
    'ansi':          {'c':         ['-ansi']},
    'gconfoff':      {'configure': ['--disable-gconf']},
    'compositoroff': {'configure': ['--disable-compositor']},
    'teston':        {'configure': ['--enable-testing']},
}

# XXX Fixme, but we'll check this in first:
# We need to make all these subclasses of a build test subclass of
# a test class.

#################
#
#  And back in the ordinary world...

def run_test(testname):
    print 'Running test ',testname

def show_help():
    print '  --- metacity-test ---  a test system for metacity.'
    print 'There are three kinds of test: unit, regression, or build.'
    print 'Only build tests are currently implemented.'
    print
    print 'Syntax:'
    print '  metacity-test <switches> <test names>'
    print 'where <switches> can be:'
    print '  -h    Show this help and exit'
    print '  -l    List all known tests and exit'
    print '  -r=n  Use revision n, or directory n as pristine'
    print

def show_tests():
    print 'Build tests:'
    for test in build_tests:
        print '     %s' % (test)

    print
    print 'Unit tests:'
    print '  -- Not yet implemented.'
    print
    print 'Regression tests:'
    print '  -- Not yet implemented.'

def main():
    try:
        (opts, testlist) = getopt.gnu_getopt(
            sys.argv[1:],
            'lhr=',
            )
    except getopt.GetoptError, e:
        print 'Error:', e
        print 'Use -h for help, or -l to list all tests.'
        sys.exit(1)

    if (len(opts)==0 and len(testlist)==0) or (('-h', '') in opts):
        show_help()
    elif ('-l', '') in opts:
        show_tests()
    elif not testlist:
        print "Warning: You didn't specify any tests to run."
    else:
        # Later we need to add
        #  - all, allbut
        #  - .foo = all with the tag "foo"
        #  - .build, etc., which are implicit tags
        #  - for regression tests, selection by bug number
        #  - very simple dependencies (you need the output of a particular build
        #    test before you can run a given unit test on it!)

        for test in testlist:
            run_test(test)

if __name__=='__main__':
    main()