#!/usr/bin/env bash # # development/tests/test-vars-vim.sh — exercises the vimwiki compatibility # shim (autoload/vimwiki/vars.vim) that third-party plugins (vimwiki-sync, # vim-zettel) call via vimwiki#vars#get_wikilocal. # # Runs test-vars-vim.vim under headless Vim; that script writes PASS/FAIL # lines to $NUWIKI_VARS_OUT. Covers per-wiki-index resolution, global # fallback, out-of-range clamp, the no-index "owning wiki" path (the # BufRead path that previously raised E121), and the single-wiki shorthand. # # Exit code: 0 when every check passes, 1 on any FAIL or missing output. # Skips (exit 0) when vim is not installed. set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" log() { printf '\033[1;34m[vars-vim]\033[0m %s\n' "$*"; } if ! command -v vim >/dev/null 2>&1; then log 'vim not installed — skipping' exit 0 fi TMP="$(mktemp -d -t nuwiki-vars-vim-test-XXXXXX)" trap 'rm -rf "$TMP"' EXIT DIR_A="$TMP/wiki_a" DIR_B="$TMP/wiki_b" mkdir -p "$DIR_A" "$DIR_B" printf '= Home =\n' > "$DIR_A/index.wiki" printf '= B =\n' > "$DIR_B/index.wiki" OUT="$TMP/vars.out" VIMRC="$TMP/vimrc" cat > "$VIMRC" <"$TMP/vim.log" 2>&1 || true if [[ ! -f "$OUT" ]]; then echo 'vars harness produced no output' >&2 echo '--- vim log ---' >&2 cat "$TMP/vim.log" >&2 || true exit 1 fi cat "$OUT" PASSED="$(grep -c '^PASS ' "$OUT" || true)" FAILED="$(grep -c '^FAIL ' "$OUT" || true)" echo "SUMMARY: ${PASSED} passed, ${FAILED} failed" if [[ "$FAILED" -ne 0 ]]; then exit 1 fi log 'vars shim OK ✓' exit 0