diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-25 14:50:31 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-25 14:50:31 -0500 |
| commit | d27d07e8e4b004926ea960c118fa99caa979caa0 (patch) | |
| tree | 4d7ad4c42bc511e29c961e745ad9edd398a2c510 /scripts/tests/install-lang.bats | |
| parent | 45dda25fe1fcaceb121d47d23419163a59e6a3c1 (diff) | |
| download | rulesets-d27d07e8e4b004926ea960c118fa99caa979caa0.tar.gz rulesets-d27d07e8e4b004926ea960c118fa99caa979caa0.zip | |
fix(elisp): gitignore the full Claude tooling footprint
The bundle tracked .claude/rules, CLAUDE.md, and githooks/, ignoring only the personal overrides. For a code project, especially a third-party package checkout, the whole Claude footprint should stay local: install and sync deliver it, so it shouldn't land in the project's history. gitignore-add.txt now ignores .claude/, CLAUDE.md, and githooks/ next to the elisp build artifacts.
I also added install-lang.bats, which the bundle had no test for. It covers the landed footprint and the gitignore set.
Diffstat (limited to 'scripts/tests/install-lang.bats')
| -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" +} |
