summaryrefslogtreecommitdiff
path: root/tests/head
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1996-12-15 20:27:12 +0000
committerJim Meyering <jim@meyering.net>1996-12-15 20:27:12 +0000
commit8fd3e8664b864afe128ea3b3564fd960f0b83594 (patch)
treea841014400b91ce5cd1c9b92e87ba64cc674547d /tests/head
parent1b25f1c2cd4b8392183c0263e9c6b39bfbfc0985 (diff)
downloadcoreutils-8fd3e8664b864afe128ea3b3564fd960f0b83594.tar.xz
(spec_to_list): New function -- factored out...
Diffstat (limited to 'tests/head')
-rw-r--r--tests/head/mk-script.pl105
1 files changed, 62 insertions, 43 deletions
diff --git a/tests/head/mk-script.pl b/tests/head/mk-script.pl
index 426d7ecc9..295c24e14 100644
--- a/tests/head/mk-script.pl
+++ b/tests/head/mk-script.pl
@@ -9,6 +9,66 @@ use POSIX qw (assert);
BEGIN { push @INC, '@srcdir@' if '@srcdir@' ne '.'; }
use Test;
+sub spec_to_list ($$$)
+{
+ my ($spec, $test_name, $type) = @_;
+
+ assert ($type eq 'in' || $type eq 'exp');
+
+ my @all_file;
+ my @gen_file;
+ my @content_string;
+ if (ref $spec)
+ {
+ assert (ref $spec eq 'ARRAY');
+ my $file_spec;
+ foreach $file_spec (@$spec)
+ {
+ # A file spec may be a string or a reference.
+ # If it's a string, that string is to be the contents of a
+ # generated (by this script) file with name derived from the
+ # name of this test.
+ # If it's a reference, then it must be the name of an existing
+ # file.
+ if (ref $file_spec)
+ {
+ assert (ref $file_spec eq 'SCALAR');
+ my $existing_file = $$file_spec;
+ # FIXME: make sure $existing_file exists somewhere.
+ push (@all_file, $existing_file);
+ }
+ else
+ {
+ push (@content_string, $file_spec);
+ }
+ }
+ }
+ else
+ {
+ push (@content_string, $spec);
+ }
+
+ my $i = 1;
+ my $file_contents;
+ foreach $file_contents (@content_string)
+ {
+ my $gen_file = "t$test_name.$type$i";
+ push (@all_file, $gen_file);
+ push (@gen_file, $gen_file);
+ open (F, ">$gen_file") || die "$0: $gen_file: $!\n";
+ print F $file_contents;
+ close (F) || die "$0: $gen_file: $!\n";
+ ++$i;
+ }
+
+ my %h = (
+ ALL_FILES => \@all_file,
+ GEN_FILES => \@gen_file
+ );
+
+ return \%h;
+}
+
$| = 1;
my $xx = $ARGV[0];
@@ -54,48 +114,7 @@ foreach $test_vector (@Test::t)
my ($test_name, $flags, $in_spec, $expected, $e_ret_code)
= @{$test_vector};
- my @in_file;
- if (ref $in_spec)
- {
- assert (ref $in_spec eq 'ARRAY');
- my $i = 0;
- my $file_spec;
- foreach $file_spec (@$in_spec)
- {
- # A file spec may be a string or a reference.
- # If it's a string, that string is to be the contents of a
- # generated (by this script) file with name derived from the
- # name of this test.
- # If it's a reference, then it must be the name of an existing
- # file.
- if (ref $file_spec)
- {
- assert (ref $file_spec eq 'SCALAR');
- my $existing_file = $$file_spec;
- # FIXME: make sure $existing_file exists somewhere.
- push (@in_file, $existing_file);
- }
- else
- {
- ++$i;
- my $file_contents = $file_spec;
- my $gen_file = "t$test_name.in$i";
- push (@in_file, $gen_file);
- open (IN, ">$gen_file") || die "$0: $gen_file: $!\n";
- print IN $file_contents;
- close (IN) || die "$0: $gen_file: $!\n";
- }
- }
- }
- else
- {
- my $file_contents = $in_spec;
- my $gen_file = "t$test_name.in";
- push (@in_file, $gen_file);
- open (IN, ">$gen_file") || die "$0: $gen_file: $!\n";
- print IN $file_contents;
- close (IN) || die "$0: $gen_file: $!\n";
- }
+ my $h = spec_to_list ($in_spec, $test_name, 'in');
my $in1 = "t$test_name.in1";
my $in2 = "t$test_name.in2";
@@ -110,7 +129,7 @@ foreach $test_vector (@Test::t)
my @srcdir_rel_in_file;
my $f;
- foreach $f (@in_file)
+ foreach $f (@{ $h->{ALL_FILES} })
{
push (@srcdir_rel_in_file, "\$srcdir/$f")
}