package config import ( "path/filepath" "testing" ) func TestAcquireInstancePathsSeparatesConcurrentInstances(t *testing.T) { baseDir := t.TempDir() t.Setenv("DOUYU_DATA_DIR", baseDir) t.Setenv("DOUYU_CONFIG", "") t.Setenv("DOUYU_USERS", "") t.Setenv("DOUYU_LOG_DIR", "") t.Setenv("DOUYU_SUCCESS_DIR", "") t.Setenv("devserver", "") t.Setenv("frontenddevserverurl", "") first, err := AcquireInstancePaths() if err != nil { t.Fatal(err) } defer first.Release() if first.Name() != "默认实例" || first.Paths().DataDir != baseDir { t.Fatalf("first instance = %q, %q", first.Name(), first.Paths().DataDir) } second, err := AcquireInstancePaths() if err != nil { t.Fatal(err) } defer second.Release() wantSecondDir := filepath.Join(baseDir, "instances", "instance-2") if second.Name() != "实例 2" || second.Paths().DataDir != wantSecondDir { t.Fatalf("second instance = %q, %q", second.Name(), second.Paths().DataDir) } if second.Paths().LegacyConfigFile != "" || second.Paths().LegacyAccountFile != "" { t.Fatal("附加实例不应迁移默认实例或旧工作目录数据") } first.Release() reused, err := AcquireInstancePaths() if err != nil { t.Fatal(err) } defer reused.Release() if reused.Name() != "默认实例" || reused.Paths().DataDir != baseDir { t.Fatalf("reused instance = %q, %q", reused.Name(), reused.Paths().DataDir) } }