aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-10-28 17:38:02 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-10-28 17:38:02 +0300
commit0ce3b52f696d9fb07dded56400d4d3338074ea6c (patch)
treed264e4352cd572c2a8003c35dd3a8396a9e680ee /tests
parent427092d2c8ee11b4a56eb50dbf68861f10f2a81f (diff)
downloadsciteco-0ce3b52f696d9fb07dded56400d4d3338074ea6c.tar.gz
added hidden --fake-cmdline parameter for testing command-line editing
* Supports all immediate editing commands. Naturally it cannot emulate arbitrary key presses since there is no canonic ASCII-encoding of function keys. Key macros are not consequently also not testable. The --fake-cmdline parameter is instead treated very similar to a key macro expansion. * Most importantly this allows adding test cases for rubout behavior and bugs that are quite common. * Added regression test cases for the last two rubout bugs. * It's not easy to pass control codes in command line arguments in a portable manner, so the test cases will often use { and }. Control codes could be used e.g. by defining variables like RUBOUT=`printf '\b'` and referencing them with ${RUBOUT}.
Diffstat (limited to 'tests')
-rw-r--r--tests/atlocal.in7
-rw-r--r--tests/testsuite.at11
2 files changed, 16 insertions, 2 deletions
diff --git a/tests/atlocal.in b/tests/atlocal.in
index 061937a..4bc0a21 100644
--- a/tests/atlocal.in
+++ b/tests/atlocal.in
@@ -4,11 +4,14 @@ host=@host@
# built.
# Using the $BOOTSTRAP_SCITECO wouldn't make sense
# anyway as we don't want to test some preinstalled SciTECO.
-SCITECO=@abs_top_builddir@/src/sciteco
+SCITECO="@abs_top_builddir@/src/sciteco"
+
+# For testing command-line editing:
+SCITECO_CMDLINE="@abs_top_builddir@/src/sciteco --no-profile --fake-cmdline"
# Make sure that the standard library from the source package
# is used.
-SCITECOPATH=@abs_top_srcdir@/lib
+SCITECOPATH="@abs_top_srcdir@/lib"
# Glib debug options
G_SLICE=debug-blocks
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 729b3c8..aba51a5 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -214,6 +214,17 @@ AT_SETUP([Jump to beginning of macro])
AT_CHECK([$SCITECO -e "%a-2\"< F< ' Qa-2\"N(0/0)'"], 0, ignore, ignore)
AT_CLEANUP
+# NOTE: It would generally be possible to use control codes like ^H (8)
+# and ^W (23) for rubout as well, but this is tricky to write in a portable manner.
+# Therefore we usally use the push/pop command-line commands { and }.
+AT_SETUP([Rub out string append])
+AT_CHECK([$SCITECO_CMDLINE "@I/XXX/ H:Xa{-4D} :Qa-0\"N(0/0)'"], 0, ignore, ignore)
+AT_CLEANUP
+
+AT_SETUP([Rub out of empty forward kill])
+AT_CHECK([$SCITECO_CMDLINE "@I/F/ J @I/X/ @FK/F/{-6D} Z-2\"N(0/0)'"], 0, ignore, ignore)
+AT_CLEANUP
+
AT_BANNER([Known Bugs])
AT_SETUP([Number stack])