#!/usr/bin/perl
# A simple unit testing script
-# (c) 2004--2007 Martin Mares <mj@ucw.cz>
+# (c) 2004--2013 Martin Mares <mj@ucw.cz>
# (c) 2007 Pavel Charvat <pchar@ucw.cz>
# Tests in the test file have a syntax similar to mail headers,
# Both In<N> and Out<N> can be specified simultaneously if we
# are testing a program which modifies some of its input files.
# Exit: expected exit code of the program (default: 0)
+#
+# A value of a field can be optionally given as a shell-style here-document:
+#
+# In <<AMEN
+# multiple
+# lines
+# of input
+# AMEN
use Getopt::Long;
($tt->{$n}) && die "$n already defined";
$tt->{$n} = $v;
$append_to = \($tt->{$n});
+ } elsif (my ($n,$sep) = /^(\w+)\s*<<(\w+)\s*$/) {
+ if (!$tt) {
+ $tt = {};
+ push @tests, $tt;
+ }
+ ($tt->{$n}) && die "$n already defined";
+ $tt->{$n} = "";
+ $sep .= "\n";
+ while (1) {
+ my $line = <>;
+ defined $line or die "Here-document not terminated";
+ last if $line eq $sep;
+ $tt->{$n} .= $line;
+ }
} else {
die "Test script syntax error";
}