examples: bistromathic: when quitting, close the current line

When the user ctrl-d the line, we left the cursor not at col 0.
Let's fix that.
This revealed a few short-comings in the testing framework.

* examples/test (run): Also display the diffs.
And support -n.
* examples/c/bistromathic/bistromathic.test
* examples/c/bistromathic/parse.y
This commit is contained in:
Akim Demaille
2020-04-25 14:54:47 +02:00
parent 3b50adf7f4
commit c90110efd3
3 changed files with 45 additions and 26 deletions

View File

@@ -17,7 +17,7 @@
# macOS' version of readline does not repeat stdin on stdout in
# non-interactive mode.
if ! echo '1-1' | prog | grep '1-1'; then
if ! echo '1-1' | prog | grep '1-1' >/dev/null; then
strip_prompt=true
fi
@@ -65,26 +65,30 @@ cat >input <<EOF
*
EOF
run 0 '> *
> err: 1.1: syntax error: expected end of file or - or ( or exit or number or function or variable before *'
> ''
err: 1.1: syntax error: expected end of file or - or ( or exit or number or function or variable before *'
cat >input <<EOF
1 + 2 * * 3
EOF
run 0 '> 1 + 2 * * 3
> err: 1.9: syntax error: expected - or ( or number or function or variable before *'
> ''
err: 1.9: syntax error: expected - or ( or number or function or variable before *'
cat >input <<EOF
1 / 0
EOF
run 0 '> 1 / 0
> ''
err: 1.1-5: error: division by zero'
cat >input <<EOF
100%
EOF
run 0 '> 100%
100
> err: 1.4: error: invalid character'
cat >input <<EOF
1 / 0
EOF
run 0 '> 1 / 0
> err: 1.1-5: error: division by zero'
> ''
err: 1.4: error: invalid character'
## ------------ ##
@@ -109,21 +113,24 @@ EOF
run 0 '> (1+
( - atan cos exp ln number sin sqrt
> (1+
> err: 1.4: syntax error: expected - or ( or number or function or variable before end of file'
> ''
err: 1.4: syntax error: expected - or ( or number or function or variable before end of file'
# Check the completion of a word.
sed -e 's/\\t/ /g' >input <<EOF
(at\t\t
EOF
run 0 '> (atan ( ''
> err: 1.9: syntax error: expected - or ( or number or function or variable before end of file'
> ''
err: 1.9: syntax error: expected - or ( or number or function or variable before end of file'
# Check the completion at the very beginning.
sed -e 's/\\t/ /g' >input <<EOF
e\t\t
EOF
run 0 '> e
run -n 0 '> e
end of file exit exp ''
> e
0
> err: '
> ''
err: '