Blame tests/include-exclude

Packit 709fb3
#!/bin/sh
Packit 709fb3
# Use of any --include or --exclude* option would segfault in 2.6 and 2.6.1
Packit 709fb3
. "${srcdir=.}/init.sh"; path_prepend_ ../src
Packit 709fb3
Packit 709fb3
mkdir -p x/dir || framework_failure_
Packit 709fb3
echo aaa > x/a || framework_failure_
Packit 709fb3
echo bbb > x/b || framework_failure_
Packit 709fb3
echo ddd > x/dir/d || framework_failure_
Packit 709fb3
Packit 709fb3
printf '%s\n' x/b:bbb x/dir/d:ddd > exp-not-a   || framework_failure_
Packit 709fb3
printf '%s\n'         x/dir/d:ddd > exp-not-ab  || framework_failure_
Packit 709fb3
printf '%s\n' x/a:aaa x/b:bbb     > exp-not-d   || framework_failure_
Packit 709fb3
printf '%s\n' x/a:aaa x/b:bbb     > exp-not-dir || framework_failure_
Packit 709fb3
printf '%s\n' x/a:aaa             > exp-a       || framework_failure_
Packit 709fb3
printf '%s\n' a:aaa               > exp-aa      || framework_failure_
Packit 709fb3
printf '%s\n' aaa                 > exp-aaa     || framework_failure_
Packit 709fb3
printf '%s\n' ./x/a ./x/b ./x/dir/d | sort > exp-dotnames || framework_failure_
Packit 709fb3
Packit 709fb3
grep -r --exclude='a*'    . x > out || fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-a out || fail=1
Packit 709fb3
Packit 709fb3
grep -r --exclude='Rumpelstiltskin' --include='a*' --exclude='a*' . x > out ||
Packit 709fb3
  fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-a out || fail=1
Packit 709fb3
Packit 709fb3
grep -r --exclude='[ab]'  . x > out || fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-ab out || fail=1
Packit 709fb3
Packit 709fb3
grep -r --exclude='*d'    . x > out || fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-d out || fail=1
Packit 709fb3
Packit 709fb3
grep -r --exclude-dir=dir . x > out || fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-dir out || fail=1
Packit 709fb3
Packit 709fb3
grep -r --exclude-dir=dir/ . x > out || fail=1
Packit 709fb3
sort out > k && mv k out
Packit 709fb3
compare exp-not-dir out || fail=1
Packit 709fb3
Packit 709fb3
# Test with a non-glob.
Packit 709fb3
grep -r --include=a    . x > out || fail=1
Packit 709fb3
# no need to sort
Packit 709fb3
compare exp-a out || fail=1
Packit 709fb3
Packit 709fb3
# Also test --include with a "glob".
Packit 709fb3
grep -r --include='a*'    . x > out || fail=1
Packit 709fb3
# no need to sort
Packit 709fb3
compare exp-a out || fail=1
Packit 709fb3
Packit 709fb3
# --include (without --recursive) uses different code
Packit 709fb3
grep --directories=skip --include=x/a --exclude-dir=dir '^aaa$' x/* > out \
Packit 709fb3
    || fail=1
Packit 709fb3
compare exp-a out || fail=1
Packit 709fb3
Packit 709fb3
(cd x && grep -r --exclude-dir=. '^aaa$') > out || fail=1
Packit 709fb3
compare exp-aa out || fail=1
Packit 709fb3
Packit 709fb3
grep --exclude=- '^aaa$' - < x/a > out || fail=1
Packit 709fb3
compare exp-aaa out || fail=1
Packit 709fb3
Packit 709fb3
for exclude in 'x' 'x*'; do
Packit 709fb3
    grep -rl --exclude-dir="$exclude" . x > out
Packit 709fb3
    test $? -eq 1 || fail=1
Packit 709fb3
    compare /dev/null out || fail=1
Packit 709fb3
done
Packit 709fb3
Packit 709fb3
for exclude in 'x' 'x*' './x' './x*'; do
Packit 709fb3
    grep -rl --exclude-dir="$exclude" . ./x | sort > out || fail=1
Packit 709fb3
    compare /dev/null out || fail=1
Packit 709fb3
done
Packit 709fb3
Packit 709fb3
Exit $fail