From e6eea1f9b7e67136911536a2450c7130f44c0b04 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Tue, 17 Mar 2020 16:35:14 +0000 Subject: [PATCH] test harness: Don't leak options from test files to the test harness. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- tests/test-highlighting.zsh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tests/test-highlighting.zsh b/tests/test-highlighting.zsh index 524a765..7d7ebb7 100755 --- a/tests/test-highlighting.zsh +++ b/tests/test-highlighting.zsh @@ -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}")