Version 5.2.6.1, tag libreoffice-5.2.6.1
[LibreOffice.git] / solenv / bin / exectest.pl
blob248cd7b0c81a924f6146b097cdc38c7ebc6aebc9
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 >= 3
27 or die "Usage: $0 <input file> <temp file> <new?> <command> <arguments...>";
28 open INPUT, '<', $ARGV[0] or die "cannot open $ARGV[0]: $!";
29 shift @ARGV;
30 $temp = $ARGV[0];
31 shift @ARGV;
32 $new = $ARGV[0];
33 shift @ARGV;
34 $failed = 0;
35 $open = 0;
36 while (1) {
37 $eof = eof INPUT;
38 $in = <INPUT> unless $eof;
39 if ($eof
40 || $in =~ /^EXPECT (SUCCESS|FAILURE|NEW-FAILURE|OLD-FAILURE) "([^"]*)"?:\n$/)
42 if ($open)
44 close OUTPUT;
45 my $prog = '';
46 my $assigns = 1;
47 for ($i = 0; $i != scalar(@ARGV); ++$i)
49 $prog .= ' ' unless $i == 0;
50 if ($assigns && $ARGV[$i] =~ /^([A-Za-z_][A-Za-z0-9_]+)=(.*)$/)
52 $prog .= $1 . "='" . encode($2) . "'";
54 else
56 if ($ARGV[$i] =~ /^{}$/)
58 $prog .= "'" . encode($temp) . "'";
60 else
62 $prog .= "'" . encode($ARGV[$i]) . "'";
64 $assigns = 0;
67 system("$prog");
68 unlink $temp;
69 if ($? % 256 == 0)
71 $exit = $? / 256;
72 $ok = ($? == 0) == ($expect eq "SUCCESS");
74 else
76 $exit = "signal";
77 $ok = 0;
79 print "\"$title\" expected $expect, got $exit ($?): ";
80 if ($ok)
82 print "ok\n";
84 else
86 print "FAILED!\n";
87 exit(1);
90 last if $eof;
91 $expect = $1;
92 $expect = ($new ? 'FAILURE' : 'SUCCESS') if $expect eq 'NEW-FAILURE';
93 $expect = ($new ? 'SUCCESS' : 'FAILURE') if $expect eq 'OLD-FAILURE';
94 $title = $2;
95 open OUTPUT, '>', $temp or die "cannot open $temp: $!";
96 $open = 1;
98 elsif ($open)
100 print OUTPUT $in or die "cannot write to $temp: $!";
103 exit(0);