From 0ce3b52f696d9fb07dded56400d4d3338074ea6c Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Mon, 28 Oct 2024 17:38:02 +0300 Subject: 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}. --- tests/atlocal.in | 7 +++++-- tests/testsuite.at | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'tests') 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]) -- cgit v1.2.3