19f312407SEnji Cooper# 29f312407SEnji Cooper# Regression tests for date(1) 39f312407SEnji Cooper# 49f312407SEnji Cooper# Submitted by Edwin Groothuis <edwin@FreeBSD.org> 59f312407SEnji Cooper# 69f312407SEnji Cooper# 79f312407SEnji Cooper 89f312407SEnji Cooper# 99f312407SEnji Cooper# These two date/times have been chosen carefully -- they 109f312407SEnji Cooper# create both the single digit and double/multidigit version of 119f312407SEnji Cooper# the values. 129f312407SEnji Cooper# 139f312407SEnji Cooper# To create a new one, make sure you are using the UTC timezone! 149f312407SEnji Cooper# 159f312407SEnji Cooper 169f312407SEnji CooperTEST1=3222243 # 1970-02-07 07:04:03 179f312407SEnji CooperTEST2=1005600000 # 2001-11-12 21:11:12 189f312407SEnji Cooper 199f312407SEnji Coopercheck() 209f312407SEnji Cooper{ 219f312407SEnji Cooper local format_string exp_output_1 exp_output_2 229f312407SEnji Cooper 239f312407SEnji Cooper format_string=${1} 249f312407SEnji Cooper exp_output_1=${2} 259f312407SEnji Cooper exp_output_2=${3} 269f312407SEnji Cooper 279f312407SEnji Cooper atf_check -o "inline:${exp_output_1}\n" \ 289f312407SEnji Cooper date -r ${TEST1} +%${format_string} 299f312407SEnji Cooper atf_check -o "inline:${exp_output_2}\n" \ 309f312407SEnji Cooper date -r ${TEST2} +%${format_string} 319f312407SEnji Cooper} 329f312407SEnji Cooper 33*eeb04a73SMateusz Piotrowskiatf_test_case flag_r_file_test 34*eeb04a73SMateusz Piotrowskiflag_r_file_test_body() 35*eeb04a73SMateusz Piotrowski{ 36*eeb04a73SMateusz Piotrowski local file 37*eeb04a73SMateusz Piotrowski 38*eeb04a73SMateusz Piotrowski file="./testfile" 39*eeb04a73SMateusz Piotrowski touch "$file" 40*eeb04a73SMateusz Piotrowski atf_check -o "inline:$(stat -f '%9Fm' "$file")\n" \ 41*eeb04a73SMateusz Piotrowski date -r "$file" +%s.%N 42*eeb04a73SMateusz Piotrowski} 43*eeb04a73SMateusz Piotrowski 449f312407SEnji Cooperformat_string_test() 459f312407SEnji Cooper{ 469f312407SEnji Cooper local desc exp_output_1 exp_output_2 flag 479f312407SEnji Cooper 489f312407SEnji Cooper desc=${1} 499f312407SEnji Cooper flag=${2} 509f312407SEnji Cooper exp_output_1=${3} 519f312407SEnji Cooper exp_output_2=${4} 529f312407SEnji Cooper 539f312407SEnji Cooper atf_test_case ${desc}_test 549f312407SEnji Cooper eval " 559f312407SEnji Cooper${desc}_test_body() { 569f312407SEnji Cooper check ${flag} '${exp_output_1}' '${exp_output_2}'; 579f312407SEnji Cooper}" 589f312407SEnji Cooper atf_add_test_case ${desc}_test 599f312407SEnji Cooper} 609f312407SEnji Cooper 612c77ec54SConrad Meyeriso8601_check() 622c77ec54SConrad Meyer{ 632c77ec54SConrad Meyer local arg flags exp_output_1 exp_output_2 642c77ec54SConrad Meyer 652c77ec54SConrad Meyer arg="${1}" 662c77ec54SConrad Meyer flags="${2}" 672c77ec54SConrad Meyer exp_output_1="${3}" 682c77ec54SConrad Meyer exp_output_2="${4}" 692c77ec54SConrad Meyer 702c77ec54SConrad Meyer atf_check -o "inline:${exp_output_1}\n" \ 712c77ec54SConrad Meyer date $flags -r ${TEST1} "-I${arg}" 722c77ec54SConrad Meyer atf_check -o "inline:${exp_output_2}\n" \ 732c77ec54SConrad Meyer date $flags -r ${TEST2} "-I${arg}" 742c77ec54SConrad Meyer} 752c77ec54SConrad Meyer 762c77ec54SConrad Meyeriso8601_string_test() 772c77ec54SConrad Meyer{ 782c77ec54SConrad Meyer local desc arg exp_output_1 exp_output_2 flags 792c77ec54SConrad Meyer 802c77ec54SConrad Meyer desc="${1}" 812c77ec54SConrad Meyer arg="${2}" 822c77ec54SConrad Meyer flags="${3}" 832c77ec54SConrad Meyer exp_output_1="${4}" 842c77ec54SConrad Meyer exp_output_2="${5}" 852c77ec54SConrad Meyer 862c77ec54SConrad Meyer atf_test_case iso8601_${desc}_test 872c77ec54SConrad Meyer eval " 882c77ec54SConrad Meyeriso8601_${desc}_test_body() { 892c77ec54SConrad Meyer iso8601_check '${arg}' '${flags}' '${exp_output_1}' '${exp_output_2}' 902c77ec54SConrad Meyer}" 912c77ec54SConrad Meyer atf_add_test_case iso8601_${desc}_test 922c77ec54SConrad Meyer 932c77ec54SConrad Meyer if [ -z "$flags" ]; then 942c77ec54SConrad Meyer atf_test_case iso8601_${desc}_parity 952c77ec54SConrad Meyer eval " 962c77ec54SConrad Meyeriso8601_${desc}_parity_body() { 972c77ec54SConrad Meyer local exp1 exp2 982c77ec54SConrad Meyer 992c77ec54SConrad Meyer atf_require_prog gdate 1002c77ec54SConrad Meyer 1012c77ec54SConrad Meyer exp1=\"\$(gdate --date '@${TEST1}' '-I${arg}')\" 1022c77ec54SConrad Meyer exp2=\"\$(gdate --date '@${TEST2}' '-I${arg}')\" 1032c77ec54SConrad Meyer 1042c77ec54SConrad Meyer iso8601_check '${arg}' '' \"\${exp1}\" \"\${exp2}\" 1052c77ec54SConrad Meyer}" 1062c77ec54SConrad Meyer atf_add_test_case iso8601_${desc}_parity 1072c77ec54SConrad Meyer fi 1082c77ec54SConrad Meyer} 1092c77ec54SConrad Meyer 1109f312407SEnji Cooperatf_init_test_cases() 1119f312407SEnji Cooper{ 112*eeb04a73SMateusz Piotrowski atf_add_test_case flag_r_file_test 113*eeb04a73SMateusz Piotrowski 1149f312407SEnji Cooper format_string_test A A Saturday Monday 1159f312407SEnji Cooper format_string_test a a Sat Mon 1169f312407SEnji Cooper format_string_test B B February November 1179f312407SEnji Cooper format_string_test b b Feb Nov 1189f312407SEnji Cooper format_string_test C C 19 20 1199f312407SEnji Cooper format_string_test c c "Sat Feb 7 07:04:03 1970" "Mon Nov 12 21:20:00 2001" 1209f312407SEnji Cooper format_string_test D D 02/07/70 11/12/01 1219f312407SEnji Cooper format_string_test d d 07 12 1229f312407SEnji Cooper format_string_test e e " 7" 12 1239f312407SEnji Cooper format_string_test F F "1970-02-07" "2001-11-12" 1249f312407SEnji Cooper format_string_test G G 1970 2001 1259f312407SEnji Cooper format_string_test g g 70 01 1269f312407SEnji Cooper format_string_test H H 07 21 1279f312407SEnji Cooper format_string_test h h Feb Nov 1289f312407SEnji Cooper format_string_test I I 07 09 1299f312407SEnji Cooper format_string_test j j 038 316 1309f312407SEnji Cooper format_string_test k k " 7" 21 1319f312407SEnji Cooper format_string_test l l " 7" " 9" 1329f312407SEnji Cooper format_string_test M M 04 20 1339f312407SEnji Cooper format_string_test m m 02 11 134*eeb04a73SMateusz Piotrowski format_string_test N N 000000000 000000000 1359f312407SEnji Cooper format_string_test p p AM PM 1369f312407SEnji Cooper format_string_test R R 07:04 21:20 1379f312407SEnji Cooper format_string_test r r "07:04:03 AM" "09:20:00 PM" 1389f312407SEnji Cooper format_string_test S S 03 00 1399f312407SEnji Cooper format_string_test s s ${TEST1} ${TEST2} 1409f312407SEnji Cooper format_string_test U U 05 45 1419f312407SEnji Cooper format_string_test u u 6 1 1429f312407SEnji Cooper format_string_test V V 06 46 1439f312407SEnji Cooper format_string_test v v " 7-Feb-1970" "12-Nov-2001" 1449f312407SEnji Cooper format_string_test W W 05 46 1459f312407SEnji Cooper format_string_test w w 6 1 1469f312407SEnji Cooper format_string_test X X "07:04:03" "21:20:00" 1479f312407SEnji Cooper format_string_test x x "02/07/70" "11/12/01" 1489f312407SEnji Cooper format_string_test Y Y 1970 2001 1499f312407SEnji Cooper format_string_test y y 70 01 1509f312407SEnji Cooper format_string_test Z Z UTC UTC 1519f312407SEnji Cooper format_string_test z z +0000 +0000 1529f312407SEnji Cooper format_string_test percent % % % 1539f312407SEnji Cooper format_string_test plus + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001" 1542c77ec54SConrad Meyer 1552c77ec54SConrad Meyer iso8601_string_test default "" "" "1970-02-07" "2001-11-12" 1562c77ec54SConrad Meyer iso8601_string_test date date "" "1970-02-07" "2001-11-12" 1572c77ec54SConrad Meyer iso8601_string_test hours hours "" "1970-02-07T07+00:00" "2001-11-12T21+00:00" 1582c77ec54SConrad Meyer iso8601_string_test minutes minutes "" "1970-02-07T07:04+00:00" "2001-11-12T21:20+00:00" 1592c77ec54SConrad Meyer iso8601_string_test seconds seconds "" "1970-02-07T07:04:03+00:00" "2001-11-12T21:20:00+00:00" 160*eeb04a73SMateusz Piotrowski iso8601_string_test ns ns "" "1970-02-07T07:04:03,000000000+00:00" "2001-11-12T21:20:00,000000000+00:00" 1619f312407SEnji Cooper} 162