|
| 1 | +#!/usr/bin/env bash |
| 2 | +# Local install smoke test — verifies install.sh, release.sh, and core commands. |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| 6 | + |
| 7 | +pass() { printf "\033[1;32m[ OK ]\033[0m %s\n" "$*"; } |
| 8 | +fail() { printf "\033[1;31m[FAIL]\033[0m %s\n" "$*" >&2; exit 1; } |
| 9 | +step() { printf "\033[1;34m[STEP]\033[0m %s\n" "$*"; } |
| 10 | + |
| 11 | +cd "$REPO_ROOT" |
| 12 | + |
| 13 | +step "install.sh --help" |
| 14 | +bash install.sh --help > /dev/null && pass "install.sh --help" |
| 15 | + |
| 16 | +step "install.sh --dry-run" |
| 17 | +bash install.sh --dry-run --yes > /dev/null && pass "install.sh --dry-run" |
| 18 | + |
| 19 | +step "bash -n on install.sh" |
| 20 | +bash -n install.sh && pass "install.sh syntax OK" |
| 21 | + |
| 22 | +step "bash -n on release.sh" |
| 23 | +bash -n release.sh && pass "release.sh syntax OK" |
| 24 | + |
| 25 | +step "Syntax check all .sh files by shebang (exclude backups/)" |
| 26 | +find . \ |
| 27 | + -name "*.sh" \ |
| 28 | + -not -path "./.git/*" \ |
| 29 | + -not -path "./backups/*" \ |
| 30 | + -print0 \ |
| 31 | +| while IFS= read -r -d '' f; do |
| 32 | + shebang="$(head -1 "$f")" |
| 33 | + if [[ "$shebang" == *zsh* ]]; then |
| 34 | + zsh -n "$f" || { printf "\033[1;31m[FAIL]\033[0m zsh -n: %s\n" "$f" >&2; exit 1; } |
| 35 | + else |
| 36 | + bash -n "$f" || { printf "\033[1;31m[FAIL]\033[0m bash -n: %s\n" "$f" >&2; exit 1; } |
| 37 | + fi |
| 38 | + done |
| 39 | +pass "all .sh files pass syntax check" |
| 40 | + |
| 41 | +step "mqlaunch doctor --json" |
| 42 | +if command -v mqlaunch >/dev/null 2>&1; then |
| 43 | + mqlaunch doctor --json | grep -q '"status"' && pass "mqlaunch doctor --json" |
| 44 | +else |
| 45 | + printf "[SKIP] mqlaunch not in PATH — run after install\n" |
| 46 | +fi |
| 47 | + |
| 48 | +step "mqlaunch selftest" |
| 49 | +if command -v mqlaunch >/dev/null 2>&1; then |
| 50 | + mqlaunch selftest && pass "mqlaunch selftest" |
| 51 | +else |
| 52 | + printf "[SKIP] mqlaunch not in PATH — run after install\n" |
| 53 | +fi |
| 54 | + |
| 55 | +printf "\n\033[1;32m=== install smoke test passed ===\033[0m\n" |
0 commit comments