package timezone import ( "crypto/sha256" "fmt" "testing" "time" ) func TestFrozenSnapshot(t *testing.T) { if got := fmt.Sprintf("%x", sha256.Sum256(data)); got != "b2d18a7c8fa8142097a48c99609fb3c92db5ee98bc740294e57eab8ae9f94779" { t.Fatal("snapshot changed without a new version") } t.Setenv("ZONEINFO", t.TempDir()) for _, name := range []string{"UTC", "Asia/Shanghai", "America/New_York", "Australia/Lord_Howe", "Pacific/Apia"} { zone, err := Load(name, Version) if err != nil || zone == nil { t.Fatalf("load %s: %v", name, err) } again, err := Load(name, Version) if err != nil || again != zone { t.Fatal("cache changed") } } zone, _ := Load("Asia/Shanghai", Version) _, offset := time.Date(2026, 1, 1, 0, 0, 0, 0, zone).Zone() if offset != 8*3600 { t.Fatal("wrong frozen zone") } for _, name := range []string{"", "Local", "../UTC", "/etc/localtime"} { if _, err := Load(name, Version); err == nil { t.Fatal("accepted external timezone") } } if _, err := Load("UTC", "unavailable-version"); err == nil { t.Fatal("silently upgraded frozen version") } }