aboutsummaryrefslogtreecommitdiff
path: root/scripts/tests
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tests')
-rw-r--r--scripts/tests/sync-language-bundle.bats24
1 files changed, 24 insertions, 0 deletions
diff --git a/scripts/tests/sync-language-bundle.bats b/scripts/tests/sync-language-bundle.bats
index 5e3b912..1871444 100644
--- a/scripts/tests/sync-language-bundle.bats
+++ b/scripts/tests/sync-language-bundle.bats
@@ -182,6 +182,30 @@ install_team_overlay() {
[[ "$output" != *"inbox"* ]]
}
+@test "sync: targets copied into the project Makefile count as adopted, no re-drop" {
+ # The documented adoption path (install-lang: "copy its targets into your
+ # Makefile") leaves no fragment at root and no inbox copy. A project that did
+ # this and deleted the fragment must not get the drop re-suggested every run.
+ install_bundle elisp "$PROJ"
+ mkdir -p "$PROJ/.ai/inbox"
+ printf 'coverage:\n\t@true\ncoverage-summary:\n\t@true\n' > "$PROJ/Makefile"
+ run bash "$SCRIPT" "$PROJ"
+ [ "$status" -eq 0 ]
+ [ ! -f "$PROJ/.ai/inbox/from-rulesets-coverage-makefile.txt" ]
+ [[ "$output" != *"inbox"* ]]
+}
+
+@test "sync: a project Makefile without the coverage-summary target still gets the drop" {
+ # Guard against over-broad detection: an unrelated Makefile must not suppress
+ # a genuinely-unadopted fragment.
+ install_bundle elisp "$PROJ"
+ mkdir -p "$PROJ/.ai/inbox"
+ printf 'build:\n\t@true\ntest:\n\t@true\n' > "$PROJ/Makefile"
+ run bash "$SCRIPT" "$PROJ"
+ [ "$status" -eq 0 ]
+ [ -f "$PROJ/.ai/inbox/from-rulesets-coverage-makefile.txt" ]
+}
+
# --- Surface-only: settings.json ---
@test "sync: drifted settings.json is surfaced, NOT modified, exit 3" {