Path: blob/main/bin/date/tests/format_string_test.sh
39483 views
#1# Regression tests for date(1)2#3# Submitted by Edwin Groothuis <[email protected]>4#5#67#8# These two date/times have been chosen carefully -- they9# create both the single digit and double/multidigit version of10# the values.11#12# To create a new one, make sure you are using the UTC timezone!13#1415TEST1=3222243 # 1970-02-07 07:04:0316TEST2=1005600000 # 2001-11-12 21:11:121718check()19{20local format_string exp_output_1 exp_output_22122format_string=${1}23exp_output_1=${2}24exp_output_2=${3}2526atf_check -o "inline:${exp_output_1}\n" \27date -r ${TEST1} +%${format_string}28atf_check -o "inline:${exp_output_2}\n" \29date -r ${TEST2} +%${format_string}30}3132atf_test_case flag_r_file_test33flag_r_file_test_body()34{35local file3637file="./testfile"38touch "$file"39atf_check -o "inline:$(stat -f '%9Fm' "$file")\n" \40date -r "$file" +%s.%N41}4243format_string_test()44{45local desc exp_output_1 exp_output_2 flag4647desc=${1}48flag=${2}49exp_output_1=${3}50exp_output_2=${4}5152atf_test_case ${desc}_test53eval "54${desc}_test_body() {55check ${flag} '${exp_output_1}' '${exp_output_2}';56}"57atf_add_test_case ${desc}_test58}5960iso8601_check()61{62local arg flags exp_output_1 exp_output_26364arg="${1}"65flags="${2}"66exp_output_1="${3}"67exp_output_2="${4}"6869atf_check -o "inline:${exp_output_1}\n" \70date $flags -r ${TEST1} "-I${arg}"71atf_check -o "inline:${exp_output_2}\n" \72date $flags -r ${TEST2} "-I${arg}"73}7475iso8601_string_test()76{77local desc arg exp_output_1 exp_output_2 flags7879desc="${1}"80arg="${2}"81flags="${3}"82exp_output_1="${4}"83exp_output_2="${5}"8485atf_test_case iso8601_${desc}_test86eval "87iso8601_${desc}_test_body() {88iso8601_check '${arg}' '${flags}' '${exp_output_1}' '${exp_output_2}'89}"90atf_add_test_case iso8601_${desc}_test9192if [ -z "$flags" ]; then93atf_test_case iso8601_${desc}_parity94eval "95iso8601_${desc}_parity_body() {96local exp1 exp29798atf_require_prog gdate99100exp1=\"\$(gdate --date '@${TEST1}' '-I${arg}')\"101exp2=\"\$(gdate --date '@${TEST2}' '-I${arg}')\"102103iso8601_check '${arg}' '' \"\${exp1}\" \"\${exp2}\"104}"105atf_add_test_case iso8601_${desc}_parity106fi107}108109atf_init_test_cases()110{111atf_add_test_case flag_r_file_test112113format_string_test A A Saturday Monday114format_string_test a a Sat Mon115format_string_test B B February November116format_string_test b b Feb Nov117format_string_test C C 19 20118format_string_test c c "Sat Feb 7 07:04:03 1970" "Mon Nov 12 21:20:00 2001"119format_string_test D D 02/07/70 11/12/01120format_string_test d d 07 12121format_string_test e e " 7" 12122format_string_test F F "1970-02-07" "2001-11-12"123format_string_test G G 1970 2001124format_string_test g g 70 01125format_string_test H H 07 21126format_string_test h h Feb Nov127format_string_test I I 07 09128format_string_test j j 038 316129format_string_test k k " 7" 21130format_string_test l l " 7" " 9"131format_string_test M M 04 20132format_string_test m m 02 11133format_string_test N N 000000000 000000000134format_string_test p p AM PM135format_string_test R R 07:04 21:20136format_string_test r r "07:04:03 AM" "09:20:00 PM"137format_string_test S S 03 00138format_string_test s s ${TEST1} ${TEST2}139format_string_test U U 05 45140format_string_test u u 6 1141format_string_test V V 06 46142format_string_test v v " 7-Feb-1970" "12-Nov-2001"143format_string_test W W 05 46144format_string_test w w 6 1145format_string_test X X "07:04:03" "21:20:00"146format_string_test x x "02/07/70" "11/12/01"147format_string_test Y Y 1970 2001148format_string_test y y 70 01149format_string_test Z Z UTC UTC150format_string_test z z +0000 +0000151format_string_test percent % % %152format_string_test plus + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001"153154iso8601_string_test default "" "" "1970-02-07" "2001-11-12"155iso8601_string_test date date "" "1970-02-07" "2001-11-12"156iso8601_string_test hours hours "" "1970-02-07T07+00:00" "2001-11-12T21+00:00"157iso8601_string_test minutes minutes "" "1970-02-07T07:04+00:00" "2001-11-12T21:20+00:00"158iso8601_string_test seconds seconds "" "1970-02-07T07:04:03+00:00" "2001-11-12T21:20:00+00:00"159iso8601_string_test ns ns "" "1970-02-07T07:04:03,000000000+00:00" "2001-11-12T21:20:00,000000000+00:00"160}161162163