#!/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)" } @test 'auto-notify-send sends warning on unsupported platform' { AUTO_COMMAND="f bar -r" AUTO_COMMAND_FULL="foo bar -r" AUTO_COMMAND_START=11080 function uname { echo "Hal9000" } run _auto_notify_send assert $state equals 0 assert "$lines[1]" same_as "Unknown platform for sending notifications: Hal9000" assert "$lines[2]" same_as "Please post an issue on gitub.com/MichaelAquilina/zsh-auto-notify/issues/" }