81 lines
2.0 KiB
Go
81 lines
2.0 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestMigrateLegacyFile(t *testing.T) {
|
|
dir := t.TempDir()
|
|
legacy := filepath.Join(dir, "legacy", "config.json")
|
|
target := filepath.Join(dir, "internal", "config.json")
|
|
content := []byte(`{"activity":"xiaodian"}`)
|
|
|
|
if err := os.MkdirAll(filepath.Dir(legacy), 0700); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(legacy, content, 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
migrated, err := MigrateLegacyFile(target, legacy)
|
|
if err != nil {
|
|
t.Fatalf("迁移失败: %v", err)
|
|
}
|
|
if !migrated {
|
|
t.Fatal("应迁移旧文件")
|
|
}
|
|
got, err := os.ReadFile(target)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(got) != string(content) {
|
|
t.Fatalf("迁移内容 = %q, want %q", got, content)
|
|
}
|
|
if _, err := os.Stat(legacy); err != nil {
|
|
t.Fatalf("旧文件不应被删除: %v", err)
|
|
}
|
|
|
|
if err := os.WriteFile(legacy, []byte(`{"activity":"other"}`), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
migrated, err = MigrateLegacyFile(target, legacy)
|
|
if err != nil {
|
|
t.Fatalf("重复迁移失败: %v", err)
|
|
}
|
|
if migrated {
|
|
t.Fatal("目标已存在时不应覆盖迁移")
|
|
}
|
|
got, err = os.ReadFile(target)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(got) != string(content) {
|
|
t.Fatalf("目标文件被意外覆盖: %q", got)
|
|
}
|
|
}
|
|
|
|
func TestDefaultAppPathsUseInternalDataDir(t *testing.T) {
|
|
dir := t.TempDir()
|
|
t.Setenv("DOUYU_DATA_DIR", dir)
|
|
t.Setenv("DOUYU_CONFIG", "")
|
|
t.Setenv("DOUYU_USERS", "")
|
|
t.Setenv("DOUYU_LOG_DIR", "")
|
|
t.Setenv("DOUYU_SUCCESS_DIR", "")
|
|
|
|
paths := DefaultAppPaths()
|
|
if paths.DataDir != dir {
|
|
t.Fatalf("DataDir = %q, want %q", paths.DataDir, dir)
|
|
}
|
|
if paths.ConfigFile != filepath.Join(dir, "config.json") {
|
|
t.Fatalf("ConfigFile = %q", paths.ConfigFile)
|
|
}
|
|
if paths.AccountFile != filepath.Join(dir, "accounts.txt") {
|
|
t.Fatalf("AccountFile = %q", paths.AccountFile)
|
|
}
|
|
if paths.LogDir != filepath.Join(dir, "logs") || paths.SuccessDir != filepath.Join(dir, "success_images") {
|
|
t.Fatalf("应用数据子目录异常: logs=%q success=%q", paths.LogDir, paths.SuccessDir)
|
|
}
|
|
}
|