fish-shell/tests/fkr.expect
Kurtis Rader 68e167d576 f-k-r should use the user's locale
I did some research and experiments. For good or bad the `bind` command
requires the use of wide char codepoints (e.g., \u1234) for non-ASCII
chars.  So don't force the use of the POSIX locale, but do provide it as
an option for people who want to see the individual bytes rather than a
decoded wide char.

Simplify the format of the information displayed for each character. There
really isn't much point in providing decimal, octal, and hexadecimal. Just
print hex and symbolic representations.

Add an example `bind` command that a user can copy/paste.

Closes #3183
2016-06-30 20:49:56 -07:00

60 lines
1.6 KiB
Plaintext

# vim: set filetype=expect:
set ::env(fish_escape_delay_ms) 10
spawn $fish_key_reader -c
# Do we get the expected startup prompt?
expect -ex "Press a key" {
puts "saw expected startup prompt"
} unmatched {
puts stderr "didn't see expected startup prompt"
}
# Is a single control char echoed correctly?
send "\x01"
expect -ex "char: \\cA\r\nbind \\cA 'do something'\r\n" {
puts "ctrl-a handled"
} unmatched {
puts stderr "ctrl-a not handled"
}
# Is a non-ASCII UTF-8 sequence prefaced by an escape char handled correctly?
sleep 0.020
# send "\x1B\xE1\x88\xB4"
send "\x1B\u1234"
expect -ex "char: \\u1234\r\nbind \\e\\u1234 'do something'\r\n" {
puts "unicode char, handled"
} unmatched {
puts stderr "unicode char, not handled"
}
# Is a NULL char echoed correctly?
sleep 0.020
send -null
expect -ex "char: \\c@\r\nbind \\c@ 'do something'\r\n" {
puts "\\c@ handled"
} unmatched {
puts stderr "\\c@ not handled"
}
# Does it keep running if handed control sequences in the wrong order?
send "\x03\x04"
expect -ex "char: \\cD\r\n" {
puts "invalid terminate sequence handled"
} unmatched {
puts stderr "invalid terminate sequence not handled"
}
# Now send a second [ctrl-D]. Does that terminate the process like it should?
send "\x04"
expect -ex "char: \\cD\r\n" {
puts "valid terminate sequence handled"
} unmatched {
puts stderr "valid terminate sequence not handled"
}
expect -ex "Exiting at your request.\r\n" {
puts "exited on seeing valid terminate"
} unmatched {
puts stderr "did not exit on seeing valid terminate sequence"
}