#!/usr/bin/env bash set -u SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)" source "$SCRIPT_DIR/lib/common.sh" FAILURES=0 assert_eq() { if [ "$1" = "$2" ]; then echo "PASS: $3"; else echo "FAIL: $3 (expected '$1', got '$2')"; FAILURES=$((FAILURES + 1)); fi } # Test 1: user-mode merge — magic replaced, laravel-boost preserved tmpdir=$(mktemp -d) cp "$SCRIPT_DIR/fixtures/sample-claude-json.json" "$tmpdir/.claude.json" cat > "$tmpdir/brain-mcp.json" <>"] } } } EOF2 bash "$SCRIPT_DIR/lib/merge-mcp.sh" --mode=user "$tmpdir/.claude.json" "$tmpdir/brain-mcp.json" # magic args should now contain placeholder magic_api_key=$(jq -r '.mcpServers.magic.args[-1]' "$tmpdir/.claude.json") assert_eq "API_KEY=<>" "$magic_api_key" "user-mode: magic API_KEY replaced with placeholder" # laravel-boost preserved lb_cmd=$(jq -r '.mcpServers["laravel-boost"].command' "$tmpdir/.claude.json") assert_eq "php" "$lb_cmd" "user-mode: laravel-boost preserved" # preserveMe key still present (other keys unchanged) preserve=$(jq -r '.preserveMe' "$tmpdir/.claude.json") assert_eq "yes" "$preserve" "user-mode: other top-level keys preserved" rm -rf "$tmpdir" # Test 2: project-mode merge — playwright/github/semgrep added, laravel-boost preserved tmpdir=$(mktemp -d) cp "$SCRIPT_DIR/fixtures/sample-mcp.json" "$tmpdir/.mcp.json" cat > "$tmpdir/brain-mcp.json" < "$cyr_dir/brain.json" <<'EOF4' {"mcpServers":{"playwright":{"command":"npx","args":["-y","@playwright/mcp"]}}} EOF4 echo '{"mcpServers":{"laravel-boost":{"command":"php"}}}' > "$cyr_dir/target.json" bash "$SCRIPT_DIR/lib/merge-mcp.sh" --mode=project "$cyr_dir/target.json" "$cyr_dir/brain.json" 2>/dev/null merge_exit=$? assert_eq "0" "$merge_exit" "cyrillic-path: merge-mcp.sh exits 0" if [ "$merge_exit" -eq 0 ]; then pw=$(jq -r '.mcpServers.playwright.command' "$cyr_dir/target.json" 2>/dev/null || echo "") assert_eq "npx" "$pw" "cyrillic-path: playwright merged from Cyrillic brain path" lb=$(jq -r '.mcpServers["laravel-boost"].command' "$cyr_dir/target.json" 2>/dev/null || echo "") assert_eq "php" "$lb" "cyrillic-path: laravel-boost preserved" fi rm -rf "$cyr_dir" echo "---" echo "Failures: $FAILURES" exit $FAILURES