#!/usr/bin/env bats setup() { REPO_ROOT="$(cd "$BATS_TEST_DIRNAME/../../../../../" && pwd)" load "$REPO_ROOT/tests/test_helper/bats-support/load" load "$REPO_ROOT/tests/test_helper/bats-assert/load" SCRIPT="$(cd "$BATS_TEST_DIRNAME/../scripts" && pwd)/validate-drift.sh" TMPDIR="$(mktemp -d)" } teardown() { rm -rf "$TMPDIR" } @test "fails when AGENTS.md references a stale npm script" { cat > "$TMPDIR/package.json" <<'EOF' { "scripts": { "test": "jest" } } EOF cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Testing - Run `pnpm run e2e` before committing. EOF run bash "$SCRIPT" "$TMPDIR" assert_failure assert_output --partial "e2e" } @test "passes when the referenced npm script exists" { cat > "$TMPDIR/package.json" <<'EOF' { "scripts": { "test": "jest" } } EOF cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Testing - Run `npm run test` before committing. EOF run bash "$SCRIPT" "$TMPDIR" assert_success } @test "fails when AGENTS.md references a stale make target" { cat > "$TMPDIR/Makefile" <<'EOF' build: echo building EOF cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Setup Run `make deploy` to ship. EOF run bash "$SCRIPT" "$TMPDIR" assert_failure assert_output --partial "deploy" } @test "emits INFO instead of FAIL when there is no package.json to verify an npm script against" { cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Testing Run `pnpm run e2e` before committing. EOF run bash "$SCRIPT" "$TMPDIR" assert_success assert_output --partial "INFO" assert_output --partial "e2e" } @test "fails when a referenced file path does not exist" { cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Setup See `scripts/bootstrap.sh` for environment setup. EOF run bash "$SCRIPT" "$TMPDIR" assert_failure assert_output --partial "scripts/bootstrap.sh" } @test "passes when the referenced file path exists" { mkdir -p "$TMPDIR/scripts" : > "$TMPDIR/scripts/bootstrap.sh" cat > "$TMPDIR/AGENTS.md" <<'EOF' # AGENTS.md ## Setup See `scripts/bootstrap.sh` for environment setup. EOF run bash "$SCRIPT" "$TMPDIR" assert_success }