root / guide / buildbot-test.py

Revision 144:60ec3971f3f6, 1.9 kB (checked in by Tarek Ziad?? <tarek@…>, 16 months ago)

Added scripts from the book

Line 
1#!/usr/bin/python
2# -*- coding: UTF-8 -*-
3#
4# Copyright (c) 2007 Tarek Ziadé
5#
6# Authors:
7#   Tarek Ziadé <tarek@ziade.org>
8#
9# This program is free software; you can redistribute it and/or
10# modify it under the terms of the GNU General Public License
11# as published by the Free Software Foundation; either version 2
12# of the License, or (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22import os
23import sys
24import re
25from glob import glob
26
27header = 'Products/'
28catcher = r'Ran .*? with (\d*?) failures and (\d*?) errors'
29catcher = re.compile(catcher)
30omit = ('bundle.conf', 'CookieCrumbler')
31
32products = [element[len(header):] for element in glob('%s*' % header)]
33products.sort()
34
35command = 'bin/zopectl test --dir Products/%s'
36
37for product in products:
38    if product in omit:
39        continue
40    sys.stdout.write('Testing %s\n' % product)
41    test_in, test_out, test_err = os.popen3(command % product)
42    test_out = test_out.read()
43    sys.stdout.write(test_out)
44
45    sys.stdout.write('%s\n' % ('*' * 80))
46    sys.stdout.flush()
47
48    # error ?
49    errors = test_err.read()
50    if errors != '':
51        sys.stdout.write(errors)
52        sys.stdout.flush()
53        sys.exit(1)
54
55    # failed ?
56    catched = catcher.findall(test_out)
57
58    if len(catched) == 0:
59        continue
60
61    try:
62        errors = int(catched[0][1])
63        failures = int(catched[0][0])
64        if errors > 0 or failures > 0:
65            sys.exit(1)
66    except ValueError:
67        sys.exit(1)
68
69sys.exit(0)
Note: See TracBrowser for help on using the browser.