mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2024-11-18 09:51:06 +01:00
73f774bd5d
A new suggestion strategy 'match_prev_cmd' is available. This is a bit more context aware variaton on the default strategy. The suggestion will be: - The newest history entry that matches the current prefix, AND - Whose preceding history entry also matches the previously executed command. See src/strategies/match_prev_cmd.zsh for an example.
122 lines
2.6 KiB
Bash
Executable file
122 lines
2.6 KiB
Bash
Executable file
#!/usr/bin/env zsh
|
|
|
|
SCRIPT_DIR=$(dirname "$0")
|
|
TEST_DIR=$SCRIPT_DIR/../test
|
|
DIST_DIR=$SCRIPT_DIR/../
|
|
|
|
# Use stub.sh for stubbing/mocking
|
|
source $TEST_DIR/stub-1.0.2.sh
|
|
|
|
source $DIST_DIR/zsh-autosuggestions.zsh
|
|
|
|
#--------------------------------------------------------------------#
|
|
# Match Previous Command Suggestion Strategy #
|
|
#--------------------------------------------------------------------#
|
|
|
|
TMPHIST_FILE=/tmp/zsh-autosuggestions-test-tmp-hist
|
|
|
|
HISTSIZE=0 # Clear history
|
|
HISTSIZE=100
|
|
|
|
cat > $TMPHIST_FILE <<-EOH
|
|
one
|
|
two
|
|
three
|
|
four
|
|
five
|
|
six
|
|
seven
|
|
eight
|
|
nine
|
|
ten
|
|
eleven
|
|
EOH
|
|
echo >> $TMPHIST_FILE
|
|
|
|
fc -R $TMPHIST_FILE
|
|
|
|
rm $TMPHIST_FILE
|
|
|
|
ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd
|
|
|
|
testNoMatchPrevIsOne() {
|
|
stub_and_echo _zsh_autosuggest_prev_command "one"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'garbage' after 'one'" \
|
|
"" \
|
|
"$(_zsh_autosuggest_suggestion garbage)"
|
|
}
|
|
|
|
testMatchPrevIsOne() {
|
|
stub_and_echo _zsh_autosuggest_prev_command "one"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'o' after 'one'" \
|
|
"one" \
|
|
"$(_zsh_autosuggest_suggestion o)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 't' after 'one'" \
|
|
"two" \
|
|
"$(_zsh_autosuggest_suggestion t)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'th' after 'one'" \
|
|
"three" \
|
|
"$(_zsh_autosuggest_suggestion th)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'f' after 'one'" \
|
|
"five" \
|
|
"$(_zsh_autosuggest_suggestion f)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'fo' after 'one" \
|
|
"four" \
|
|
"$(_zsh_autosuggest_suggestion fo)"
|
|
}
|
|
|
|
testNoMatchPrevIsTwo() {
|
|
stub_and_echo _zsh_autosuggest_prev_command "two"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'garbage' after 'two'" \
|
|
"" \
|
|
"$(_zsh_autosuggest_suggestion garbage)"
|
|
}
|
|
|
|
testMatchPrevIsTwo() {
|
|
stub_and_echo _zsh_autosuggest_prev_command "two"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'o' after 'two'" \
|
|
"one" \
|
|
"$(_zsh_autosuggest_suggestion o)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 't' after 'two'" \
|
|
"three" \
|
|
"$(_zsh_autosuggest_suggestion t)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'tw' after 'two'" \
|
|
"two" \
|
|
"$(_zsh_autosuggest_suggestion tw)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'f' after 'two'" \
|
|
"five" \
|
|
"$(_zsh_autosuggest_suggestion f)"
|
|
|
|
assertEquals \
|
|
"Did not pick correct suggestion for prefix 'fo' after 'two" \
|
|
"four" \
|
|
"$(_zsh_autosuggest_suggestion fo)"
|
|
}
|
|
|
|
setopt shwordsplit
|
|
SHUNIT_PARENT=$0
|
|
|
|
source $TEST_DIR/shunit2-2.1.6/src/shunit2
|
|
|