diff --git a/src/shell.rs b/src/shell.rs index 8812b1c..92db7bd 100644 --- a/src/shell.rs +++ b/src/shell.rs @@ -33,6 +33,22 @@ make_template!(Tcsh, "tcsh.txt"); make_template!(Xonsh, "xonsh.txt"); make_template!(Zsh, "zsh.txt"); +#[cfg(test)] +mod render_tests { + use askama::Template; + + use super::*; + + #[test] + fn zsh_doctor_skips_non_interactive_shells() { + let opts = + Opts { cmd: Some("z"), hook: InitHook::Prompt, echo: false, resolve_symlinks: false }; + let source = Zsh(&opts).render().unwrap(); + + assert!(source.contains("[[ $- == *i* ]] || return 0")); + } +} + #[cfg(feature = "nix-dev")] #[cfg(test)] mod tests { diff --git a/templates/zsh.txt b/templates/zsh.txt index f748f31..f900f3a 100644 --- a/templates/zsh.txt +++ b/templates/zsh.txt @@ -59,6 +59,7 @@ function __zoxide_doctor() { {%- else %} [[ ${_ZO_DOCTOR:-1} -ne 0 ]] || return 0 + [[ $- == *i* ]] || return 0 {%- if hook == InitHook::Prompt %} [[ ${precmd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] || return 0