diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2020-04-18 09:27:14 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-04-18 10:37:13 +0200 |
commit | 8b5fb7c4c3fb0f16e0ea2ae7160c7dcd143538b4 (patch) | |
tree | 96df38e159662b770f55a1ec3c9b93a63c066246 | |
parent | d6ae95fb50317fc3ffee018bfc4a6358da04332a (diff) | |
download | bison-8b5fb7c4c3fb0f16e0ea2ae7160c7dcd143538b4.tar.gz |
examples: beware of readline on macOS
macOS' version of readline does not repeat stdin on stdout in
non-interactive mode, contrary to the current version of GNU readline.
* examples/test: Add support for strip_prompt.
* examples/c/bistromathic/bistromathic.test (strip_prompt): Set it
when needed.
Early exit when needed.
-rwxr-xr-x | examples/c/bistromathic/bistromathic.test | 17 | ||||
-rwxr-xr-x | examples/test | 15 |
2 files changed, 31 insertions, 1 deletions
diff --git a/examples/c/bistromathic/bistromathic.test b/examples/c/bistromathic/bistromathic.test index 4f64b1a1..5d9966f3 100755 --- a/examples/c/bistromathic/bistromathic.test +++ b/examples/c/bistromathic/bistromathic.test @@ -15,6 +15,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +# macOS' version of readline does not repeat stdin on stdout in +# non-interactive mode. +if ! echo '1-1' | prog | grep '1-1'; then + strip_prompt=true +fi + cat >input <<EOF 1+2*3 EOF @@ -85,6 +91,17 @@ run 0 '> 1 / 0 ## Completion. ## ## ------------ ## +# From now on, the differences between versions of GNU Readline are +# too painful to try to cope with. +if $strip_prompt; then + echo "SKIP: this is not the GNU Readline we expect" + if $exit; then + exit 0 + else + exit 1 + fi +fi + # Check completion after an operator. sed -e 's/\\t/ /g' >input <<EOF (1+\t\t diff --git a/examples/test b/examples/test index 50b5d8ce..9544cb8d 100755 --- a/examples/test +++ b/examples/test @@ -30,6 +30,10 @@ exit=true # top_builddir. cwd=$(pwd) +# Whether to strip '> ...' lines from the expected output. +# See bistromathic.test. +strip_prompt=false + # The exercised program. abs_medir=$cwd/examples/$medir if test -x "$abs_medir/$me"; then @@ -77,14 +81,23 @@ run () # Expected exit status. sta_exp=$1 shift + # Expected output. - out_exp=$1 + if $strip_prompt; then + out_exp=$(echo "$1" | sed -e 's/^> err:/err:/;/^> /d') + else + out_exp=$1 + fi shift + # Effective exit status. sta_eff=0 + prog "$@" - <input >out_eff 2>err_eff || sta_eff=$? + # Combine effective output and error streams. out_eff=$(cat out_eff && $noerr || sed -e 's/^/err: /g' err_eff) + if test $sta_eff -eq $sta_exp; then if test "$out_eff" = "$out_exp"; then echo "$me: PASS: $number" |