diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/tests/install-lang.bats | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/tests/install-lang.bats b/scripts/tests/install-lang.bats new file mode 100644 index 0000000..523be99 --- /dev/null +++ b/scripts/tests/install-lang.bats @@ -0,0 +1,42 @@ +#!/usr/bin/env bats +# +# Tests for scripts/install-lang.sh — install a language ruleset into a project. +# +# Strategy: scaffold a fresh git project in a temp dir, run install-lang.sh +# against it. Canonical source stays the real one (install-lang.sh resolves +# languages/ and claude-rules/ relative to its own location). + +REAL_REPO="$(cd "$(dirname "$BATS_TEST_FILENAME")/../.." && pwd)" +INSTALL_LANG="$REAL_REPO/scripts/install-lang.sh" + +setup() { + PROJECT="$(mktemp -d -t install-lang-bats.XXXXXX)" + (cd "$PROJECT" && git init -q) +} + +teardown() { + rm -rf "$PROJECT" +} + +@test "install-lang elisp: lands the tooling footprint" { + run bash "$INSTALL_LANG" elisp "$PROJECT" + + [ "$status" -eq 0 ] + [ -d "$PROJECT/.claude/rules" ] + [ -d "$PROJECT/githooks" ] + [ -f "$PROJECT/CLAUDE.md" ] +} + +@test "install-lang elisp: gitignores the full Claude tooling footprint" { + run bash "$INSTALL_LANG" elisp "$PROJECT" + + [ "$status" -eq 0 ] + # The whole .claude/, CLAUDE.md, and githooks/ stay out of the project's + # git history — Claude tooling is delivered by install/sync, never committed. + grep -qxF ".claude/" "$PROJECT/.gitignore" + grep -qxF "CLAUDE.md" "$PROJECT/.gitignore" + grep -qxF "githooks/" "$PROJECT/.gitignore" + # Elisp byte-compile artifacts. + grep -qxF "*.elc" "$PROJECT/.gitignore" + grep -qxF "*.eln" "$PROJECT/.gitignore" +} |
