#!/bin/sh # various csplit tests if test "$VERBOSE" = yes; then set -x csplit --version fi . $srcdir/../lang-default pwd=`pwd` tmp=csplit.$$ trap 'status=$?; cd $pwd; rm -rf $tmp && exit $status' 0 trap '(exit $?); exit' 1 2 13 15 framework_failure=0 mkdir $tmp || framework_failure=1 cd $tmp || framework_failure=1 if test $framework_failure = 1; then echo '$0: failure in testing framework' 1>&2 (exit 1); exit fi fail=0 # csplit could get a failed assertion to 2.0.17 (echo a; echo; echo) > in csplit in '/^$/' 2 > out || fail=1 cat < exp 2 0 2 EOF cmp out exp || fail=1 test $fail = 1 && diff out exp 2> /dev/null rm -f in out exp # csplit would infloop (echo; echo a) > in csplit in '/a/-1' '{*}' > out || fail=1 cat < exp 0 3 EOF cmp out exp || fail=1 test $fail = 1 && diff out exp 2> /dev/null rm -f in out exp # `echo |csplit - 1 1' used to abort. echo > in csplit in 1 1 > out 2> err || fail=1 cat < exp 0 0 1 EOF cmp out exp || fail=1 test $fail = 1 && diff out exp 2> /dev/null cat <<\EOF > experr csplit: warning: line number `1' is the same as preceding line number EOF cmp err experr || fail=1 test $fail = 1 && diff err experr 2> /dev/null rm -f in out exp err experr # make sure `csplit FILE 0' fails. echo > in csplit in 0 > out 2> err && fail=1 csplit in 2 1 > out 2>> err && fail=1 csplit in 3 3 > out 2>> err && fail=1 cat <<\EOF > experr csplit: 0: line number must be greater than zero csplit: line number `1' is smaller than preceding line number, 2 csplit: warning: line number `3' is the same as preceding line number csplit: `3': line number out of range EOF cmp err experr || fail=1 test $fail = 1 && diff err experr 2> /dev/null (exit $fail); exit