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

« back to all changes in this revision

Viewing changes to tests/split/fail.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
# split must fail when given length/count of zero.
 
3
 
 
4
# Copyright (C) 2003-2012 Free Software Foundation, Inc.
 
5
 
 
6
# This program is free software: you can redistribute it and/or modify
 
7
# it under the terms of the GNU General Public License as published by
 
8
# the Free Software Foundation, either version 3 of the License, or
 
9
# (at your option) any later version.
 
10
 
 
11
# This program is distributed in the hope that it will be useful,
 
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
# GNU General Public License for more details.
 
15
 
 
16
# You should have received a copy of the GNU General Public License
 
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
 
 
19
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
 
20
print_ver_ split
 
21
getlimits_
 
22
 
 
23
touch in || framework_failure_
 
24
 
 
25
 
 
26
split -a 0 in 2> /dev/null || fail=1
 
27
split -b 0 in 2> /dev/null && fail=1
 
28
split -C 0 in 2> /dev/null && fail=1
 
29
split -l 0 in 2> /dev/null && fail=1
 
30
split -n 0 in 2> /dev/null && fail=1
 
31
split -n 1/0 in 2> /dev/null && fail=1
 
32
split -n 0/1 in 2> /dev/null && fail=1
 
33
split -n 2/1 in 2> /dev/null && fail=1
 
34
 
 
35
# Make sure -C doesn't create empty files.
 
36
rm -f x?? || fail=1
 
37
echo x | split -C 1 || fail=1
 
38
test -f xaa && test -f xab || fail=1
 
39
test -f xac && fail=1
 
40
 
 
41
# Make sure that the obsolete -N notation still works
 
42
split -1 in 2> /dev/null || fail=1
 
43
 
 
44
# Then make sure that -0 evokes a failure.
 
45
split -0 in 2> /dev/null && fail=1
 
46
 
 
47
split --lines=$UINTMAX_MAX in || fail=1
 
48
split --bytes=$OFF_T_MAX in || fail=1
 
49
split --line-bytes=$OFF_T_OFLOW 2> /dev/null in && fail=1
 
50
split --line-bytes=$SIZE_OFLOW 2> /dev/null in && fail=1
 
51
if truncate -s$SIZE_OFLOW large; then
 
52
  # Ensure we can split chunks of a large file on 32 bit hosts
 
53
  split --number=$SIZE_OFLOW/$SIZE_OFLOW large >/dev/null || fail=1
 
54
fi
 
55
split --number=r/$UINTMAX_MAX/$UINTMAX_MAX </dev/null >/dev/null || fail=1
 
56
split --number=r/$UINTMAX_OFLOW </dev/null 2>/dev/null && fail=1
 
57
 
 
58
# Make sure that a huge obsolete option evokes the right failure.
 
59
split -99999999999999999991 2> out && fail=1
 
60
 
 
61
# On losing systems (x86 Solaris 5.9 c89), we get a message like this:
 
62
#   split: line count option -9999999999... is too large
 
63
# while on most, we get this:
 
64
#   split: line count option -99999999999999999991... is too large
 
65
# so map them both to -99*.
 
66
sed 's/99[19]*/99*/' out > out-t
 
67
mv -f out-t out
 
68
 
 
69
cat <<\EOF > exp
 
70
split: line count option -99*... is too large
 
71
EOF
 
72
compare exp out || fail=1
 
73
 
 
74
# Make sure split fails when it can't read input
 
75
# (the current directory in this case)
 
76
if ! cat . >/dev/null; then
 
77
  # can't read() directories
 
78
  split . && fail=1
 
79
fi
 
80
 
 
81
Exit $fail