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