bump product version to 4.1.6.2
[LibreOffice.git] / solenv / bin / exectest.pl
blob06c9072d3ae3cc0b96abeb3cdd0bb142d91a73b1
2 # This file is part of the LibreOffice project.
4 # This Source Code Form is subject to the terms of the Mozilla Public
5 # License, v. 2.0. If a copy of the MPL was not distributed with this
6 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 # This file incorporates work covered by the following license notice:
10 # Licensed to the Apache Software Foundation (ASF) under one or more
11 # contributor license agreements. See the NOTICE file distributed
12 # with this work for additional information regarding copyright
13 # ownership. The ASF licenses this file to you under the Apache
14 # License, Version 2.0 (the "License"); you may not use this file
15 # except in compliance with the License. You may obtain a copy of
16 # the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 sub encode($)
21 my ($arg) = @_;
22 $arg =~ s/'/'\\''/g;
23 return $arg
26 $#ARGV >= 1
27 or die "Usage: $0 <input file>|-SUCCESS|-FAILURE <command> <arguments...>";
28 if ($ARGV[0] eq "-SUCCESS")
30 $expect = "SUCCESS";
31 $input = 0;
33 elsif ($ARGV[0] eq "-FAILURE")
35 $expect = "FAILURE";
36 $input = 0;
38 else
40 open INPUT, $ARGV[0] or die "cannot open $ARGV[0]: $!";
41 $input = 1;
43 shift @ARGV;
44 $failed = 0;
45 $open = 0;
46 while (1) {
47 $eof = $input ? eof INPUT : $open;
48 $in = <INPUT> if $input && !$eof;
49 if (!$input || $eof
50 || $in =~ /^EXPECT (SUCCESS|FAILURE|\d+)( "([^"]*)")?:\n$/)
52 if ($open)
54 close PIPE;
55 if ($? % 256 == 0)
57 $exit = $? / 256;
58 $ok = $expect eq "SUCCESS" ? $exit == 0
59 : $expect eq "FAILURE" ? $exit != 0 : $exit == $expect;
61 else
63 $exit = "signal";
64 $ok = 0;
66 print "\"$title\", " if defined $title;
67 print "expected $expect, got $exit ($?): ";
68 if ($ok)
70 print "ok\n";
72 else
74 print "FAILED!\n";
75 $failed = 1;
78 last if $eof;
79 $expect = $1 if $input;
80 if (defined $3)
82 $title = $3;
84 else
86 undef $title;
88 my $prog = '';
89 my $assigns = 1;
90 for ($i = 0; $i != scalar(@ARGV); ++$i)
92 $prog .= ' ' unless $i == 0;
93 if ($assigns && $ARGV[$i] =~ /^([A-Za-z_][A-Za-z0-9_]+)=(.*)$/)
95 $prog .= $1 . "='" . encode($2) . "'";
97 else
99 $prog .= "'" . encode($ARGV[$i]) . "'";
100 $assigns = 0;
103 open PIPE, "| $prog" or die "cannot start process: $!";
104 $open = 1;
106 elsif ($open && $input)
108 print PIPE $in or die "cannot write to pipe: $!";
111 exit $failed;