scripts/run-fixtures.sh
scripts/run-fixtures.shBrowse 7 files
1,553 tokens
4,892 bytes
Token encoding: o200k_base
Snapshot 506f736
← Back to SKILL.md
1#!/usr/bin/env bash2set -euo pipefail3 4ROOT_DIR=$(git rev-parse --show-toplevel)5SKILL_DIR="$ROOT_DIR/.agents/skills/changeset-validation"6 7node "$SKILL_DIR/scripts/changeset-prompt.mjs" --output "$SKILL_DIR/tmp/prompt.md" >/dev/null8 9TMP_DIR=$(mktemp -d)10PASS_JSON="$TMP_DIR/pass.json"11FAIL_JSON="$TMP_DIR/fail.json"12SCHEMA_JSON="$TMP_DIR/schema.json"13PATCH_JSON="$TMP_DIR/patch.json"14 15cat > "$PASS_JSON" <<'JSON'16{"ok":true,"errors":[],"warnings":[],"required_bump":"none"}17JSON18 19cat > "$FAIL_JSON" <<'JSON'20{"ok":false,"errors":["Missing changeset."],"warnings":[],"required_bump":"patch"}21JSON22 23cat > "$SCHEMA_JSON" <<'JSON'24{"ok":true}25JSON26 27cat > "$PATCH_JSON" <<'JSON'28{"ok":true,"errors":[],"warnings":[],"required_bump":"patch"}29JSON30 31run_expect() {32 local expected=$133 local label=$234 shift 235 local output36 set +e37 output=$("$@" 2>&1)38 local status=$?39 set -e40 if [ "$status" -ne "$expected" ]; then41 echo "FAIL: $label"42 echo "$output"43 exit 144 fi45 if [ "$expected" -eq 0 ]; then46 echo "OK: $label"47 else48 echo "OK (expected failure): $label"49 fi50}51 52run_expect 0 "valid JSON passes" node "$SKILL_DIR/scripts/changeset-validation-result.mjs" "$PASS_JSON"53run_expect 1 "invalid JSON fails" node "$SKILL_DIR/scripts/changeset-validation-result.mjs" "$FAIL_JSON"54run_expect 1 "schema errors fail" node "$SKILL_DIR/scripts/changeset-validation-result.mjs" "$SCHEMA_JSON"55 56run_expect 0 "milestone assignment skips without token" node "$SKILL_DIR/scripts/changeset-assign-milestone.mjs" "$PASS_JSON"57run_expect 0 "milestone assignment handles fail case" node "$SKILL_DIR/scripts/changeset-assign-milestone.mjs" "$FAIL_JSON"58 59MILESTONE_REPO="$TMP_DIR/milestone-repo"60mkdir -p "$MILESTONE_REPO"61git -C "$MILESTONE_REPO" init >/dev/null62git -C "$MILESTONE_REPO" config user.email test@example.com63git -C "$MILESTONE_REPO" config user.name "Test User"64mkdir -p "$MILESTONE_REPO/.changeset"65git -C "$MILESTONE_REPO" commit --allow-empty -m "base" >/dev/null66BASE_SHA=$(git -C "$MILESTONE_REPO" rev-parse HEAD)67cat > "$MILESTONE_REPO/.changeset/minor.md" <<'MD'68---69'@openai/agents-core': minor70---71 72feat: add test feature73MD74git -C "$MILESTONE_REPO" add .changeset/minor.md75git -C "$MILESTONE_REPO" commit -m "head" >/dev/null76HEAD_SHA=$(git -C "$MILESTONE_REPO" rev-parse HEAD)77cat > "$TMP_DIR/event.json" <<JSON78{79 "repository": {80 "owner": { "login": "openai" },81 "name": "openai-agents-js"82 },83 "pull_request": {84 "number": 1210,85 "base": { "sha": "$BASE_SHA" },86 "head": { "sha": "$HEAD_SHA" }87 }88}89JSON90 91output=$(92 cd "$MILESTONE_REPO"93 GITHUB_TOKEN=dummy \94 GITHUB_EVENT_PATH="$TMP_DIR/event.json" \95 CHANGESET_ASSIGN_MILESTONE_DRY_RUN=1 \96 CHANGESET_ASSIGN_MILESTONE_MILESTONES_JSON='[{"title":"0.8.x","number":6},{"title":"0.9.x","number":7}]' \97 node "$SKILL_DIR/scripts/changeset-assign-milestone.mjs" "$PATCH_JSON"98)99if [ "$output" != "Milestone would be set to 0.9.x." ]; then100 echo "FAIL: milestone assignment uses changeset release bump"101 echo "$output"102 exit 1103fi104echo "OK: milestone assignment uses changeset release bump"105 106STALE_REPO="$TMP_DIR/stale-repo"107mkdir -p "$STALE_REPO"108git -C "$STALE_REPO" init >/dev/null109git -C "$STALE_REPO" config user.email test@example.com110git -C "$STALE_REPO" config user.name "Test User"111mkdir -p "$STALE_REPO/.changeset"112cat > "$STALE_REPO/.changeset/stale.md" <<'MD'113---114'@openai/agents-core': minor115---116 117feat: old branch-local changeset118MD119git -C "$STALE_REPO" add .changeset/stale.md120git -C "$STALE_REPO" commit -m "common" >/dev/null121COMMON_SHA=$(git -C "$STALE_REPO" rev-parse HEAD)122git -C "$STALE_REPO" checkout -b pr-head "$COMMON_SHA" >/dev/null 2>&1123HEAD_SHA=$(git -C "$STALE_REPO" rev-parse HEAD)124git -C "$STALE_REPO" checkout -b current-base "$COMMON_SHA" >/dev/null 2>&1125git -C "$STALE_REPO" rm .changeset/stale.md >/dev/null126git -C "$STALE_REPO" commit -m "remove stale changeset on base" >/dev/null127BASE_SHA=$(git -C "$STALE_REPO" rev-parse HEAD)128cat > "$TMP_DIR/stale-event.json" <<JSON129{130 "repository": {131 "owner": { "login": "openai" },132 "name": "openai-agents-js"133 },134 "pull_request": {135 "number": 1210,136 "base": { "sha": "$BASE_SHA" },137 "head": { "sha": "$HEAD_SHA" }138 }139}140JSON141 142output=$(143 cd "$STALE_REPO"144 GITHUB_TOKEN=dummy \145 GITHUB_EVENT_PATH="$TMP_DIR/stale-event.json" \146 CHANGESET_ASSIGN_MILESTONE_DRY_RUN=1 \147 CHANGESET_ASSIGN_MILESTONE_MILESTONES_JSON='[{"title":"0.8.x","number":6},{"title":"0.9.x","number":7}]' \148 node "$SKILL_DIR/scripts/changeset-assign-milestone.mjs" "$PATCH_JSON"149)150if [ "$output" != "Milestone would be set to 0.8.x." ]; then151 echo "FAIL: milestone assignment ignores base-only stale changesets"152 echo "$output"153 exit 1154fi155echo "OK: milestone assignment ignores base-only stale changesets"156 157rm -rf "$TMP_DIR"158rm -rf "$SKILL_DIR/tmp"159 160echo "changeset-validation fixture checks passed."161