Commit Graph

3 Commits

Author SHA1 Message Date
Henner M. Kruse 06bd74d64f Close the 3 real remaining coverage gaps
- vault_index.sh: grep fallback for frontmatter tag extraction when rg
  is unavailable (had this for vault_search.sh/vault_backlinks.sh, not
  vault_index.sh).
- git_cmd.bats: registered repo path that's a file, not a directory
  (had the obsidian equivalent, not git-manager's).
- git_cmd.bats: missing python3 in resolve_repo_path (previously only
  tested via setup.sh/vault_index.sh, not git_cmd.sh's own _lib.sh).

76 tests now (was 73). kcov: 87.84% (260/296 lines), up from 86.15% --
both target files (vault_index.sh, git-manager _lib.sh) now at 100%.
Remaining gap is entirely kcov's inability to trace multi-line
python3/awk/jq blocks and bash 'case pattern) ;;' no-op branches,
confirmed by checking hit counts on the surrounding lines -- not
further closeable by adding tests.
2026-08-05 04:31:06 +00:00
Henner M. Kruse dc4a5c5b5e Close bats coverage gaps, add hide_command helper, wire up kcov
- tests/helpers/common.bash: hide_command hides python3/jq/rg via a
  per-directory-batched PATH shim (not per-file — that took minutes),
  making the fail-open/grep-fallback branches testable.
- 20 new tests across all 7 .bats files: unknown flags, invalid
  --settings-scope, missing python3/jq, grep fallback when rg is
  unavailable, empty/multi-vault config edge cases, a vault path that
  stops existing or isn't a directory, and the previously-untested
  tool_name != Bash branch of force-ask-on-raw-git.sh. 53 -> 73 tests.
- hooks.bats: deploy the hooks once in setup_file() (BATS_FILE_TMPDIR)
  instead of per-test (BATS_TEST_TMPDIR) -- faster, and gives kcov one
  stable path per hook to aggregate coverage against instead of a
  fragmented copy per test.
- .gitignore (first in this repo) + tests/README.md Coverage section
  documenting the kcov invocation and why --include-pattern needs three
  entries, not two.

Real, tool-measured coverage via kcov: 86.15% (255/296 lines) across
all 10 wrapper/setup/hook scripts in both plugins, replacing an earlier
manual ~68% branch-coverage estimate.
2026-08-04 21:09:07 +00:00
Henner M. Kruse 2d25e69632 Add bats test suite for git-manager and obsidian-vault-kb
Isolated per-test $HOME sandboxing via tests/helpers/common.bash.
Covers both plugins' wrapper scripts, their setup.sh, and
git-manager's two PreToolUse hooks (53 tests). Verified the suite
catches regressions by temporarily reintroducing the recently-fixed
vault_search.sh -g/-- ordering bug and confirming it fails.
2026-08-04 19:34:51 +00:00