5.1 KiB
5.1 KiB
dbtool-tui TTY Smoke Runbook
Contract
dbtool-tui是交互式 TUI;启动验证必须提供真实 TTY。- 当前最小可重复入口是
scripts/tui/smoke-tty.sh <binary-path>。 dbtool-tui --help、dbtool-tui --version不是有效的 TUI smoke 替代路径。- 非 TTY 启动当前应退出
1,并输出明确的 TTY-required 提示。
前置条件
- Linux runner,且可用
script(util-linux)。 - 已有可执行二进制:
- 源码环境:
CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse cargo build -p dbtool-tui - release binary 复验:
CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse cargo build --release -p dbtool-tui - 无 Rust 工具链环境:直接使用
./target/debug/dbtool-tui
- 源码环境:
- 若当前 runner 的
CARGO_REGISTRIES_CRATES_IO_PROTOCOL为空字符串,裸cargo会直接失败;请按上面的显式 override 执行。
最小入口
正常终端尺寸:
scripts/tui/smoke-tty.sh ./target/debug/dbtool-tui
grep -aq "Workspace" /tmp/dbtool-tui-smoke.log
grep -aq "Loading" /tmp/dbtool-tui-smoke.log
release binary 同口径:
scripts/tui/smoke-tty.sh ./target/release/dbtool-tui 40 120 /tmp/cmp60-dbtool-tui-release-smoke.log
grep -aq "Workspace" /tmp/cmp60-dbtool-tui-release-smoke.log
grep -aq "Loading" /tmp/cmp60-dbtool-tui-release-smoke.log
小终端降级:
scripts/tui/smoke-tty.sh ./target/debug/dbtool-tui 20 90 /tmp/dbtool-tui-small.log
grep -aq "Terminal Too Small" /tmp/dbtool-tui-small.log
grep -aq "Resize the terminal" /tmp/dbtool-tui-small.log
PostgreSQL / MySQL live path
- 当前 runner 的可达 network path 是
host.docker.internal:55432(PostgreSQL)与host.docker.internal:53306(MySQL),不是127.0.0.1。 - 当前 runner 即使缺少
docker compose子命令,也可通过scripts/tui/demo-stack.sh与 bootstrap fallback 建立同一套 demo 数据。 - 当前推荐的单命令复验入口:
export DBTOOL_PASSWORD=dbtool
scripts/tui/live-network-smoke.sh postgres ./target/debug/dbtool-tui
scripts/tui/live-network-smoke.sh mysql ./target/debug/dbtool-tui
-
这两条命令只验证内置 demo profile 的 activate / inspect / query / export,不覆盖连接新增 / 编辑 / 删除 / 保存或 secret session cache。
-
若 GUI host 或宿主机必须把 demo host 改到
127.0.0.1,请在启动前设置DBTOOL_TUI_POSTGRES_HOST/DBTOOL_TUI_POSTGRES_PORT与DBTOOL_TUI_MYSQL_HOST/DBTOOL_TUI_MYSQL_PORT;这是 operator fallback,不得记成连接管理 happy path。 -
若只想准备 demo stack 与 seed 数据:
scripts/tui/demo-stack.sh up
scripts/tui/demo-stack.sh seed
scripts/tui/demo-stack.sh status
Connection management smoke
若要复核新的 in-app 连接管理路径,建议先隔离 profile store:
export DBTOOL_TUI_PROFILE_STORE=/tmp/dbtool-tui-profiles.json
rm -f "$DBTOOL_TUI_PROFILE_STORE"
cargo run -p dbtool-tui
进入 TUI 后按下面的手工路径复核:
- 按
2进入Connections - 按
n新建 profile - 在中间
Query Editor中用i编辑字段,Enter提交字段 - 按
t做 staged connect + inspect 测试 - 按
s保存并激活 profile - 确认左侧列表、右侧
Inspector和Status & Activity同步切到新活动连接 - 按
e编辑已保存 profile,确认修改可再次测试并保存 - 按
d删除 profile,确认Enter才执行删除,Esc可取消
记录时至少包含:
DBTOOL_TUI_PROFILE_STORE的实际路径- 新建 profile 的 driver 类型(SQLite / PostgreSQL / MySQL)
t的结果文案s后的激活结果与当前连接名称- 删除确认路径是否被
Enter/Esc正确区分
非 TTY 预期行为
./target/release/dbtool-tui --help
2026-03-31 当前 release binary 实测行为:
- 退出码:
1 stderr:dbtool-tui requires an interactive TTY on stdin and stdout.Detected stdin TTY: falseDetected stdout TTY: falseUse \scripts/tui/smoke-tty.sh ./target/debug/dbtool-tui` for repeatable smoke validation.``--help` is not a supported TUI smoke path.
这条路径的意义是确认“限制被清楚记录”,不是把 --help 视为 smoke 成功。
QA 记录要求
- 记录二进制路径、命令、终端尺寸、退出码、日志路径。
- 正常尺寸至少确认日志里出现
Workspace、Loading。 - 小终端路径至少确认日志里出现
Terminal Too Small、Resize the terminal。 - network live 路径至少记录目标数据库、endpoint、导出路径和日志路径。
- 若使用 host override,额外记录具体环境变量;不得把这条路径写成普通用户主流程。
- 若源码不可重建,要明确记为环境 blocker,不得伪造成产品失败。
CI 约束
- 当前仓库还没有正式接入
dbtool-tui的 GitHub Actions smoke。 - 当前仓库也还没有
dbtool-tui的 packaged-artifact workflow / package script;target/release/dbtool-tui只能记为 release-binary 级别证据,不能上抬成已验证的 distributable artifact。 - 后续 CI 若补齐,应直接复用
scripts/tui/smoke-tty.sh,不要重新发明另一套启动口径。