diff options
Diffstat (limited to 'source3/script/tests/test_timestamps.sh')
-rwxr-xr-x | source3/script/tests/test_timestamps.sh | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/source3/script/tests/test_timestamps.sh b/source3/script/tests/test_timestamps.sh new file mode 100755 index 0000000..a158beb --- /dev/null +++ b/source3/script/tests/test_timestamps.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# +# This verifies getting and setting timestamps with non-trivial values like 0 +# and < 0 works. +# + +if [ $# -lt 5 ]; then + echo "Usage: $0 SERVER_IP USERNAME PASSWORD PREFIX SMBCLIENT" + exit 1 +fi + +SERVER_IP="$1" +USERNAME="$2" +PASSWORD="$3" +PREFIX="$4" +SMBCLIENT="$5" + +SMBCLIENT="$VALGRIND ${SMBCLIENT}" +failed=0 + +incdir=$(dirname $0)/../../../testprogs/blackbox +. $incdir/subunit.sh + +export TZ=GMT + +setup_testfiles() +{ + touch -d "$(date --date=@0)" $PREFIX/time_0 + touch -d "$(date --date=@-1)" $PREFIX/time_-1 + touch -d "$(date --date=@-2)" $PREFIX/time_-2 + touch -t 196801010000 $PREFIX/time_1968 +} + +remove_testfiles() +{ + rm $PREFIX/time_0 + rm $PREFIX/time_-1 + rm $PREFIX/time_-2 + rm $PREFIX/time_1968 +} + +test_time() +{ + local file="$1" + local expected="$2" + + $SMBCLIENT //$SERVER/tmp -U $USERNAME%$PASSWORD -c "allinfo $file" + out=$($SMBCLIENT //$SERVER/tmp -U $USERNAME%$PASSWORD -c "allinfo $file" 2>&1) || return 1 + echo "smbclient allinfo on $file returned: \"$out\"" + + # Ignore create_time as that is synthesized + for time in access_time write_time change_time; do + echo "$out" | grep "$time" | grep "$expected" || { + echo "Expected \"$expected\", got: \"$(echo $out | grep $time)\"" + return 1 + } + done +} + +#Setup +testit "create testfiles" setup_testfiles || failed=$(expr $failed + 1) + +# Tests +testit "time=0" test_time time_0 "Thu Jan 1 12:00:00 AM 1970 GMT" || failed=$(expr $failed + 1) +testit "time=-1" test_time time_-1 "Wed Dec 31 11:59:59 PM 1969 GMT" || failed=$(expr $failed + 1) +testit "time=-2" test_time time_-2 "Wed Dec 31 11:59:58 PM 1969 GMT" || failed=$(expr $failed + 1) +testit "time=1968" test_time time_1968 "Mon Jan 1 12:00:00 AM 1968 GMT" || failed=$(expr $failed + 1) + +# Cleanup +testit "delete testfile" remove_testfiles || failed=$(expr $failed + 1) + +exit $failed |