#************************************************************** # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # #************************************************************** $#ARGV >= 1 or die "Usage: $0 |-SUCCESS|-FAILURE "; if ($ARGV[0] eq "-SUCCESS") { $expect = "SUCCESS"; $input = 0; } elsif ($ARGV[0] eq "-FAILURE") { $expect = "FAILURE"; $input = 0; } else { open INPUT, $ARGV[0] or die "cannot open $ARGV[0]: $!"; $input = 1; } shift @ARGV; $failed = 0; $open = 0; while (1) { $eof = $input ? eof INPUT : $open; $in = if $input && !$eof; if (!$input || $eof || $in =~ /^EXPECT (SUCCESS|FAILURE|\d+)( "([^"]*)")?:\n$/) { if ($open) { close PIPE; if ($? % 256 == 0) { $exit = $? / 256; $ok = $expect eq "SUCCESS" ? $exit == 0 : $expect eq "FAILURE" ? $exit != 0 : $exit == $expect; } else { $exit = "signal"; $ok = 0; } print "\"$title\", " if defined $title; print "expected $expect, got $exit ($?): "; if ($ok) { print "ok\n"; } else { print "FAILED!\n"; $failed = 1; } } last if $eof; $expect = $1 if $input; if (defined $3) { $title = $3; } else { undef $title; } open PIPE, "| @ARGV" or die "cannot start process: $!"; $open = 1; } elsif ($open && $input) { print PIPE $in or die "cannot write to pipe: $!"; } } exit $failed;