]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(uninit-64): New test for today's date.c fix.
authorJim Meyering <jim@meyering.net>
Mon, 15 Aug 2005 13:01:50 +0000 (13:01 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 15 Aug 2005 13:01:50 +0000 (13:01 +0000)
Rewrite all other OUT strings to include the terminating "\n".

ChangeLog
tests/misc/date

index 41e857d409e0f1873f614f76beb593ea0a69db32..09361e805a12acf8f4dae3d438d3c9f627bb5ed4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
        upon localtime failure.
        * src/date.c (show_date): Remove stray `puts (buf);' (debugging?)
        from the 2004-02-02 change.
+       * tests/misc/date (uninit-64): New test for the above.
+       Rewrite all other OUT strings to include the terminating "\n".
 
 2005-08-14  Jim Meyering  <jim@meyering.net>
 
index 704d9c049a9b20dad3b49aa43814dbc6a2eb2693..1f7bb58dfab31276b027fa83c869299c8ea45b9a 100755 (executable)
@@ -38,9 +38,9 @@ my $fmt = "'+%Y-%m-%d %T'";
 
 my @Tests =
     (
-     # test-name, [option, option, ...] {OUT=>'expected-output'}
+     # test-name, [option, option, ...] {OUT=>"expected-output\n"}
      #
-     ['1', "-d '$d1' +'%% %a %A %b %B'", {OUT=>'% Sun Sunday Jan January'}],
+     ['1', "-d '$d1' +'%% %a %A %b %B'", {OUT=>"% Sun Sunday Jan January\n"}],
 
      # [Actually, skip it on *all* systems. -- this Perl code is run at
      # distribution-build-time, not at configure/test time.  ]
@@ -50,134 +50,135 @@ my @Tests =
      # properly.  GNU strftime must rely on the underlying host library
      # function to get locale-dependent behavior, as strftime is the only
      # portable interface to that behavior.
-     # ['2', "-d '$d1' +'%c'", {OUT=>"Sun Jan 19 $t0 1997"}],
+     # ['2', "-d '$d1' +'%c'", {OUT=>"Sun Jan 19 $t0 1997\n"}],
 
-     ['3', "-d '$d1' +'%d_%D_%e_%h_%H'", {OUT=>'19_01/19/97_19_Jan_08'}],
-     ['4', "-d '$d1' +'%I_%j_%k_%l_%m'", {OUT=>'08_019_ 8_ 8_01'}],
-     ['5', "-d '$d1' +'%M_%n_%p_%r'", {OUT=>"17_\n_AM_$t0 AM"}],
-     ['6', "-d '$d1' +'%s_%S_%t_%T'", {OUT=>"853661868_48_\t_$t0"}],
-     ['7', "-d '$d1' +'%U_%V_%w_%W'", {OUT=>'03_03_0_02'}],
-     ['8', "-d '$d1' +'%x_%X_%y_%Y'", {OUT=>"01/19/97_${t0}_97_1997"}],
-     ['9', "-d '$d1' +'%z'", {OUT=>'+0000'}],
+     ['3', "-d '$d1' +'%d_%D_%e_%h_%H'", {OUT=>"19_01/19/97_19_Jan_08\n"}],
+     ['4', "-d '$d1' +'%I_%j_%k_%l_%m'", {OUT=>"08_019_ 8_ 8_01\n"}],
+     ['5', "-d '$d1' +'%M_%n_%p_%r'", {OUT=>"17_\n_AM_$t0 AM\n"}],
+     ['6', "-d '$d1' +'%s_%S_%t_%T'", {OUT=>"853661868_48_\t_$t0\n"}],
+     ['7', "-d '$d1' +'%U_%V_%w_%W'", {OUT=>"03_03_0_02\n"}],
+     ['8', "-d '$d1' +'%x_%X_%y_%Y'", {OUT=>"01/19/97_${t0}_97_1997\n"}],
+     ['9', "-d '$d1' +'%z'", {OUT=>"+0000\n"}],
 
-     ['leap-1', "--date '02/29/1996 1 year' +%Y-%m-%d", {OUT=>'1997-03-01'}],
+     ['leap-1', "--date '02/29/1996 1 year' +%Y-%m-%d", {OUT=>"1997-03-01\n"}],
 
-     ['U95-1', "--date '1995-1-1' +%U", {OUT=>'01'}],
-     ['U95-2', "--date '1995-1-7' +%U", {OUT=>'01'}],
-     ['U95-3', "--date '1995-1-8' +%U", {OUT=>'02'}],
+     ['U95-1', "--date '1995-1-1' +%U", {OUT=>"01\n"}],
+     ['U95-2', "--date '1995-1-7' +%U", {OUT=>"01\n"}],
+     ['U95-3', "--date '1995-1-8' +%U", {OUT=>"02\n"}],
 
-     ['U92-1', "--date '1992-1-1' +%U", {OUT=>'00'}],
-     ['U92-2', "--date '1992-1-4' +%U", {OUT=>'00'}],
-     ['U92-3', "--date '1992-1-5' +%U", {OUT=>'01'}],
+     ['U92-1', "--date '1992-1-1' +%U", {OUT=>"00\n"}],
+     ['U92-2', "--date '1992-1-4' +%U", {OUT=>"00\n"}],
+     ['U92-3', "--date '1992-1-5' +%U", {OUT=>"01\n"}],
 
-     ['V92-1', "--date '1992-1-1' +%V", {OUT=>'01'}],
-     ['V92-2', "--date '1992-1-5' +%V", {OUT=>'01'}],
-     ['V92-3', "--date '1992-1-6' +%V", {OUT=>'02'}],
+     ['V92-1', "--date '1992-1-1' +%V", {OUT=>"01\n"}],
+     ['V92-2', "--date '1992-1-5' +%V", {OUT=>"01\n"}],
+     ['V92-3', "--date '1992-1-6' +%V", {OUT=>"02\n"}],
 
-     ['W92-1', "--date '1992-1-1' +%W", {OUT=>'00'}],
-     ['W92-2', "--date '1992-1-5' +%W", {OUT=>'00'}],
-     ['W92-3', "--date '1992-1-6' +%W", {OUT=>'01'}],
+     ['W92-1', "--date '1992-1-1' +%W", {OUT=>"00\n"}],
+     ['W92-2', "--date '1992-1-5' +%W", {OUT=>"00\n"}],
+     ['W92-3', "--date '1992-1-6' +%W", {OUT=>"01\n"}],
 
-     ['millen-1', "--date '1998-1-1 3 years' +%Y", {OUT=>'2001'}],
+     ['millen-1', "--date '1998-1-1 3 years' +%Y", {OUT=>"2001\n"}],
 
-     ['rel-0', "-d '$d1 now' '+%Y-%m-%d %T'", {OUT=>"$d0 $t0"}],
+     ['rel-0', "-d '$d1 now' '+%Y-%m-%d %T'", {OUT=>"$d0 $t0\n"}],
 
-     ['rel-1a', "-d '$d1 yesterday' $fmt", {OUT=>"1997-01-18 $t0"}],
-     ['rel-1b', "-d '$d1 tomorrow' $fmt", {OUT=>"1997-01-20 $t0"}],
+     ['rel-1a', "-d '$d1 yesterday' $fmt", {OUT=>"1997-01-18 $t0\n"}],
+     ['rel-1b', "-d '$d1 tomorrow' $fmt", {OUT=>"1997-01-20 $t0\n"}],
 
-     ['rel-2a', "-d '$d1 6 years ago' $fmt", {OUT=>"1991-01-19 $t0"}],
-     ['rel-2b', "-d '$d1 7 months ago' $fmt", {OUT=>"1996-06-19 $t0"}],
-     ['rel-2c', "-d '$d1 8 weeks ago' $fmt", {OUT=>"1996-11-24 $t0"}],
-     ['rel-2d', "-d '$d1 1 day ago' $fmt", {OUT=>"1997-01-18 $t0"}],
-     ['rel-2e', "-d '$d1 2 hours ago' $fmt", {OUT=>"$d0 06:17:48"}],
-     ['rel-2f', "-d '$d1 3 minutes ago' $fmt", {OUT=>"$d0 08:14:48"}],
-     ['rel-2g', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44"}],
+     ['rel-2a', "-d '$d1 6 years ago' $fmt", {OUT=>"1991-01-19 $t0\n"}],
+     ['rel-2b', "-d '$d1 7 months ago' $fmt", {OUT=>"1996-06-19 $t0\n"}],
+     ['rel-2c', "-d '$d1 8 weeks ago' $fmt", {OUT=>"1996-11-24 $t0\n"}],
+     ['rel-2d', "-d '$d1 1 day ago' $fmt", {OUT=>"1997-01-18 $t0\n"}],
+     ['rel-2e', "-d '$d1 2 hours ago' $fmt", {OUT=>"$d0 06:17:48\n"}],
+     ['rel-2f', "-d '$d1 3 minutes ago' $fmt", {OUT=>"$d0 08:14:48\n"}],
+     ['rel-2g', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44\n"}],
 
-     ['rel-3a', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44"}],
+     ['rel-3a', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44\n"}],
 
-     ['next-s', "-d '$d1 next second' '+%Y-%m-%d %T'", {OUT=>"$d0 $ts"}],
-     ['next-m', "-d '$d1 next minute' '+%Y-%m-%d %T'", {OUT=>"$d0 $tm"}],
-     ['next-h', "-d '$d1 next hour'   '+%Y-%m-%d %T'", {OUT=>"$d0 $th"}],
-     ['next-d', "-d '$d1 next day'    '+%Y-%m-%d %T'", {OUT=>"$dd $t0"}],
-     ['next-w', "-d '$d1 next week'   '+%Y-%m-%d %T'", {OUT=>"$dw $t0"}],
-     ['next-mo', "-d '$d1 next month' '+%Y-%m-%d %T'", {OUT=>"$dm $t0"}],
-     ['next-y', "-d '$d1 next year'   '+%Y-%m-%d %T'", {OUT=>"$dy $t0"}],
+     ['next-s', "-d '$d1 next second' '+%Y-%m-%d %T'", {OUT=>"$d0 $ts\n"}],
+     ['next-m', "-d '$d1 next minute' '+%Y-%m-%d %T'", {OUT=>"$d0 $tm\n"}],
+     ['next-h', "-d '$d1 next hour'   '+%Y-%m-%d %T'", {OUT=>"$d0 $th\n"}],
+     ['next-d', "-d '$d1 next day'    '+%Y-%m-%d %T'", {OUT=>"$dd $t0\n"}],
+     ['next-w', "-d '$d1 next week'   '+%Y-%m-%d %T'", {OUT=>"$dw $t0\n"}],
+     ['next-mo', "-d '$d1 next month' '+%Y-%m-%d %T'", {OUT=>"$dm $t0\n"}],
+     ['next-y', "-d '$d1 next year'   '+%Y-%m-%d %T'", {OUT=>"$dy $t0\n"}],
 
-     ['utc-0', "-u -d '08/01/97 6:00' '+%D,%H:%M'", {OUT=>"08/01/97,06:00"},
+     ['utc-0', "-u -d '08/01/97 6:00' '+%D,%H:%M'", {OUT=>"08/01/97,06:00\n"},
               {ENV => 'TZ=UTC+4'}],
 
      ['utc-0a', "-u -d '08/01/97 6:00 UTC +4 hours' '+%D,%H:%M'",
-      {OUT=>"08/01/97,10:00"}],
+      {OUT=>"08/01/97,10:00\n"}],
      # Make sure --file=FILE works with -u.
      ['utc-1', "-u --file=f '+%Y-%m-%d %T'",
       {AUX=>{f=>"$d0 $t0\n$d0 $t0\n"}},
-      {OUT=>"$d0 $t0\n$d0 $t0"},
+      {OUT=>"$d0 $t0\n$d0 $t0\n"},
       {ENV => 'TZ=UTC+1'}],
 
      ['utc-1a', "-u --file=f '+%Y-%m-%d %T'",
       {AUX=>{f=>"$d0 $t0 UTC +1 hour\n$d0 $t0 UTC +1 hour\n"}},
-      {OUT=>"$d0 $th\n$d0 $th"}],
+      {OUT=>"$d0 $th\n$d0 $th\n"}],
 
      # From the examples in the documentation.
-     ['date2sec-0', "-d '1970-01-01 00:00:01' +%s", {OUT=>"7201"},
+     ['date2sec-0', "-d '1970-01-01 00:00:01' +%s", {OUT=>"7201\n"},
       {ENV => 'TZ=UTC+2'}],
 
      # Same as above, but don't rely on TZ in environment.
-     ['date2sec-0a', "-d '1970-01-01 00:00:01 UTC +2 hours' +%s", {OUT=>"7201"}],
+     ['date2sec-0a', "-d '1970-01-01 00:00:01 UTC +2 hours' +%s",
+      {OUT=>"7201\n"}],
 
-     ['date2sec-1', "-d 2000-01-01 +%s", {OUT=>"946684800"}],
+     ['date2sec-1', "-d 2000-01-01 +%s", {OUT=>"946684800\n"}],
      ['sec2date-0', "-d '1970-01-01 UTC 946684800 sec' +'%Y-%m-%d %T %z'",
-      {OUT=>"2000-01-01 00:00:00 +0000"}],
+      {OUT=>"2000-01-01 00:00:00 +0000\n"}],
 
-     ['this-m', "-d '$d0 $t0 this minute' $fmt", {OUT=>"$d0 $t0"}],
-     ['this-h', "-d '$d0 $t0 this hour' $fmt", {OUT=>"$d0 $t0"}],
-     ['this-w', "-d '$d0 $t0 this week' $fmt", {OUT=>"$d0 $t0"}],
-     ['this-mo', "-d '$d0 $t0 this month' $fmt", {OUT=>"$d0 $t0"}],
-     ['this-y', "-d '$d0 $t0 this year' $fmt", {OUT=>"$d0 $t0"}],
+     ['this-m', "-d '$d0 $t0 this minute' $fmt", {OUT=>"$d0 $t0\n"}],
+     ['this-h', "-d '$d0 $t0 this hour' $fmt", {OUT=>"$d0 $t0\n"}],
+     ['this-w', "-d '$d0 $t0 this week' $fmt", {OUT=>"$d0 $t0\n"}],
+     ['this-mo', "-d '$d0 $t0 this month' $fmt", {OUT=>"$d0 $t0\n"}],
+     ['this-y', "-d '$d0 $t0 this year' $fmt", {OUT=>"$d0 $t0\n"}],
 
-     ['risks-1', "-d 'Nov 10 1996' $fmt", {OUT=>"1996-11-10 00:00:00"}],
+     ['risks-1', "-d 'Nov 10 1996' $fmt", {OUT=>"1996-11-10 00:00:00\n"}],
 
      # This one would pass if TZ (with any, or even no, value) were in
      # the environment.
      ['regress-1', "-u -d '1996-11-10 0:00:00 +0' $fmt",
-     {OUT=>"1996-11-10 00:00:00"},
+     {OUT=>"1996-11-10 00:00:00\n"},
      {ENV =>'LANG=C'}],
 
 
-     ['datevtime-1', "-d 000909 $fmt", {OUT=>"2000-09-09 00:00:00"}],
+     ['datevtime-1', "-d 000909 $fmt", {OUT=>"2000-09-09 00:00:00\n"}],
 
      # test for RFC-822 conformance
-     ['rfc822-1', "-R -d '$d1'", {OUT=>"Sun, 19 Jan 1997 08:17:48 +0000"},
+     ['rfc822-1', "-R -d '$d1'", {OUT=>"Sun, 19 Jan 1997 08:17:48 +0000\n"},
       {ENV => 'LC_ALL=de_DE TZ=UTC0'}],
 
      # Relative seconds, with time.  fixed in 2.0j
      ['relative-1', "--utc -d '1970-01-01 00:00:00 UTC +961062237 sec' $fmt",
-      {OUT=>"2000-06-15 09:43:57"}],
+      {OUT=>"2000-06-15 09:43:57\n"}],
 
      # Relative seconds, no time.
      ['relative-2', "--utc -d '1970-01-01 UTC +961062237 sec' $fmt",
-      {OUT=>"2000-06-15 09:43:57"},
+      {OUT=>"2000-06-15 09:43:57\n"},
       {ENV => 'TZ=UTC+1'}],
 
      # This would infloop (or appear to) prior to coreutils-4.5.5,
      # due to a bug in strftime.c.
-     ['wide-fmt', "-d '1999-06-01'", '+%3004Y', {OUT=>'0' x 3000 . '1999'}],
+     ['wide-fmt', "-d '1999-06-01'", '+%3004Y', {OUT=>'0' x 3000 . "1999\n"}],
 
      # Ensure that we can parse MONTHNAME-DAY-YEAR.
-     ['moname-d-y', '--iso -d May-23-2003', {OUT=>'2003-05-23'}],
+     ['moname-d-y', '--iso -d May-23-2003', {OUT=>"2003-05-23\n"}],
 
      ['epoch', '--iso=sec -d @31536000',
-      {OUT=>'1971-01-01T00:00:00+0000'}],
+      {OUT=>"1971-01-01T00:00:00+0000\n"}],
 
      ['ns-10', '--iso=ns', '-d "1969-12-31 13:00:00.00000001-1100"',
-      {OUT=>'1970-01-01T00:00:00,000000010+0000'}],
+      {OUT=>"1970-01-01T00:00:00,000000010+0000\n"}],
 
      ['ns-max32', '--iso=ns', '-d "2038-01-19 03:14:07.999999999"',
-      {OUT=>'2038-01-19T03:14:07,999999999+0000'}],
+      {OUT=>"2038-01-19T03:14:07,999999999+0000\n"}],
 
      ['ns-relative',
       '--iso=ns', "-d'1970-01-01 00:00:00.1234567 UTC +961062237.987654321 sec'",
-      {OUT=>'2000-06-15T09:43:58,111111021+0000'}],
+      {OUT=>"2000-06-15T09:43:58,111111021+0000\n"}],
 
      # Since coreutils/lib/getdate.y revision 1.96 (post-coreutils-5.3.0),
      # a command like the following would mistakenly exit nonzero with an
@@ -185,34 +186,33 @@ my @Tests =
      # 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'},
+     ['cross-dst', "-d'2005-03-27 +1 day'", '+%Y', {OUT=>"2005\n"},
                  {ENV_DEL => 'TZ'},
                  ],
 
-     ['empty-fmt', '+', {OUT=>''}],
+     ['empty-fmt', '+', {OUT=>"\n"}],
+
+     # Before today's fix, date would print uninitialized data
+     # to standard output for an out-of-range date:
+     # $ /p/bin/date -d @$(echo 2^56-1|bc) 2> /dev/null | od -a -N3
+     # 0000000   p   4   6
+     # 0000003
+     ['uninit-64', '-d @72057594037927935',
+      {OUT=>''},
+      {ERR => "date: invalid date `\@72057594037927935'\n"},
+      {EXIT => 1},
+     ],
     );
 
 # 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'},
+                 "-d'2005-01-01 +$i day'", '+%Y', {OUT=>"2005\n"},
                  {ENV_DEL => 'TZ'},
                  ];
   }
 
-foreach my $t (@Tests)
-  {
-    # Append "\n" to each OUT=> RHS.
-    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};