summaryrefslogtreecommitdiff
path: root/tests/ls/time-1
blob: aaaf04ad1f8f3b7e13b58c2da6215d84a6bfa7f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/sh
# Test some of ls's sorting options.

# Copyright (C) 1998, 1999, 2000, 2001, 2004 Free Software Foundation,
# Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.

if test "$VERBOSE" = yes; then
  set -x
  ls --version
fi

# Avoid any possible glitches due to daylight-saving changes near the
# time stamps used during the test.
TZ=UTC0
export TZ

# Avoid glitches due to the environment specifying `ls' styles.
unset QUOTING_STYLE
unset TIME_STYLE

tmp=t-ls.$$

framework_failure=0
mkdir $tmp || framework_failure=1
cd $tmp || framework_failure=1

t1='1998-01-15 21:00'
t2='1998-01-15 22:00'
t3='1998-01-15 23:00'

u1='1998-01-14 11:00'
u2='1998-01-14 12:00'
u3='1998-01-14 13:00'

touch -m -d "$t3" a || framework_failure=1
touch -m -d "$t2" b || framework_failure=1
touch -m -d "$t1" c || framework_failure=1

touch -a -d "$u3" c || framework_failure=1
touch -a -d "$u2" b || framework_failure=1
# Make sure A has ctime at least 1 second more recent than C's.
sleep 2
touch -a -d "$u1" a || framework_failure=1

fail=0

# A has ctime more recent than C.
set `ls -c a c`
test "$*" = 'a c' || fail=1

# Sleep so long in an attempt to avoid spurious failures
# due to NFS caching and/or clock skew.
sleep 2

# Create a link, updating c's ctime.
ln c d || framework_failure=1

# Before we go any further, verify that touch's -m option works.
set -- `ls --full -l a`
case "$*" in
  *" $t3:00.000000000 +0000 a") ;;
  *)
  # This might be what's making HPUX 11 systems fail this test.
  cat >&2 << EOF
A basic test of touch -m has just failed, so the subsequent
tests in this file will not be run.

In the output below, the date of last modification for \`a' should
have been $t3.
EOF
  #`
  ls --full -l a
  framework_failure=1
  ;;
esac

# Now test touch's -a option.
set -- `ls --full -lu a`
case "$*" in
  *" $u1:00.000000000 +0000 a") ;;
  *)
  # This might be what's making HPUX 11 systems fail this test.
  cat >&2 << EOF
A basic test of touch -a has just failed, so the subsequent
tests in this file will not be run.

In the output below, the date of last access for \`a' should
have been $u1.
EOF
  ls --full -lu a
  (exit 77); exit 77
  ;;
esac

if test $framework_failure = 1; then
  echo 'failure in testing framework'
  exit 1
fi

set `ls -ut a b c`
test "$*" = 'c b a' && : || fail=1
test $fail = 1 && ls -l --full-time --time=access a b c

set `ls -t a b c`
test "$*" = 'a b c' && : || fail=1
test $fail = 1 && ls -l --full-time a b c

# Now, C should have ctime more recent than A.
set `ls -ct a c`
if test "$*" = 'c a'; then
  : ok
else
  # In spite of documentation, (e.g., stat(2)), neither link nor chmod
  # update a file's st_ctime on SunOS4.1.4.
  cat >&2 << \EOF
failed ls ctime test -- this failure is expected at least for SunOS4.1.4
and for tmpfs file systems on Solaris 5.5.1.

In the output below, `c' should have had a ctime more recent than
that of `a', but does not.
EOF
  #'
  ls -ctl --full-time a c
  fail=1
fi

cd ..
rm -rf $tmp

exit $fail