feat: 区分 server 与 desktop 配置加载入口,取消自动创建配置文件
- config.go 重构:抽取 loadConfig 共享逻辑,新增 LoadServerConfig/LoadDesktopConfig/LoadDesktopConfigAtPath,LoadConfig 保持向后兼容 - setupConfigFile 移除 SafeWriteConfigAs 自动创建逻辑,文件不存在时仅使用默认值 - cmd/desktop 切换为 LoadDesktopConfig,端口/HTTP/浏览器/托盘统一使用 cfg.Server.Port - cmd/server 显式使用 LoadServerConfig 明确入口语义 - 提取 desktop 可测 helper:desktopListenAddr/desktopURL/desktopPortMenuTitle/desktopConfigErrorMessage - 新增测试:desktop 忽略 CLI/env/未知参数、配置快照不变、无效配置文件不静默回退、端口 helper 一致性 - README 区分 server/desktop 配置源,移除首次启动自动创建配置文件描述 - 同步 delta specs 到 openspec/specs/ 主规范
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
- **THEN** SHALL 验证 LoadConfigFromPath 正确加载默认值
|
||||
- **THEN** SHALL 验证 YAML 配置文件正确读取
|
||||
- **THEN** SHALL 验证优先级链:CLI 参数 > 环境变量 > YAML 文件 > 默认值
|
||||
- **THEN** SHALL 验证首次启动自动创建配置文件
|
||||
- **THEN** SHALL 验证配置文件缺失时使用默认值,不自动创建配置文件
|
||||
- **THEN** SHALL 验证 SaveConfig 后重新 LoadConfig 数据一致
|
||||
|
||||
#### Scenario: 环境变量覆盖验证
|
||||
@@ -46,11 +46,12 @@
|
||||
- **THEN** SHALL 成功加载
|
||||
- **THEN** 配置值 SHALL 反映环境变量覆盖
|
||||
|
||||
#### Scenario: 自动创建配置文件验证
|
||||
#### Scenario: 配置文件缺失时使用默认值
|
||||
|
||||
- **WHEN** 调用 `LoadConfigFromPath` 并指向不存在的文件路径
|
||||
- **THEN** SHALL 成功加载(不返回 `missing configuration for 'configPath'` 错误)
|
||||
- **THEN** SHALL 返回默认配置对象
|
||||
- **THEN** SHALL NOT 自动创建配置文件
|
||||
|
||||
#### Scenario: handler 错误分支测试
|
||||
|
||||
@@ -303,3 +304,50 @@
|
||||
- **WHEN** 运行 desktop 专属测试
|
||||
- **THEN** SHALL 验证 desktop 模式启动数据库迁移时使用打包迁移资源
|
||||
- **THEN** SHALL 验证应用在发布产物环境中可执行迁移而不依赖源码迁移目录
|
||||
|
||||
### Requirement: Desktop 配置源隔离测试覆盖
|
||||
|
||||
系统 SHALL 为 desktop 配置加载行为建立测试覆盖,验证 desktop 只使用默认配置文件和默认值,不受 CLI 参数或 `NEX_*` 环境变量影响。
|
||||
|
||||
#### Scenario: Desktop 配置文件端口生效
|
||||
|
||||
- **WHEN** 运行 desktop 配置加载相关测试
|
||||
- **THEN** SHALL 验证 `~/.nex/config.yaml` 或等价测试配置文件中的 `server.port` 会进入 desktop 启动配置快照
|
||||
- **THEN** SHALL 验证 desktop 端口检测、HTTP 监听地址、浏览器打开地址和托盘端口显示使用同一个配置端口
|
||||
|
||||
#### Scenario: Desktop 忽略 CLI 参数
|
||||
|
||||
- **WHEN** 测试进程参数包含 `--server-port 9000`、`--database-path /tmp/test.db` 或 `--config /tmp/custom.yaml`
|
||||
- **THEN** desktop 配置加载 SHALL 忽略这些参数
|
||||
- **THEN** desktop 配置加载 SHALL 使用默认配置文件路径和配置文件值
|
||||
|
||||
#### Scenario: Desktop 忽略未知参数
|
||||
|
||||
- **WHEN** 测试进程参数包含未知命令行参数
|
||||
- **THEN** desktop 配置加载 SHALL 成功或仅因配置文件本身无效而失败
|
||||
- **THEN** desktop 配置加载 SHALL NOT 因未知参数返回参数解析错误
|
||||
|
||||
#### Scenario: Desktop 忽略环境变量
|
||||
|
||||
- **WHEN** 测试环境设置 `NEX_SERVER_PORT`、`NEX_DATABASE_PATH`、`NEX_LOG_LEVEL` 或其他 `NEX_*` 环境变量
|
||||
- **THEN** desktop 配置加载 SHALL NOT 使用这些环境变量覆盖配置文件值
|
||||
- **THEN** server 配置加载的环境变量覆盖测试 SHALL 继续通过
|
||||
|
||||
#### Scenario: Desktop 配置快照不随文件变化自动更新
|
||||
|
||||
- **WHEN** desktop 配置已加载为内存中的启动快照
|
||||
- **AND** 测试修改配置文件中的 `server.port` 或其他配置项
|
||||
- **THEN** 已加载的配置对象 SHALL 保持原值
|
||||
- **THEN** 重新启动或重新执行 desktop 配置加载时 SHALL 读取修改后的配置值
|
||||
|
||||
#### Scenario: Desktop 无效配置错误提示
|
||||
|
||||
- **WHEN** desktop 启动时配置文件存在但 YAML 无法解析或配置验证失败
|
||||
- **THEN** 测试 SHALL 验证启动流程返回或显示包含配置路径和失败原因的错误
|
||||
- **THEN** 测试 SHALL 验证 desktop 不会静默回退默认配置继续启动
|
||||
|
||||
#### Scenario: 配置文件缺失时使用默认值
|
||||
|
||||
- **WHEN** 测试配置加载时指定不存在的配置文件路径
|
||||
- **THEN** SHALL 返回默认配置值,不自动创建配置文件
|
||||
- **THEN** 测试 SHALL 验证配置文件未被创建
|
||||
|
||||
Reference in New Issue
Block a user