1# regression tests for the touch utility
2
3export TZ=EST5EDT
4
5TEST 01 'basics'
6	EXEC -a -m -t 2000-01-02+03:04:05 a
7	PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
8		OUTPUT - $'2000-01-02+03:04:05 2000-01-02+03:04:05 a'
9	EXEC -a -t 2000-05-04+03:02:01 a
10		OUTPUT -
11	PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
12		OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 a'
13	EXEC -r a b
14		OUTPUT -
15	PROG ls --format="%(mtime:time=%K)s %(path)s" b
16		OUTPUT - $'2000-01-02+03:04:05 b'
17	EXEC -a -r a b
18		OUTPUT -
19	PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" b
20		OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 b'
21	EXEC -n b
22		OUTPUT -
23	PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" b
24		OUTPUT - $'2000-05-04+03:02:01 2000-01-02+03:04:05 b'
25
26TEST 02 'times'
27	EXEC -a -t 2000-05-04+03:02:01 a
28	EXEC -m -t 2000-01-02+03:04:05 a
29	EXEC -a -t mtime a
30	PROG ls --format="%(atime:time=%K)s %(mtime:time=%K)s %(path)s" a
31		OUTPUT - $'2000-01-02+03:04:05 2000-01-02+03:04:05 a'
32	EXEC 0102030405 b
33		OUTPUT -
34	PROG ls --format="%(mtime:time=%K)s %(path)s" b
35		OUTPUT - $'2001-02-03+04:05:00 b'
36	EXEC -t 0102030405 b
37		OUTPUT -
38	PROG ls --format="%(mtime:time=%K)s %(path)s" b
39		OUTPUT - $'2001-02-03+04:05:00 b'
40	EXEC 0203040501 b
41		OUTPUT -
42	PROG ls --format="%(mtime:time=%K)s %(path)s" b
43		OUTPUT - $'2002-03-04+05:01:00 b'
44	EXEC -t 0203040501 b
45		OUTPUT -
46	PROG ls --format="%(mtime:time=%K)s %(path)s" b
47		OUTPUT - $'2002-03-04+05:01:00 b'
48	EXEC 9901020304 b
49		OUTPUT -
50	PROG ls --format="%(mtime:time=%K)s %(path)s" b
51		OUTPUT - $'1999-01-02+03:04:00 b'
52	EXEC -t 9901020304 b
53		OUTPUT -
54	PROG ls --format="%(mtime:time=%K)s %(path)s" b
55		OUTPUT - $'1999-01-02+03:04:00 b'
56	EXEC 0102030499 b
57		OUTPUT -
58	PROG ls --format="%(mtime:time=%K)s %(path)s" b
59		OUTPUT - $'1999-01-02+03:04:00 b'
60	EXEC -t 0102030499 b
61		OUTPUT -
62	PROG ls --format="%(mtime:time=%K)s %(path)s" b
63		OUTPUT - $'1999-01-02+03:04:00 b'
64	EXEC 200001020304 b
65		OUTPUT -
66	PROG ls --format="%(mtime:time=%K)s %(path)s" b
67		OUTPUT - $'2000-01-02+03:04:00 b'
68	EXEC -t 200001020304 b
69		OUTPUT -
70	PROG ls --format="%(mtime:time=%K)s %(path)s" b
71		OUTPUT - $'2000-01-02+03:04:00 b'
72	EXEC 010203042000 b
73		OUTPUT -
74	PROG ls --format="%(mtime:time=%K)s %(path)s" b
75		OUTPUT - $'2000-01-02+03:04:00 b'
76	EXEC -t 010203042000 b
77		OUTPUT -
78	PROG ls --format="%(mtime:time=%K)s %(path)s" b
79		OUTPUT - $'2000-01-02+03:04:00 b'
80
81TEST 03 'subsecond times'
82
83	IF 'touch -a -t 2000-05-04+03:02:01.098 a; [[ $(ls --format="%(atime:time=%N)s" a) == 098000000 ]]'
84
85	EXEC -a -t 2000-05-04+03:02:01.098 a
86	EXEC -m -t 2000-01-02+03:04:05.678 a
87	PROG ls --format="%(atime:time=%K.%N)s %(mtime:time=%K.%N)s %(path)s" a
88		OUTPUT - $'2000-05-04+03:02:01.098000000 2000-01-02+03:04:05.678000000 a'
89	EXEC -a -t mtime a
90		OUTPUT -
91	PROG ls --format="%(atime:time=%K.%N)s %(mtime:time=%K.%N)s %(path)s" a
92		OUTPUT - $'2000-01-02+03:04:05.678000000 2000-01-02+03:04:05.678000000 a'
93
94	ELSE 'filesystem disables subsecond time stamps'
95
96	FI
97