summaryrefslogtreecommitdiff
path: root/regress/bin/ksh
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2017-06-05 17:34:10 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2017-06-05 17:34:10 +0000
commit2730af4f786d350a7447f177925ae33557e02d84 (patch)
treef66cd27a8d96084ee6cfc458d984b52361145aca /regress/bin/ksh
parentf48cbe63b6918b2664357aef5f918f5ad4ccb108 (diff)
Test insertion of non-ASCII characters, in particular making sure
that valid input does not cause writing invalid intermediate states to the terminal, and that invalid input is not delayed waiting for more input, but written through right away. Currently failing, but expected to be fixed shortly.
Diffstat (limited to 'regress/bin/ksh')
-rw-r--r--regress/bin/ksh/edit/emacs.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/regress/bin/ksh/edit/emacs.sh b/regress/bin/ksh/edit/emacs.sh
index 145f2c820a7..569a2138ec3 100644
--- a/regress/bin/ksh/edit/emacs.sh
+++ b/regress/bin/ksh/edit/emacs.sh
@@ -1,6 +1,7 @@
#!/bin/sh
#
# Copyright (c) 2017 Anton Lindqvist <anton@openbsd.org>
+# Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -29,3 +30,61 @@ export EDITOR ENV HISTFILE MAIL MALLOC_OPTIONS PS1 VISUAL
# auto-insert
testseq "abc" " $ abc"
+
+# insertion of valid UTF-8
+testseq "z\0002\0302\0200" " $ z\b\0302\0200z\b"
+testseq "z\0002\0337\0277" " $ z\b\0337\0277z\b"
+testseq "z\0002\0340\0240\0200" " $ z\b\0340\0240\0200z\b"
+testseq "z\0002\0354\0277\0277" " $ z\b\0354\0277\0277z\b"
+testseq "z\0002\0355\0200\0200" " $ z\b\0355\0200\0200z\b"
+testseq "z\0002\0355\0237\0277" " $ z\b\0355\0237\0277z\b"
+testseq "z\0002\0356\0200\0200" " $ z\b\0356\0200\0200z\b"
+testseq "z\0002\0357\0277\0277" " $ z\b\0357\0277\0277z\b"
+testseq "z\0002\0364\0200\0200\0200" " $ z\b\0364\0200\0200\0200z\b"
+testseq "z\0002\0364\0217\0277\0277" " $ z\b\0364\0217\0277\0277z\b"
+
+# insertion of incomplete UTF-8
+testseq "z\0002\0302\0006" " $ z\b\0302z\bz"
+testseq "z\0002\0377\0006" " $ z\b\0377z\bz"
+testseq "z\0002\0337\0006" " $ z\b\0337z\bz"
+testseq "z\0002\0340\0006" " $ z\b\0340z\bz"
+testseq "z\0002\0357\0006" " $ z\b\0357z\bz"
+testseq "z\0002\0364\0006" " $ z\b\0364z\bz"
+testseq "z\0002\0340\0240\0006" " $ z\b\0340\0240z\bz"
+testseq "z\0002\0354\0277\0006" " $ z\b\0354\0277z\bz"
+testseq "z\0002\0355\0200\0006" " $ z\b\0355\0200z\bz"
+testseq "z\0002\0355\0237\0006" " $ z\b\0355\0237z\bz"
+testseq "z\0002\0356\0200\0006" " $ z\b\0356\0200z\bz"
+testseq "z\0002\0357\0277\0006" " $ z\b\0357\0277z\bz"
+testseq "z\0002\0364\0200\0200\0006" " $ z\b\0364\0200\0200z\bz"
+testseq "z\0002\0364\0217\0277\0006" " $ z\b\0364\0217\0277z\bz"
+
+# insertion of invalid bytes
+testseq "z\0002\0300\0277" " $ z\b\0300z\b\b\0300\0277z\b"
+testseq "z\0002\0301\0277" " $ z\b\0301z\b\b\0301\0277z\b"
+testseq "z\0002\0360\0217" " $ z\b\0360z\b\b\0360\0217z\b"
+testseq "z\0002\0363\0217" " $ z\b\0363z\b\b\0363\0217z\b"
+testseq "z\0002\0365\0217" " $ z\b\0365z\b\b\0365\0217z\b"
+testseq "z\0002\0367\0217" " $ z\b\0367z\b\b\0367\0217z\b"
+testseq "z\0002\0370\0217" " $ z\b\0370z\b\b\0370\0217z\b"
+testseq "z\0002\0377\0217" " $ z\b\0377z\b\b\0377\0217z\b"
+
+# insertion of excessively long encodings
+testseq "z\0002\0340\0200\0200" \
+ " $ z\b\0340z\b\b\0340\0200z\b\b\0340\0200\0200z\b"
+testseq "z\0002\0340\0201\0277" \
+ " $ z\b\0340z\b\b\0340\0201z\b\b\0340\0201\0277z\b"
+testseq "z\0002\0340\0202\0200" \
+ " $ z\b\0340z\b\b\0340\0202z\b\b\0340\0202\0200z\b"
+testseq "z\0002\0340\0237\0277" \
+ " $ z\b\0340z\b\b\0340\0237z\b\b\0340\0237\0277z\b"
+
+# insertion of surrogates and execessive code points
+testseq "z\0002\0355\0240\0200" \
+ " $ z\b\0355z\b\b\0355\0240z\b\b\0355\0240\0200z\b"
+testseq "z\0002\0355\0277\0277" \
+ " $ z\b\0355z\b\b\0355\0277z\b\b\0355\0277\0277z\b"
+testseq "z\0002\0364\0220\0200\0200" \
+ " $ z\b\0364z\b\b\0364\0220z\b\b\0364\0220\0200z\b\b\0364\0220\0200\0200z\b"
+testseq "z\0002\0364\0277\0277\0277" \
+ " $ z\b\0364z\b\b\0364\0277z\b\b\0364\0277\0277z\b\b\0364\0277\0277\0277z\b"