# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # : ${TMPDIR:=/tmp} TMPF=$TMPDIR/cond-invalid-$RANDOM cond_invalid() { local r; rm -f "$TMPF" line=$1 ; shift lhs=$1 ; shift rhs=$1 ; shift [[ $lhs =~ $rhs ]] 2>"$TMPF" r=$? if [ ! -s "$TMPF" ]; then echo "cond-regexp2.sub: $line: expected invalid regexp error output to stderr" >&2 fi rm -f "$TMPF" return $r; } [[ "\\" =~ ["."] ]] && echo bad 1 [[ "\\" =~ "[.]" ]] && echo bad 2 cond_invalid $LINENO '\\' '[\.' && echo bad 3 [[ "\\" =~ [\.] ]] && echo bad 4 [[ "\\" =~ [\\] ]] || echo bad 5 cond_invalid $LINENO x '[z-a]' && echo bad 6 cond_invalid $LINENO x '[[:invalid:]abc]' && echo bad 7 exp='x\' cond_invalid $LINENO x "$exp" && echo bad 8 exp='a(xb' cond_invalid $LINENO x "$exp" && echo bad 9 [[ dog =~ [[=d=]].. ]] && echo ok 1 [[ d.. =~ [[=d=]]\.\. ]] && echo ok 2 [[ dog =~ ['[=d=]'].. ]] && echo ok 3 # dubious [[ dog =~ [[=d=]].[[=G=][=g=]] ]] && echo ok 4 [[ dog =~ [[=d=]].[\[=G=][=g=]] ]] && echo ok 4a [[ dog =~ "d.." ]] || echo ok 5 [[ dog =~ [[.d.][.D.]]o. ]] && echo ok 6 [[ dog =~ ([[.d.][.D.]])o(.) ]] && echo ok 7 -- ${BASH_REMATCH[1]} [[ dog =~ d([[.o.][.O.]])(.) ]] && echo ok 8 -- ${BASH_REMATCH[1]} [[ dog =~ .([[.o.][.O.]])(.) ]] && echo ok 9 [[ dog =~ 'd''o''g' ]] && echo ok 10 [[ ']' =~ [']'] ]] && echo ok 11 [[ a =~ ['a]'] ]] || echo ok 12 [[ "\\" =~ [^]"."] ]] || echo unexpected