AkurAI Build
Menu

Public repository / 5113300d6181fcc9ebf43e1c12a8300c4873854b

AkurAI-EC2 / tests/test_manifest_helper.sh

Latest change 5113300d6181fcc9ebf43e1c12a8300c4873854b - Add v2 manifest loader foundation by Claude Code

#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CLI="$ROOT/bin/akurai-ec2"
HELPER="$ROOT/libexec/akurai-ec2-manifest.py"
FIXTURES="$ROOT/tests/fixtures"
TMPDIR="$(mktemp -d)"
trap 'rm -rf "$TMPDIR"' EXIT

check_helper() {
  local name="$1"
  local out="$TMPDIR/$name.tsv"
  python3 "$HELPER" "$FIXTURES/$name.toml" > "$out"
  diff -u "$FIXTURES/$name.expected.tsv" "$out"
}

make_app_fixture() {
  local name="$1"
  local version="$2"
  local dest="$TMPDIR/$name-app"
  mkdir -p "$dest"
  cp "$FIXTURES/$name.toml" "$dest/akurai-deploy.toml"
  printf '%s\n' "$version" > "$dest/VERSION"
  printf '%s\n' "$dest"
}

check_release_dry_run() {
  local name="$1"
  local version="$2"
  local expect_release="$3"
  local expect_action="$4"
  local expect_extra="$5"
  local appdir out

  appdir="$(make_app_fixture "$name" "$version")"
  out="$TMPDIR/$name.release.out"
  "$CLI" release --dry-run -C "$appdir" > "$out" 2>&1
  grep -F "$expect_release" "$out" >/dev/null
  grep -F "$expect_action" "$out" >/dev/null
  grep -F "$expect_extra" "$out" >/dev/null
}

bash -n "$CLI"

check_helper "v1-flat"
check_helper "v2-rust"
check_helper "v2-framework"

check_release_dry_run \
  "v1-flat" \
  "0.1.2" \
  "release: akurai-vpn" \
  "[dry-run] would: deploy-binary akurai-vpn target/x86_64-unknown-linux-musl/release/akurai-vpn 8098 ." \
  "release (dry-run): akurai-vpn → v0.1.3"

check_release_dry_run \
  "v2-rust" \
  "1.4.9" \
  "release: akurai-rust" \
  "[dry-run] would: deploy-binary akurai-rust target/x86_64-unknown-linux-musl/release/akurai-rust 8104 ." \
  "[dry-run] would: nginx-proxy rust.akurai.test 8104; tls rust.akurai.test"

check_release_dry_run \
  "v2-framework" \
  "2.3.4" \
  "release: framework-site" \
  "[dry-run] would: deploy-binary framework-site target/x86_64-unknown-linux-musl/release/framework-site 8112 ." \
  "[dry-run] nginx: leaving existing site.akurai.test vhost untouched (manage_nginx=false)"

grep -F "publish: framework-site" "$TMPDIR/v2-framework.release.out" >/dev/null