diff --git a/auto-notify.plugin.zsh b/auto-notify.plugin.zsh index 525d8a3..9168f99 100644 --- a/auto-notify.plugin.zsh +++ b/auto-notify.plugin.zsh @@ -122,4 +122,12 @@ function enable_auto_notify() { } _auto_notify_reset_tracking -enable_auto_notify + + +platform="$(uname)" +if [[ "$platform" == "Linux" ]] && ! type notify-send > /dev/null; then + printf "'notify-send' must be installed for zsh-auto-notify to work\n" + printf "Please install it with your relevant package manager\n" +else + enable_auto_notify +fi diff --git a/tests/test_plugin.zunit b/tests/test_plugin.zunit index f0e108f..bbcaa4c 100644 --- a/tests/test_plugin.zunit +++ b/tests/test_plugin.zunit @@ -1,23 +1,57 @@ #!/usr/bin/env zunit @setup { - load "../auto-notify.plugin.zsh" + function uname { + printf "Linux" + } + # Mock function for passing builds where we don't + # really need notify-send to be installed (e.g. Mac OSX) + function notify-send { + } } @test 'version exported' { git_version="$(git tag --list | sort -V | tail -1)" git tag --list + load "../auto-notify.plugin.zsh" + assert "$AUTO_NOTIFY_VERSION" is_not_empty assert "$AUTO_NOTIFY_VERSION" same_as "$git_version" } +@test 'print warning if notify-send is not installed' { + function type { + return 1 + } + + run load "../auto-notify.plugin.zsh" + + assert "$lines[1]" same_as "'notify-send' must be installed for zsh-auto-notify to work" + assert "$lines[2]" same_as "Please install it with your relevant package manager" + +@test 'dont load auto-notify if notify-send is not installed' { + function type { + return 1 + } + + load "../auto-notify.plugin.zsh" + + assert "_auto_notify_track" not_in $preexec_functions + assert "_auto_notify_send" not_in $precmd_functions +} + + @test 'hook functions are loaded by default' { + load "../auto-notify.plugin.zsh" + assert '_auto_notify_track' in $preexec_functions assert '_auto_notify_send' in $precmd_functions } @test 'enable/disable auto-notify' { + load "../auto-notify.plugin.zsh" + disable_auto_notify assert '_auto_notify_track' not_in $preexec_functions assert '_auto_notify_send' not_in $precmd_functions