logmsg Test basic add and list of __abbr1 abbr __abbr1 alpha beta gamma abbr | grep __abbr1 logmsg Erasing one that doesn\'t exist should do nothing abbr --erase NOT_AN_ABBR abbr | grep __abbr1 logmsg Adding existing __abbr1 should be idempotent abbr __abbr1 alpha beta gamma abbr | grep __abbr1 logmsg Replacing __abbr1 definition abbr __abbr1 delta abbr | grep __abbr1 logmsg __abbr1 -s and --show tests abbr -s | grep __abbr1 abbr --show | grep __abbr1 logmsg Test erasing __abbr1 abbr -e __abbr1 abbr | grep __abbr1 logmsg Ensure we escape special characters on output abbr '~__abbr2' '$xyz' abbr | grep __abbr2 abbr -e '~__abbr2' logmsg Ensure we handle leading dashes in abbreviation names properly abbr -- '--__abbr3' 'xyz' abbr | grep __abbr3 abbr -e -- '--__abbr3' logmsg Test that an abbr word containing spaces is rejected abbr "a b c" "d e f" abbr | grep 'a b c' logmsg Test renaming abbr __abbr4 omega abbr | grep __abbr5 abbr -r __abbr4 __abbr5 abbr | grep __abbr5 abbr -e __abbr5 abbr | grep __abbr4 logmsg Test renaming a nonexistent abbreviation abbr -r __abbr6 __abbr logmsg Test renaming to a abbreviation with spaces abbr __abbr4 omega abbr -r __abbr4 "g h i" abbr -e __abbr4 logmsg Test renaming without arguments abbr __abbr7 omega abbr -r __abbr7 logmsg Test renaming with too many arguments abbr __abbr8 omega abbr -r __abbr8 __abbr9 __abbr10 abbr | grep __abbr8 abbr | grep __abbr9 abbr | grep __abbr10 logmsg Test renaming to existing abbreviation abbr __abbr11 omega11 abbr __abbr12 omega12 abbr -r __abbr11 __abbr12 exit 0 # the last `abbr` command is expected to fail -- don't let that cause a test failure