update dev300-m58
[ooovba.git] / solenv / bin / exectest.pl
blobdc0e10b78217f3a9ac2e11677a17753b41333f48
1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
5 # Copyright 2008 by Sun Microsystems, Inc.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # $RCSfile: exectest.pl,v $
11 # $Revision: 1.4 $
13 # This file is part of OpenOffice.org.
15 # OpenOffice.org is free software: you can redistribute it and/or modify
16 # it under the terms of the GNU Lesser General Public License version 3
17 # only, as published by the Free Software Foundation.
19 # OpenOffice.org is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU Lesser General Public License version 3 for more details
23 # (a copy is included in the LICENSE file that accompanied this code).
25 # You should have received a copy of the GNU Lesser General Public License
26 # version 3 along with OpenOffice.org. If not, see
27 # <http://www.openoffice.org/license.html>
28 # for a copy of the LGPLv3 License.
30 #*************************************************************************
32 $#ARGV >= 1
33 or die "Usage: $0 <input file>|-SUCCESS|-FAILURE <command> <arguments...>";
34 if ($ARGV[0] eq "-SUCCESS")
36 $expect = "SUCCESS";
37 $input = 0;
39 elsif ($ARGV[0] eq "-FAILURE")
41 $expect = "FAILURE";
42 $input = 0;
44 else
46 open INPUT, $ARGV[0] or die "cannot open $ARGV[0]: $!";
47 $input = 1;
49 shift @ARGV;
50 $failed = 0;
51 $open = 0;
52 while (1) {
53 $eof = $input ? eof INPUT : $open;
54 $in = <INPUT> if $input && !$eof;
55 if (!$input || $eof
56 || $in =~ /^EXPECT (SUCCESS|FAILURE|\d+)( "([^"]*)")?:\n$/)
58 if ($open)
60 close PIPE;
61 if ($? % 256 == 0)
63 $exit = $? / 256;
64 $ok = $expect eq "SUCCESS" ? $exit == 0
65 : $expect eq "FAILURE" ? $exit != 0 : $exit == $expect;
67 else
69 $exit = "signal";
70 $ok = 0;
72 print "\"$title\", " if defined $title;
73 print "expected $expect, got $exit ($?): ";
74 if ($ok)
76 print "ok\n";
78 else
80 print "FAILED!\n";
81 $failed = 1;
84 last if $eof;
85 $expect = $1 if $input;
86 if (defined $3)
88 $title = $3;
90 else
92 undef $title;
94 open PIPE, "| @ARGV" or die "cannot start process: $!";
95 $open = 1;
97 elsif ($open && $input)
99 print PIPE $in or die "cannot write to pipe: $!";
102 exit $failed;