]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
With todays additions, the generated shell script,
authorJim Meyering <jim@meyering.net>
Sat, 13 Aug 2005 14:07:18 +0000 (14:07 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 13 Aug 2005 14:07:18 +0000 (14:07 +0000)
tests/date/date-tests had becoming far too large (over 350KB),
so use the superior-but-perl-requiring framework instead.
* tests/date/Test.pm: Move new tests from here...
* tests/misc/date: ...to this new file.

tests/date/Test.pm
tests/misc/date [new file with mode: 0755]

index 989bd27ee41ef2d4d0ea734a6dcf52ca3ed65d4e..b01d6e41bd95c7917e398f689a2ef600115b1e83 100644 (file)
@@ -158,25 +158,9 @@ sub test_vector
       "--iso=ns -d'1970-01-01 00:00:00.1234567 UTC +961062237.987654321 sec'",
       {}, '2000-06-15T09:43:58,111111021+0000', 0],
 
-     ['empty-fmt', '+', {}, '', 0],
-
-     # Since coreutils/lib/getdate.y revision 1.96 (post-coreutils-5.3.0),
-     # a command like the following would mistakenly exit nonzero with an
-     # `invalid date ...' diagnostic, but only when run in a time zone for
-     # which that 24-hour range spans a daylight savings time transition.
-     # Unfortunately (for ease of testing), if you set TZ at all, this
-     # failure is not triggered, hence the cross-dst env setting below.
-     ['cross-dst', "--date '2005-03-27 +1 day' +%Y", {}, '2005', 0],
-
-     # FIXME: add a lot more...
+     # FIXME: add new date-related tests in ../misc/date.
      );
 
-  # Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364.
-  foreach my $i (1..364)
-    {
-      push @tvec, ["cross-dst$i", "-d '2005-01-01 +$i day' +%Y", {}, '2005', 0];
-    }
-
   my @tv;
   my $t;
   foreach $t (@tvec)
@@ -201,7 +185,6 @@ sub test_vector
 
   $Test::env{'rfc822-1'} = ['LC_ALL=de_DE TZ=UTC0'];
   $Test::env{'relative-2'} = ['TZ=UTC+1'];
-  $Test::env{'cross-dst'} = ['no_TZ=1'];
 
   return @tv;
 }
diff --git a/tests/misc/date b/tests/misc/date
new file mode 100755 (executable)
index 0000000..767c902
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+  echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+    "so can't run this test"
+  exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $ME = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# Export TZ=UTC0 so that zone-dependent strings match.
+$ENV{TZ} = 'UTC0';
+
+my @Tests =
+    (
+     # Since coreutils/lib/getdate.y revision 1.96 (post-coreutils-5.3.0),
+     # a command like the following would mistakenly exit nonzero with an
+     # `invalid date ...' diagnostic, but when run in a time zone for
+     # which daylight savings time is in effect for the starting date.
+     # Unfortunately (for ease of testing), if you set TZ at all, this
+     # failure is not triggered, hence the removal of TZ from the environment.
+     ['cross-dst', "-d'2005-03-27 +1 day'", '+%Y', {OUT=>'2005'},
+                 {PRE => sub {delete $ENV{TZ}}},
+                 ],
+
+     ['empty-fmt', '+', {OUT=>''}],
+    );
+
+# Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364.
+foreach my $i (1..364)
+  {
+    push @Tests, ["cross-dst$i",
+                 "-d'2005-01-01 +$i day'", '+%Y', {OUT=>'2005'},
+                 {PRE => sub {delete $ENV{TZ}}},
+                 ];
+  }
+
+# Append "\n" to each OUT=> RHS.
+foreach my $t (@Tests)
+  {
+    foreach my $e (@$t)
+      {
+        !ref $e || ref $e ne 'HASH'
+         and next;
+        defined $e->{OUT}
+          and $e->{OUT} .= "\n";
+      }
+  }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = 'date';
+my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF