~ubuntu-branches/ubuntu/utopic/coreutils/utopic-proposed

« back to all changes in this revision

Viewing changes to tests/tail-2/tail-n0f.sh

  • Committer: Package Import Robot
  • Author(s): Colin Watson
  • Date: 2012-11-28 03:03:42 UTC
  • mfrom: (8.3.4 sid)
  • Revision ID: package-import@ubuntu.com-20121128030342-21zanj8354gas5gr
Tags: 8.20-3ubuntu1
* Resynchronise with Debian.  Remaining changes:
  - Make 'uname -i -p' return the real processor/hardware, instead of
    unknown.
  - Build-depend on gettext:any instead of on gettext, so that apt-get can
    properly resolve build-dependencies on the tool when cross-building.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# Make sure that 'tail -n0 -f' and 'tail -c0 -f' sleep
 
3
# rather than doing what amounted to a busy-wait.
 
4
 
 
5
# Copyright (C) 2003-2012 Free Software Foundation, Inc.
 
6
 
 
7
# This program is free software: you can redistribute it and/or modify
 
8
# it under the terms of the GNU General Public License as published by
 
9
# the Free Software Foundation, either version 3 of the License, or
 
10
# (at your option) any later version.
 
11
 
 
12
# This program is distributed in the hope that it will be useful,
 
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
# GNU General Public License for more details.
 
16
 
 
17
# You should have received a copy of the GNU General Public License
 
18
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
19
 
 
20
# This bug was fixed for 5.0.91
 
21
# It skips the test if your system lacks a /proc/$pid/status
 
22
# file, or if its contents don't look right.
 
23
 
 
24
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
 
25
print_ver_ tail
 
26
 
 
27
require_proc_pid_status_
 
28
 
 
29
touch empty || framework_failure_
 
30
echo anything > nonempty || framework_failure_
 
31
 
 
32
 
 
33
for inotify in ---disable-inotify ''; do
 
34
  for file in empty nonempty; do
 
35
    for c_or_n in c n; do
 
36
      tail --sleep=4 -${c_or_n} 0 -f $inotify $file &
 
37
      pid=$!
 
38
      tail_sleeping()
 
39
      {
 
40
        local delay="$1"; sleep $delay
 
41
        state=$(get_process_status_ $pid)
 
42
        case $state in
 
43
          S*) ;;
 
44
          *) return 1;;
 
45
        esac
 
46
      }
 
47
      # Wait up to 1.5s for tail to sleep
 
48
      retry_delay_ tail_sleeping .1 4 ||
 
49
        { echo $0: process in unexpected state: $state >&2; fail=1; }
 
50
      kill $pid
 
51
    done
 
52
  done
 
53
done
 
54
 
 
55
Exit $fail