aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2025-05-23 19:37:54 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2025-05-23 22:48:15 +0300
commit3fda29e44ee0c9ef2a0b81d91af568c7e1c35c1f (patch)
tree649f4aaffcab65d1ce91b5b1525e8e954bef4add /tests
parent41f28fe6085e20bae6673434ce7ae6131e584281 (diff)
downloadsciteco-3fda29e44ee0c9ef2a0b81d91af568c7e1c35c1f.tar.gz
<^C> is a plain "return" command now, while <^C^C> exits from the program
* This may break existing macros! ^C is now essentially a synonym for $$ and may not terminate the program when called from a non-toplevel macro frame. However it improves compatibility with TECO-11. * In contrast to TECO-11, ^C^C (exit) can be typed completely in upcaret mode. Otherwise it wouldn't have been possible to use the exit command in ASCII-only scripts. * The implementation of ^C^C uses a lookahead state similar to ^[ (escape). ^C does not return immediately, but the following character determines whether it will perform a return or exit. It's one of the rare cases in SciTECO where this is possible and safe since ^C is also disallowed on the command-line to avoid undesired command-line terminations after ^C interruptions. (You can only use $$ to terminate the command-line interactively.)
Diffstat (limited to 'tests')
-rw-r--r--tests/testsuite.at17
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 5cf3d4f..776fc41 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -6,7 +6,7 @@ AT_COLOR_TESTS
AT_ARG_OPTION([valgrind],
AS_HELP_STRING([--valgrind], [Run tests under Valgrind (memcheck)]))
-# NOTE: We could use 1^C to get an unsuccessful return code.
+# NOTE: We could use 1^C or 1^C^C to get an unsuccessful return code.
# However, this won't print any stack trace or error message.
# Therefore, we still use the idiom "(0/0)" to enforce a "Division by zero"
# error whenever we want to fail.
@@ -57,8 +57,9 @@ AT_CLEANUP
AT_SETUP([Exit status])
TE_CHECK([[23]], 23, ignore, ignore)
-TE_CHECK([[42^C]], 42, ignore, ignore)
-TE_CHECK([[13$$]], 13, ignore, ignore)
+TE_CHECK([[42^C (0/0)]], 42, ignore, ignore)
+TE_CHECK([[13$$ (0/0)]], 13, ignore, ignore)
+TE_CHECK([[@^Um{9^C^C} Mm (0/0)]], 9, ignore, ignore)
AT_CLEANUP
AT_SETUP([Radix])
@@ -280,9 +281,17 @@ TE_CHECK_CMDLINE([[@I/ @:foo ]]TE_RUBOUT_WORD[[/ Z-3"N(0/0)']], 0, ignore, stde
AT_FAIL_IF([$GREP "^Error:" stderr])
AT_CLEANUP
-AT_SETUP([Command-line termination while editing replacement register])
+AT_SETUP([Disallowed interactive commands])
+# Command-line termination while editing the replacement register would
+# be hard to recover from.
TE_CHECK_CMDLINE([[{$$}]], 0, ignore, stderr)
AT_FAIL_IF([! $GREP "^Error:" stderr])
+# ^C interruption should not terminate the command-line accidentally.
+TE_CHECK_CMDLINE([[^C]], 0, ignore, stderr)
+AT_FAIL_IF([! $GREP "^Error:" stderr])
+# ^C^C is generally disallowed in interactive mode.
+TE_CHECK_CMDLINE([[@^Um{^C^C} Mm]], 0, ignore, stderr)
+AT_FAIL_IF([! $GREP "^Error:" stderr])
AT_CLEANUP
AT_BANNER([Standard library])