Please consider this test enhancement.

Cheers,

-- 
Cristian
Index: testsuite/date/date-works
===================================================================
--- testsuite/date/date-works	(revision 21869)
+++ testsuite/date/date-works	(working copy)
@@ -1,44 +1,133 @@
 dt=`busybox date`
-# Expected format: Fri Apr 25 03:47:55 CEST 2008
+# Expected format: Fri Apr 25 03:47:55 CESTs 2008
 dt=`echo "$dt" | sed 's/^[^ ][^ ][^ ] [^ ][^ ][^ ] [ 0123][0-9] [012][0-9]:[0-5][0-9]:[0-6][0-9] [A-Z][A-Z]* [012][0-9][0-9][0-9]$/OK/'`
 test x"$dt" = x"OK"
 
-dt=`busybox date -d 1:2`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Fri Apr 25 01:02:00"
+dt=`busybox date -d 1:2 +%T`
+test x"$dt" = x"01:02:00"
 
-dt=`busybox date -d 1:2:3`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Fri Apr 25 01:02:03"
+dt=`busybox date -d 1:2:3 +%T`
+test x"$dt" = x"01:02:03"
 
+host_date=/bin/date
+
+# date (GNU coreutils) 6.10 reports:
+#	date: invalid date '1.2-3:4'
+# busybox 1.11.0.svn date reports:
+#	date: invalid date '1/2 3:4'
+
+hdt=`$host_date -d '1/2 3:4'`
 dt=`busybox date -d 1.2-3:4`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Wed Jan  2 03:04:00"
+test x"$hdt" = x"$dt"
 
+hdt=`$host_date -d '1/2 3:4:5'`
 dt=`busybox date -d 1.2-3:4:5`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Wed Jan  2 03:04:05"
+test x"$hdt" = x"$dt"
 
+hdt=`$host_date -d '1/2/1999 3:4'`
 dt=`busybox date -d 1999.1.2-3:4`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Sat Jan  2 03:04:00"
+test x"$hdt" = x"$dt"
 
+hdt=`$host_date -d '1/2/1999 3:4:5'`
 dt=`busybox date -d 1999.1.2-3:4:5`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Sat Jan  2 03:04:05"
+test x"$hdt" = x"$dt"
 
+hdt=`$host_date -d '1999-1-2 3:4:5'`
 dt=`busybox date -d '1999-1-2 3:4:5'`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Sat Jan  2 03:04:05"
+test x"$hdt" = x"$dt"
 
-dt=`busybox date -d 01231133`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Wed Jan 23 11:33:00"
+# Avoid using week day in this evaluation, as it's mostly different every year
+# date (GNU coreutils) 6.10 reports:
+#	date: invalid date '01231133'
+dt=`busybox date -d 01231133 +%c`
+dt=`echo "$dt" | cut -b5-19`
+test x"$dt" = x"Jan 23 11:33:00"
 
-dt=`busybox date -d 012311332000`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Sun Jan 23 11:33:00"
+# date (GNU coreutils) 6.10 reports:
+#	date: invalid date '012311332000'
+dt=`busybox date -d 012311332000 +%c`
+test x"$dt" = x"Sun Jan 23 11:33:00 2000"
 
-dt=`busybox date -d 012311332000.30`
-dt=`echo "$dt" | cut -b1-19`
-test x"$dt" = x"Sun Jan 23 11:33:30"
+# date (GNU coreutils) 6.10 reports:
+#	date: invalid date '012311332000'
+dt=`busybox date -d 012311332000.30 +%c`
+test x"$dt" = x"Sun Jan 23 11:33:30 2000"
+
+lcbbd="LC_ALL=C busybox date"
+wd=$(eval $lcbbd +%a)		# weekday name
+mn=$(eval $lcbbd +%b)		# month name
+dm=$(eval $lcbbd +%e)		# day of month, space padded
+h=$(eval $lcbbd +%H)		# hour, zero padded
+m=$(eval $lcbbd +%M)		# minute, zero padded
+s=$(eval $lcbbd +%S)		# second, zero padded
+z=$(eval $lcbbd -u +%Z)		# time zone abbreviation
+y=$(eval $lcbbd +%Y)		# year
+
+res=OK
+case $wd in
+	Sun)
+		;;
+	Mon)
+		;;
+	Tue)
+		;;
+	Wed)
+		;;
+	Thu)
+		;;
+	Fri)
+		;;
+	Sat)
+		;;
+	*)
+		res=BAD
+		;;
+esac
+
+case $mn in
+	Jan)
+		;;
+	Feb)
+		;;
+	Mar)
+		;;
+	Apr)
+		;;
+	May)
+		;;
+	Jun)
+		;;
+	Jul)
+		;;
+	Aug)
+		;;
+	Sep)
+		;;
+	Oct)
+		;;
+	Nov)
+		;;
+	Dec)
+		;;
+	*)
+		res=BAD
+		;;
+esac
+
+dm=${dm# *}
+[ $dm -ge 1 ] && [ $dm -le 31 ] || res=BAD
+h=${h#0}
+[ $h -ge 0 ] && [ $h -le 23 ] || res=BAD
+m=${m#0}
+[ $m -ge 0 ] && [ $m -le 59 ] || res=BAD
+s=${s#0}
+[ $s -ge 0 ] && [ $s -le 59 ] || res=BAD
+[ $z = UTC ] || res=BAD
+[ $y -ge 1970 ] || res=BAD
+
+test x"$res" = xOK
+
+if dt=`busybox date -d 012311332000.30 %+c`; then
+	echo "Expected this to fail with: \"date: invalid date '%+c'\"" >&2
+	exit 1
+fi
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to