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()
|