Commit | Line | Data |
---|---|---|
c5dbcd79 | 1 | #! /usr/bin/env python |
aa896435 RK |
2 | # |
3 | # This file is part of DisOrder. | |
4 | # Copyright (C) 2007 Richard Kettlewell | |
5 | # | |
6 | # This program is free software; you can redistribute it and/or modify | |
7 | # it under the terms of the GNU General Public License as published by | |
8 | # the Free Software Foundation; either version 2 of the License, or | |
9 | # (at your option) any later version. | |
10 | # | |
11 | # This program is distributed in the hope that it will be useful, but | |
12 | # WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | # General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public License | |
17 | # along with this program; if not, write to the Free Software | |
18 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 | |
19 | # USA | |
20 | # | |
ad08c366 | 21 | import sys,re,os.path,os |
3bfecfac RK |
22 | |
23 | # Parse the makefile in the current directory to identify the source directory | |
24 | top_srcdir = None | |
25 | for l in file("Makefile"): | |
ad08c366 | 26 | r = re.search("^top_srcdir *= *(.*)$", l) |
3bfecfac RK |
27 | if r: |
28 | top_srcdir = r.group(1) | |
29 | break | |
30 | if not top_srcdir: | |
31 | fatal("cannot identify source directory") | |
32 | ||
33 | # Make sure that the test directory is on the module search path (so we can | |
34 | # find dtest and the tests themselves) | |
ad08c366 RK |
35 | testdir = os.path.join(top_srcdir, "tests") |
36 | sys.path.insert(0, testdir) | |
3bfecfac | 37 | import dtest |
c5dbcd79 | 38 | |
ad08c366 RK |
39 | # The tests are all the *.py files in the test source directory that |
40 | # call dtest.run | |
41 | tests = [] | |
42 | for f in os.listdir(testdir): | |
5c07ba71 RK |
43 | if f == 'dtest.py': # special case |
44 | continue | |
ad08c366 RK |
45 | r = re.search("^(.*)\\.py$", f) |
46 | if r is not None: | |
47 | isTest = False | |
48 | base = r.group(1) | |
49 | for l in file(os.path.join(testdir, f)): | |
50 | r = re.search("dtest\\.run", l) | |
51 | if r is not None: | |
52 | isTest = True | |
53 | break | |
54 | if isTest: | |
55 | tests.append(base) | |
56 | tests.sort() # let's have a consistent order | |
c5dbcd79 RK |
57 | |
58 | for test in tests: | |
1a4a6350 | 59 | print "-------- Test '%s' --------" % test |
5c07ba71 | 60 | dtest.run(test, report=False) |
c5dbcd79 RK |
61 | |
62 | print "%d tests" % dtest.tests | |
63 | if dtest.failures: | |
64 | print "%d failures" % dtest.failures | |
65 | sys.exit(1) | |
66 | else: | |
67 | print "All tests OK" |