fix: P4T1审查修复(platform.db入data卷/tzdata注释/corepack钉版/compose版本注记)
- main.py: PLATFORM_DB 挪到 <repo>/data/platform.db——data/ 是 compose bind mount,容器/镜像重建不再丢租户注册表;lifespan 对父目录兜底 mkdir(冷机 data/ 不存在,sqlite 不建父目录)。bootstrap 脚本 --db 默认值同步锚定 data/。 - 新测试 test_platform_db_defaults_into_data_dir: 常量形状钉死(回退 仓库根即红)+ 冷机形态下 lifespan 建库于 data/ 内(全量 603)。 - Dockerfile: corepack 钉实测通过的具体版本 0.36.0(不追 latest,构建 可复现);tzdata 注释照实改写(trixie slim 实测已自带,安装留作基 镜像漂移保险)。 - docker-compose: 头注释改准确(tenants/=租户库,data/=platform.db+ uploads);env_file 注记对象式写法需 Docker Compose >= 2.24。 - 实证: compose down/up 重建容器后宿主 ./data/platform.db 仍在, healthcheck healthy,/admin/ 200;docker compose build 复验通过。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -200,6 +200,27 @@ def test_main_default_db_source_empty_platform_boots(tmp_path, monkeypatch):
|
||||
assert app.state.registry.runtimes() == () # 空注册表不炸
|
||||
|
||||
|
||||
def test_platform_db_defaults_into_data_dir(tmp_path, monkeypatch):
|
||||
"""PLATFORM_DB 落 <repo>/data/(P4T1 审查修复):data/ 是 compose 的
|
||||
bind mount——容器/镜像重建不再丢租户注册表。两层断言:
|
||||
1. 常量形状钉死(回退仓库根即红,compose 持久化前提);
|
||||
2. 功能:锚到 tmp 的 data/ 子目录(目录刻意不预建=冷机形态),
|
||||
lifespan 启动后平台库文件确实建在 data/ 内(父目录兜底 mkdir)。"""
|
||||
import app.main as main_mod
|
||||
assert main_mod.PLATFORM_DB == main_mod.BASE_DIR / "data" / "platform.db"
|
||||
target = tmp_path / "data" / "platform.db"
|
||||
assert not target.parent.exists() # 冷机:data/ 尚不存在
|
||||
monkeypatch.setattr(main_mod, "PLATFORM_DB", target)
|
||||
monkeypatch.setattr(main_mod, "TENANTS_DIR", tmp_path / "tenants")
|
||||
monkeypatch.delenv("TENANT_SOURCE", raising=False)
|
||||
|
||||
with app_test_client(main_mod.app, "http://testserver", tmp_path) as c:
|
||||
assert c.get("/health").status_code == 200
|
||||
# 断言须在 client 存活期内:app_test_client 退出时会清掉整个 tmp
|
||||
# (含本文件)——文件在应用运行中确实存在即为所证
|
||||
assert target.exists() # lifespan 建库于 data/ 内
|
||||
|
||||
|
||||
def test_main_default_db_source_bootstrapped_platform(tmp_path, monkeypatch):
|
||||
"""默认 db + bootstrap 导入后的 platform.db:启动即装配两租户(registry
|
||||
经 async load_all),jiancai 域名真实请求走通(Host 中间件→懒建租户库
|
||||
|
||||
Reference in New Issue
Block a user