shellcheck / shellcheck (push) Failing after 15s
Stashing a plugin's mismatched files wasn't enough for LuaSnip: the interrupted update had also left new files git won't overwrite and a half-cloned submodule, so lazy.nvim still couldn't check out the new version, and said nothing. Move such a plugin to ~/.local/state/coredesktop/nvim-plugins/ instead, so Lazy! sync installs it afresh and any edits to it are kept. A plugin the earlier version of this step stashed is moved the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
73 lines
2.0 KiB
Bash
73 lines
2.0 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load test_helper
|
|
|
|
# updates.d/46-neovim.sh, with real git repositories standing in for the
|
|
# plugins lazy.nvim cloned
|
|
|
|
setup() {
|
|
common_setup
|
|
export XDG_DATA_HOME="$HOME/.local/share" XDG_STATE_HOME="$HOME/.local/state"
|
|
LAZY="$XDG_DATA_HOME/nvim/lazy"
|
|
BACKUPS="$XDG_STATE_HOME/coredesktop/nvim-plugins"
|
|
mkdir -p "$LAZY"
|
|
export GIT_AUTHOR_NAME=test GIT_AUTHOR_EMAIL=test@example.com
|
|
export GIT_COMMITTER_NAME=test GIT_COMMITTER_EMAIL=test@example.com
|
|
stub nvim
|
|
}
|
|
|
|
# plugin NAME: a plugin checkout with one committed file
|
|
plugin() {
|
|
git init -q "$LAZY/$1"
|
|
echo original > "$LAZY/$1/README.md"
|
|
git -C "$LAZY/$1" add README.md
|
|
git -C "$LAZY/$1" commit -q -m initial
|
|
}
|
|
|
|
update_neovim() {
|
|
source "$REPO/updates.d/46-neovim.sh"
|
|
run_update
|
|
}
|
|
|
|
@test "a plugin whose files don't match its checkout is set aside to be installed again" {
|
|
plugin LuaSnip
|
|
echo changed > "$LAZY/LuaSnip/README.md"
|
|
mkdir "$LAZY/LuaSnip/data"
|
|
echo leftover > "$LAZY/LuaSnip/data/new.md"
|
|
|
|
run update_neovim
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == *"LuaSnip's files didn't match its version"* ]]
|
|
[ ! -e "$LAZY/LuaSnip" ]
|
|
# The old copy, edits and all, is kept
|
|
copies=("$BACKUPS"/LuaSnip-*)
|
|
[ "${#copies[@]}" -eq 1 ]
|
|
[ "$(cat "${copies[0]}/README.md")" = changed ]
|
|
[ -f "${copies[0]}/data/new.md" ]
|
|
called nvim --headless "+Lazy! sync" +qa
|
|
}
|
|
|
|
@test "a plugin an earlier update only stashed is set aside too" {
|
|
plugin LuaSnip
|
|
echo changed > "$LAZY/LuaSnip/README.md"
|
|
git -C "$LAZY/LuaSnip" stash push -q -m "Stashed by CoreDesktop's update"
|
|
|
|
run update_neovim
|
|
[ "$status" -eq 0 ]
|
|
[ ! -e "$LAZY/LuaSnip" ]
|
|
[ -d "$(echo "$BACKUPS"/LuaSnip-*)" ]
|
|
}
|
|
|
|
@test "plugins that match their checkout are left as they are" {
|
|
plugin lazy.nvim
|
|
echo build output > "$LAZY/lazy.nvim/untracked.so"
|
|
echo changed > "$LAZY/lazy.nvim/README.md"
|
|
git -C "$LAZY/lazy.nvim" stash push -q -m "the user's own stash"
|
|
|
|
run update_neovim
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != *"didn't match"* ]]
|
|
[ -f "$LAZY/lazy.nvim/untracked.so" ]
|
|
[ ! -e "$BACKUPS" ]
|
|
}
|