Blame tests/long-line-vs-2GiB-read
|
Packit |
709fb3 |
#!/bin/sh
|
|
Packit |
709fb3 |
# Ensure that grep can handle lines 2GiB long.
|
|
Packit |
709fb3 |
# Before grep-2.16, a line of length 2^31 or greater would provoke
|
|
Packit |
709fb3 |
# an "Invalid argument" (EINVAL) failure from the read syscall on
|
|
Packit |
709fb3 |
# systems like OS/X 10.8.5.
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
# Searching 2GiB takes a while.
|
|
Packit |
709fb3 |
expensive_
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
echo big > exp || framework_failure_
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
MiB=1048576
|
|
Packit |
709fb3 |
dd bs=$MiB seek=2048 of=big < /dev/null || framework_failure_
|
|
Packit |
709fb3 |
echo x >> big || framework_failure_
|
|
Packit |
709fb3 |
grep -l x big > out 2> err || fail=1
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
# Not everyone has 2GB of memory free.
|
|
Packit |
709fb3 |
grep '^grep: memory exhausted$' err && skip_ 'memory exhausted'
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
compare exp out || fail=1
|
|
Packit |
709fb3 |
compare /dev/null err || fail=1
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
Exit $fail
|