Deleted Added
sdiff udiff text old ( 3077:31da34df3139 ) new ( 3097:6d06427d2248 )
full compact
1#! /usr/bin/env python
2# Copyright (c) 2005-2006 The Regents of The University of Michigan
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met: redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer;

--- 18 unchanged lines hidden (view full) ---

27#
28# Authors: Steve Reinhardt
29
30import sys
31import os
32import optparse
33import datetime
34
35progname = os.path.basename(sys.argv[0])
36
37optparser = optparse.OptionParser()
38optparser.add_option('-v', '--verbose', dest='verbose', action='store_true',
39 default=False,
40 help='echo commands before executing')
41optparser.add_option('--builds', dest='builds',
42 default='ALPHA_SE,ALPHA_FS,MIPS_SE,SPARC_SE',
43 help='comma-separated list of builds to test')
44optparser.add_option('--variants', dest='variants',
45 default='opt',
46 help='comma-separated list of build variants to test')
47optparser.add_option('--scons-opts', dest='scons_opts', default='',
48 help='scons options')
49
50(options, tests) = optparser.parse_args()
51
52
53# split list options on ',' to get Python lists
54builds = options.builds.split(',')
55variants = options.variants.split(',')
56
57# Call os.system() and raise exception if return status is non-zero
58def system(cmd):
59 if options.verbose:
60 print cmd
61 status = os.system(cmd)
62 if status != 0:
63 upper = (status & 0xff00) >> 8
64 lower = (status & 0xff)
65 raise OSError, "shell command '%s' failed, status %d:%d" \
66 % (cmd, upper, lower)
67
68# Quote string s so it can be passed as a shell arg
69def shellquote(s):
70 if ' ' in s:
71 s = "'%s'" % s
72 return s
73
74try:
75 if not tests:
76 print "No tests specified."
77 sys.exit(1)
78
79 if 'all' in tests:
80 targets = ['build/%s/tests/%s' % (build, variant)
81 for build in builds
82 for variant in variants]
83 else:
84 targets = ['build/%s/tests/%s/%s' % (build, variant, test)
85 for build in builds
86 for variant in variants
87 for test in tests]
88
89 system('scons %s %s' % (options.scons_opts, ' '.join(targets)))
90
91 sys.exit(0)
92
93except OSError, exc:
94 print "%s: " % progname, exc
95 sys.exit(1)