fix: skip zsh doctor in non-interactive shells

This commit is contained in:
Puneet Dixit 2026-05-21 22:34:13 +05:30
parent cff57b7734
commit 281d3d5ef1
2 changed files with 17 additions and 0 deletions

View File

@ -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 {

View File

@ -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