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