ScuttleBot

scuttlebot / tests / smoke / test-installers.sh
Source Blame History 104 lines
016a29f… lmata 1 #!/usr/bin/env bash
016a29f… lmata 2 # Smoke test for scuttlebot relay installers.
016a29f… lmata 3
016a29f… lmata 4 set -euo pipefail
016a29f… lmata 5
016a29f… lmata 6 REPO_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
016a29f… lmata 7 TEMP_HOME=$(mktemp -d)
016a29f… lmata 8 export HOME="$TEMP_HOME"
016a29f… lmata 9 export SCUTTLEBOT_CONFIG_FILE="$HOME/.config/scuttlebot-relay.env"
016a29f… lmata 10 export CODEX_HOOKS_DIR="$HOME/.codex/hooks"
016a29f… lmata 11 export CODEX_HOOKS_JSON="$HOME/.codex/hooks.json"
016a29f… lmata 12 export CODEX_CONFIG_TOML="$HOME/.codex/config.toml"
016a29f… lmata 13 export CODEX_BIN_DIR="$HOME/.local/bin"
016a29f… lmata 14 export GEMINI_HOOKS_DIR="$HOME/.gemini/hooks"
016a29f… lmata 15 export GEMINI_SETTINGS_JSON="$HOME/.gemini/settings.json"
016a29f… lmata 16 export GEMINI_BIN_DIR="$HOME/.local/bin"
016a29f… lmata 17 export CLAUDE_HOOKS_DIR="$HOME/.claude/hooks"
016a29f… lmata 18 export CLAUDE_SETTINGS_JSON="$HOME/.claude/settings.json"
016a29f… lmata 19 export CLAUDE_BIN_DIR="$HOME/.local/bin"
016a29f… lmata 20
016a29f… lmata 21 printf 'Smoke testing installers in %s...\n' "$TEMP_HOME"
016a29f… lmata 22
b8ce843… lmata 23 mkdir -p "$HOME/.config"
b8ce843… lmata 24 cat > "$SCUTTLEBOT_CONFIG_FILE" <<'EOF'
b8ce843… lmata 25 SCUTTLEBOT_IRC_PASS=stale-pass
b8ce843… lmata 26 EOF
b8ce843… lmata 27
016a29f… lmata 28 # Mock binaries
016a29f… lmata 29 mkdir -p "$HOME/.local/bin"
016a29f… lmata 30 touch "$HOME/.local/bin/codex" "$HOME/.local/bin/gemini" "$HOME/.local/bin/claude"
016a29f… lmata 31 chmod +x "$HOME/.local/bin/codex" "$HOME/.local/bin/gemini" "$HOME/.local/bin/claude"
016a29f… lmata 32 export PATH="$HOME/.local/bin:$PATH"
016a29f… lmata 33
016a29f… lmata 34 # 1. Codex
016a29f… lmata 35 printf 'Testing Codex installer...\n'
016a29f… lmata 36 bash "$REPO_ROOT/skills/openai-relay/scripts/install-codex-relay.sh" \
016a29f… lmata 37 --url http://localhost:8080 \
016a29f… lmata 38 --token "test-token" \
1d3caa2… lmata 39 --channel general \
1d3caa2… lmata 40 --channels general,task-42
016a29f… lmata 41
016a29f… lmata 42 # Verify files
016a29f… lmata 43 [ -f "$HOME/.codex/hooks/scuttlebot-post.sh" ]
016a29f… lmata 44 [ -f "$HOME/.codex/hooks/scuttlebot-check.sh" ]
016a29f… lmata 45 [ -f "$HOME/.codex/hooks.json" ]
016a29f… lmata 46 [ -f "$HOME/.codex/config.toml" ]
016a29f… lmata 47 [ -f "$HOME/.local/bin/codex-relay" ]
016a29f… lmata 48 [ -f "$HOME/.config/scuttlebot-relay.env" ]
b8ce843… lmata 49 ! grep -q '^SCUTTLEBOT_IRC_PASS=' "$SCUTTLEBOT_CONFIG_FILE"
b8ce843… lmata 50 grep -q '^SCUTTLEBOT_IRC_DELETE_ON_CLOSE=1$' "$SCUTTLEBOT_CONFIG_FILE"
1d3caa2… lmata 51 grep -q '^SCUTTLEBOT_CHANNELS=general,task-42$' "$SCUTTLEBOT_CONFIG_FILE"
016a29f… lmata 52
016a29f… lmata 53 # 2. Gemini
016a29f… lmata 54 printf 'Testing Gemini installer...\n'
016a29f… lmata 55 bash "$REPO_ROOT/skills/gemini-relay/scripts/install-gemini-relay.sh" \
016a29f… lmata 56 --url http://localhost:8080 \
016a29f… lmata 57 --token "test-token" \
b8ce843… lmata 58 --channel general \
1d3caa2… lmata 59 --channels general,release \
b8ce843… lmata 60 --irc-pass "gemini-fixed"
016a29f… lmata 61
016a29f… lmata 62 # Verify files
016a29f… lmata 63 [ -f "$HOME/.gemini/hooks/scuttlebot-post.sh" ]
016a29f… lmata 64 [ -f "$HOME/.gemini/hooks/scuttlebot-check.sh" ]
016a29f… lmata 65 [ -f "$HOME/.gemini/settings.json" ]
016a29f… lmata 66 [ -f "$HOME/.local/bin/gemini-relay" ]
b8ce843… lmata 67 grep -q '^SCUTTLEBOT_IRC_PASS=gemini-fixed$' "$SCUTTLEBOT_CONFIG_FILE"
1d3caa2… lmata 68 grep -q '^SCUTTLEBOT_CHANNELS=general,release$' "$SCUTTLEBOT_CONFIG_FILE"
b8ce843… lmata 69
b8ce843… lmata 70 printf 'Testing Gemini auto-register scrub...\n'
b8ce843… lmata 71 bash "$REPO_ROOT/skills/gemini-relay/scripts/install-gemini-relay.sh" \
b8ce843… lmata 72 --channel general \
b8ce843… lmata 73 --auto-register
b8ce843… lmata 74 ! grep -q '^SCUTTLEBOT_IRC_PASS=' "$SCUTTLEBOT_CONFIG_FILE"
016a29f… lmata 75
016a29f… lmata 76 # 3. Claude
016a29f… lmata 77 printf 'Testing Claude installer...\n'
016a29f… lmata 78 bash "$REPO_ROOT/skills/scuttlebot-relay/scripts/install-claude-relay.sh" \
016a29f… lmata 79 --url http://localhost:8080 \
016a29f… lmata 80 --token "test-token" \
b8ce843… lmata 81 --channel general \
1d3caa2… lmata 82 --channels general,ops \
b8ce843… lmata 83 --transport irc \
b8ce843… lmata 84 --irc-addr 127.0.0.1:6667 \
b8ce843… lmata 85 --irc-pass "claude-fixed"
016a29f… lmata 86
016a29f… lmata 87 # Verify files
016a29f… lmata 88 [ -f "$HOME/.claude/hooks/scuttlebot-post.sh" ]
016a29f… lmata 89 [ -f "$HOME/.claude/hooks/scuttlebot-check.sh" ]
016a29f… lmata 90 [ -f "$HOME/.claude/settings.json" ]
016a29f… lmata 91 [ -f "$HOME/.local/bin/claude-relay" ]
b8ce843… lmata 92 grep -q '^SCUTTLEBOT_IRC_PASS=claude-fixed$' "$SCUTTLEBOT_CONFIG_FILE"
b8ce843… lmata 93 grep -q '^SCUTTLEBOT_TRANSPORT=irc$' "$SCUTTLEBOT_CONFIG_FILE"
1d3caa2… lmata 94 grep -q '^SCUTTLEBOT_CHANNELS=general,ops$' "$SCUTTLEBOT_CONFIG_FILE"
b8ce843… lmata 95
b8ce843… lmata 96 printf 'Testing Claude auto-register scrub...\n'
b8ce843… lmata 97 bash "$REPO_ROOT/skills/scuttlebot-relay/scripts/install-claude-relay.sh" \
b8ce843… lmata 98 --channel general \
b8ce843… lmata 99 --auto-register
b8ce843… lmata 100 ! grep -q '^SCUTTLEBOT_IRC_PASS=' "$SCUTTLEBOT_CONFIG_FILE"
016a29f… lmata 101
016a29f… lmata 102 printf 'ALL INSTALLERS PASSED SMOKE TEST\n'
016a29f… lmata 103 chmod -R +w "$TEMP_HOME"
016a29f… lmata 104 rm -rf "$TEMP_HOME"

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button