Commit 5e701405 authored by Alberto Donizetti's avatar Alberto Donizetti Committed by Brad Fitzpatrick

time: removed from tests now obsolete assumption about Australian tz abbreviations

Australian timezones abbreviation for standard and daylight saving time were recently
changed from EST for both to AEST and AEDT in the icann tz database (see changelog
on www.iana.org/time-zones).

A test in the time package was written to check that the ParseInLocation function
understand that Feb EST and Aug EST are different time zones, even though they are
both called EST. This is no longer the case, and the Date function now returns
AEST or AEDT for australian tz on every Linux system with an up to date tz database
(and this makes the test fail).

Since I wasn't able to find another country that 1) uses daylight saving and 2) has
the same abbreviation for both on tzdata, I changed the test to make sure that
ParseInLocation does not get confused when it parses, in different locations, two
dates with the same abbreviation (this was suggested in the mailing list).

Fixes #8547.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/130920043
parent b9cd8f08
...@@ -183,39 +183,45 @@ func TestParse(t *testing.T) { ...@@ -183,39 +183,45 @@ func TestParse(t *testing.T) {
} }
} }
func TestParseInSydney(t *testing.T) { func TestParseInLocation(t *testing.T) {
loc, err := LoadLocation("Australia/Sydney") // Check that Parse (and ParseInLocation) understand that
// Feb 01 AST (Arabia Standard Time) and Feb 01 AST (Atlantic Standard Time)
// are in different time zones even though both are called AST
baghdad, err := LoadLocation("Asia/Baghdad")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// Check that Parse (and ParseInLocation) understand t1, err := ParseInLocation("Jan 02 2006 MST", "Feb 01 2013 AST", baghdad)
// that Feb EST and Aug EST are different time zones in Sydney
// even though both are called EST.
t1, err := ParseInLocation("Jan 02 2006 MST", "Feb 01 2013 EST", loc)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
t2 := Date(2013, February, 1, 00, 00, 00, 0, loc) t2 := Date(2013, February, 1, 00, 00, 00, 0, baghdad)
if t1 != t2 { if t1 != t2 {
t.Fatalf("ParseInLocation(Feb 01 2013 EST, Sydney) = %v, want %v", t1, t2) t.Fatalf("ParseInLocation(Feb 01 2013 AST, Baghdad) = %v, want %v", t1, t2)
} }
_, offset := t1.Zone() _, offset := t1.Zone()
if offset != 11*60*60 { if offset != 3*60*60 {
t.Fatalf("ParseInLocation(Feb 01 2013 EST, Sydney).Zone = _, %d, want _, %d", offset, 11*60*60) t.Fatalf("ParseInLocation(Feb 01 2013 AST, Baghdad).Zone = _, %d, want _, %d", offset, 3*60*60)
}
blancSablon, err := LoadLocation("America/Blanc-Sablon")
if err != nil {
t.Fatal(err)
} }
t1, err = ParseInLocation("Jan 02 2006 MST", "Aug 01 2013 EST", loc) t1, err = ParseInLocation("Jan 02 2006 MST", "Feb 01 2013 AST", blancSablon)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
t2 = Date(2013, August, 1, 00, 00, 00, 0, loc) t2 = Date(2013, February, 1, 00, 00, 00, 0, blancSablon)
if t1 != t2 { if t1 != t2 {
t.Fatalf("ParseInLocation(Aug 01 2013 EST, Sydney) = %v, want %v", t1, t2) t.Fatalf("ParseInLocation(Feb 01 2013 AST, Blanc-Sablon) = %v, want %v", t1, t2)
} }
_, offset = t1.Zone() _, offset = t1.Zone()
if offset != 10*60*60 { if offset != -4*60*60 {
t.Fatalf("ParseInLocation(Aug 01 2013 EST, Sydney).Zone = _, %d, want _, %d", offset, 10*60*60) t.Fatalf("ParseInLocation(Feb 01 2013 AST, Blanc-Sablon).Zone = _, %d, want _, %d", offset, -4*60*60)
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment