test harness: Don't leak options from test files to the test harness.

Fixes an issue whereby the '# TODO "issue #687"' directive in the output of
opt-shwordsplit1.zsh was truncated, because the test itself had set the
SH_WORD_SPLIT option and that affected the evaluation of
«${(z)expected_region_highlight[i]}» in the test harness.

Furthermore, this patch also independently fixes the error under
zsh-5.0.8 and earlier that was fixed by the previous commit.
This commit is contained in:
Daniel Shahaf 2020-03-17 16:35:14 +00:00
parent 99389327ae
commit e6eea1f9b7

View file

@ -123,20 +123,27 @@ run_test_internal() {
local skip_mismatch
local -a expected_region_highlight region_highlight
. "$srcdir"/"$1"
local ARG="$1"
() {
setopt localoptions
. "$srcdir"/"$ARG"
(( $#skip_test )) && { print -r -- "1..0 # SKIP $skip_test"; return; }
# WARNING: The remainder of this anonymous function will run with the test's options in effect
# Check the data declares $PREBUFFER or $BUFFER.
[[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! On ${(qq)1}: Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; }
# Check the data declares $expected_region_highlight.
(( $+expected_region_highlight == 0 )) && { echo >&2 "Bail out! On ${(qq)1}: 'expected_region_highlight' is not declared."; return 1; }
(( $#skip_test )) && { print -r -- "1..0 # SKIP $skip_test"; return; }
# Set sane defaults for ZLE variables
: ${CURSOR=$#BUFFER} ${PENDING=0} ${WIDGET=z-sy-h-test-harness-test-widget}
# Check the data declares $PREBUFFER or $BUFFER.
[[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! On ${(qq)1}: Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; }
# Check the data declares $expected_region_highlight.
(( $+expected_region_highlight == 0 )) && { echo >&2 "Bail out! On ${(qq)1}: 'expected_region_highlight' is not declared."; return 1; }
# Process the data.
_zsh_highlight
# Set sane defaults for ZLE variables
: ${CURSOR=$#BUFFER} ${PENDING=0} ${WIDGET=z-sy-h-test-harness-test-widget}
# Process the data.
_zsh_highlight
}
unset ARG
if (( unsorted )); then
region_highlight=("${(@n)region_highlight}")