Files
pangolin/server/test/e2e/miniredis/main.go
T
wangjia b3cbeef7cf test(e2e): 第5刀a L4 进程级冒烟编排 + HTTP 段
真起 server 二进制(sqlite + Redis)跑 HTTP 用户旅程,验证 in-process 测试给不了的
信心(二进制起/迁移/路由/鉴权/DB 端到端):
- scripts/e2e-smoke.sh:起栈编排(Redis 三选一:已有 addr / docker / 内嵌 miniredis
  兜底)+ 随机端口 + trap 清理;调 Go driver
- server/test/e2e/smoke_test.go (tag e2e):造用户(复用 argon2 HashPassword)
  → 登录 → /v1/me(dp_uuid/plan/email) → /v1/usage 鉴权 + 无 token 401
- server/test/e2e/miniredis (tag e2e):无 docker 时 Redis 兜底 launcher
- 本地绿;go build/test ./...(无 tag)仍 25 包绿,tag e2e 文件被静默跳过

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 06:59:39 +08:00

31 lines
733 B
Go

//go:build e2e
// Command miniredis 起一个进程内的 miniredis 实例,打印监听地址(host:port)到 stdout
// 然后阻塞,直到收到 SIGINT/SIGTERM。供 scripts/e2e-smoke.sh 在无 docker / 无本地
// redis-server 时作为 Redis 兜底——server 进程经真 TCP 连它。build tag e2e:不进常规构建。
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"github.com/alicebob/miniredis/v2"
)
func main() {
m, err := miniredis.Run()
if err != nil {
fmt.Fprintln(os.Stderr, "miniredis:", err)
os.Exit(1)
}
// 第一行 = 监听地址,脚本读它作为 REDIS_ADDR。
fmt.Println(m.Addr())
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
<-ch
m.Close()
}