# regression tests for the touch utility
export TZ=EST5EDT
TEST 01 'basics'
EXEC -a -m -t 2000-01-02+03:04:05 a
PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
OUTPUT - $'2000-01-02+03:04:05 2000-01-02+03:04:05 a'
EXEC -a -t 2000-05-04+03:02:01 a
OUTPUT -
PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 a'
EXEC -r a b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-01-02+03:04:05 b'
EXEC -a -r a b
OUTPUT -
PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 b'
EXEC -n b
OUTPUT -
PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 b'
TEST 02 'times'
EXEC -a -t 2000-05-04+03:02:01 a
EXEC -m -t 2000-01-02+03:04:05 a
EXEC -a -t mtime a
PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
OUTPUT - $'2000-01-02+03:04:05 2000-01-02+03:04:05 a'
EXEC 0102030405 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2001-02-03+04:05:00 b'
EXEC -t 0102030405 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2001-02-03+04:05:00 b'
EXEC 0203040501 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2002-03-04+05:01:00 b'
EXEC -t 0203040501 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2002-03-04+05:01:00 b'
EXEC 9901020304 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'1999-01-02+03:04:00 b'
EXEC -t 9901020304 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'1999-01-02+03:04:00 b'
EXEC 0102030499 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'1999-01-02+03:04:00 b'
EXEC -t 0102030499 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'1999-01-02+03:04:00 b'
EXEC 200001020304 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-01-02+03:04:00 b'
EXEC -t 200001020304 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-01-02+03:04:00 b'
EXEC 010203042000 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-01-02+03:04:00 b'
EXEC -t 010203042000 b
OUTPUT -
PROG ls --format="%(mtime:time=%K)s %(path)s" b
OUTPUT - $'2000-01-02+03:04:00 b'
TEST 03 'subsecond times'
IF 'touch -a -t 2000-05-04+03:02:01.098 a; [[ $(ls --format="%(atime:time=%N)s" a) == 098000000 ]]'
EXEC -a -t 2000-05-04+03:02:01.098 a
EXEC -m -t 2000-01-02+03:04:05.678 a
PROG ls --format="%(atime:time=%K.%N)s %(mtime:time=%K.%N)s %(path)s" a
OUTPUT - $'2000-05-04+03:02:01.098000000 2000-01-02+03:04:05.678000000 a'
EXEC -a -t mtime a
OUTPUT -
PROG ls --format="%(atime:time=%K.%N)s %(mtime:time=%K.%N)s %(path)s" a
OUTPUT - $'2000-01-02+03:04:05.678000000 2000-01-02+03:04:05.678000000 a'
ELSE 'filesystem disables subsecond time stamps'
FI