zsh-auto-notify-ntfy-integr.../tests/test_auto_notify.zunit
2019-07-15 12:05:13 +01:00

86 lines
2.1 KiB
Text

#!/usr/bin/env zunit
@setup {
load "../auto-notify.plugin.zsh"
function notify-send {
echo "Notification: $@"
}
function uname {
echo "Linux"
}
# Mock date function to return a frozen timestamp
function date {
if [[ "$1" == +"%s" ]]; then
echo "11100"
else
date "$@"
fi
}
}
@test 'version exported' {
assert "$AUTO_NOTIFY_VERSION" is_not_empty
}
@test 'hook functions are loaded by default' {
assert '_auto_notify_track' in $preexec_functions
assert '_auto_notify_send' in $precmd_functions
}
@test 'enable/disable auto-notify' {
disable_auto_notify
assert '_auto_notify_track' not_in $preexec_functions
assert '_auto_notify_send' not_in $precmd_functions
enable_auto_notify
assert '_auto_notify_track' in $preexec_functions
assert '_auto_notify_send' in $precmd_functions
}
@test 'auto-notify-send does not send notification for short task' {
AUTO_COMMAND="foo bar -r"
AUTO_COMMAND_FULL="foo bar -r"
AUTO_COMMAND_START=11099
run _auto_notify_send
assert $state equals 0
assert "$output" is_empty
}
@test 'auto-notify-send does not send notification for ignored commands' {
for command in $AUTO_NOTIFY_IGNORE; do
AUTO_COMMAND="somealias"
AUTO_COMMAND_FULL="$command"
AUTO_COMMAND_START=11000
run _auto_notify_send
assert $state equals 0
assert "$output" is_empty
done
}
@test 'auto-notify-send does not send notification for ignored commands with arguments' {
for command in $AUTO_NOTIFY_IGNORE; do
AUTO_COMMAND="somealias bar -r"
AUTO_COMMAND_FULL="$command bar -r"
AUTO_COMMAND_START=11000
run _auto_notify_send
assert $state equals 0
assert "$output" is_empty
done
}
@test 'auto-notify-send sends notification on Linux' {
AUTO_COMMAND="f bar -r"
AUTO_COMMAND_FULL="foo bar -r"
AUTO_COMMAND_START=11080
run _auto_notify_send
assert $state equals 0
assert "$lines[1]" same_as 'Notification: "f bar -r" has completed'
assert "$lines[2]" same_as "(Total time: 20 seconds)"
}