2022-06-30 22:17:46 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
from pexpect_helper import SpawnedProc
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
sp = SpawnedProc()
|
|
|
|
send, sendline, sleep, expect_prompt, expect_re, expect_str = (
|
|
|
|
sp.send,
|
|
|
|
sp.sendline,
|
|
|
|
sp.sleep,
|
|
|
|
sp.expect_prompt,
|
|
|
|
sp.expect_re,
|
|
|
|
sp.expect_str,
|
|
|
|
)
|
|
|
|
expect_prompt()
|
|
|
|
|
|
|
|
# ? prints the command line, bracketed by <>, then clears it.
|
|
|
|
sendline(r"""bind '?' 'echo "<$(commandline)>"; commandline ""'; """)
|
|
|
|
expect_prompt()
|
|
|
|
|
|
|
|
# Basic test.
|
2022-04-01 19:05:27 +00:00
|
|
|
# Default abbreviations expand only in command position.
|
2022-06-30 22:17:46 +00:00
|
|
|
sendline(r"abbr alpha beta")
|
|
|
|
expect_prompt()
|
|
|
|
|
|
|
|
send(r"alpha ?")
|
|
|
|
expect_str(r"<beta >")
|
|
|
|
|
|
|
|
send(r"echo alpha ?")
|
|
|
|
expect_str(r"<echo alpha >")
|
|
|
|
|
|
|
|
# Abbreviation expansions may have multiple words.
|
|
|
|
sendline(r"abbr --add emacsnw emacs -nw")
|
|
|
|
expect_prompt()
|
|
|
|
send(r"emacsnw ?")
|
|
|
|
expect_str(r"<emacs -nw >")
|
|
|
|
|
|
|
|
# Regression test that abbreviations still expand in incomplete positions.
|
|
|
|
sendline(r"""abbr --erase (abbr --list)""")
|
|
|
|
expect_prompt()
|
|
|
|
sendline(r"""abbr --add foo echo bar""")
|
|
|
|
expect_prompt()
|
|
|
|
sendline(r"if foo")
|
|
|
|
expect_str(r"if echo bar")
|
|
|
|
sendline(r"end")
|
|
|
|
expect_prompt(r"bar")
|
|
|
|
|
|
|
|
# Regression test that 'echo (' doesn't hang.
|
|
|
|
sendline(r"echo )")
|
|
|
|
expect_str(r"Unexpected ')' for unopened parenthesis")
|
|
|
|
send(r"?")
|
|
|
|
expect_str(r"<echo )>")
|
2022-04-01 19:05:27 +00:00
|
|
|
|
|
|
|
# Support position anywhere.
|
|
|
|
sendline(r"abbr alpha --position anywhere beta2")
|
|
|
|
|
|
|
|
send(r"alpha ?")
|
|
|
|
expect_str(r"<beta2 >")
|
|
|
|
|
|
|
|
send(r"echo alpha ?")
|
|
|
|
expect_str(r"<echo beta2 >")
|