55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package main
|
||
|
||
import (
|
||
"bytes"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func TestParseCLIFlagsPriority(t *testing.T) {
|
||
t.Setenv("ANY_HUB_CONFIG", "/tmp/env.toml")
|
||
|
||
opts, err := parseCLIFlags([]string{})
|
||
if err != nil {
|
||
t.Fatalf("解析失败: %v", err)
|
||
}
|
||
if opts.configPath != "/tmp/env.toml" {
|
||
t.Fatalf("应优先使用环境变量,得到 %s", opts.configPath)
|
||
}
|
||
|
||
opts, err = parseCLIFlags([]string{"--config", "/tmp/flag.toml"})
|
||
if err != nil {
|
||
t.Fatalf("解析失败: %v", err)
|
||
}
|
||
if opts.configPath != "/tmp/flag.toml" {
|
||
t.Fatalf("flag 应高于环境变量,得到 %s", opts.configPath)
|
||
}
|
||
}
|
||
|
||
func TestRunCheckConfigSuccess(t *testing.T) {
|
||
useBufferWriters(t)
|
||
code := run(cliOptions{configPath: configFixture(t, "valid.toml"), checkOnly: true})
|
||
if code != 0 {
|
||
t.Fatalf("期望退出码 0,得到 %d", code)
|
||
}
|
||
}
|
||
|
||
func TestRunCheckConfigFailure(t *testing.T) {
|
||
useBufferWriters(t)
|
||
code := run(cliOptions{configPath: configFixture(t, "missing.toml"), checkOnly: true})
|
||
if code == 0 {
|
||
t.Fatalf("无效配置应返回非零退出码")
|
||
}
|
||
}
|
||
|
||
func TestRunVersionOutput(t *testing.T) {
|
||
useBufferWriters(t)
|
||
code := run(cliOptions{showVersion: true})
|
||
if code != 0 {
|
||
t.Fatalf("version 模式应成功退出,得到 %d", code)
|
||
}
|
||
if !strings.Contains(stdOut.(*bytes.Buffer).String(), "any-hub") {
|
||
t.Fatalf("version 输出应包含 any-hub 标识")
|
||
}
|
||
}
|