From 0305c82513dec62e1bb2ca2701f675e1ed37687e Mon Sep 17 00:00:00 2001 From: Noah Campbell Date: Mon, 12 Aug 2013 09:41:41 -0700 Subject: [PATCH] Move timezone tests to integration test. Interacting with timezones will result in checks against the filesystem. This access, by definition, is an integration test. Creating a *integration_test.go file will signify this change. When interacting with Travis-ci.org, the ubuntu boxes plus go 1.1 do not seem to support shortcode timezones, think PST. In this case, the tests are skipped. This is not ideal, but the IRC #go-nuts channel has indicated timezone support is still lacking. We should advise users of hugo that timezone support may be an issue and report any odd behavior. The workaround is to use numeric timezones (-08:00 for PST, etc.) --- .travis.yml | 6 +- hugolib/page_test.go | 83 --------------------- hugolib/page_time_integration_test.go | 103 ++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 86 deletions(-) create mode 100644 hugolib/page_time_integration_test.go diff --git a/.travis.yml b/.travis.yml index 98334df4c..b1081131c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ -language: go -go: - - 1.1 +language: go +go: + - 1.1 diff --git a/hugolib/page_test.go b/hugolib/page_test.go index 3e6db411b..363ee1941 100644 --- a/hugolib/page_test.go +++ b/hugolib/page_test.go @@ -5,7 +5,6 @@ import ( "io" "strings" "testing" - "time" ) var EMPTY_PAGE = "" @@ -70,51 +69,6 @@ var SIMPLE_PAGE_JSON_COMPACT = ` Text ` -var PAGE_WITH_INVALID_DATE = `--- -date: 2010-05-02 15:29:31+08:00 ---- -Page With Invalid Date (missing the T for RFC 3339)` - -var PAGE_WITH_DATE_RFC3339 = `--- -date: 2010-05-02T15:29:31+08:00 ---- -Page With Date RFC3339` - -var PAGE_WITH_DATE_RFC1123 = `--- -date: Sun, 02 May 2010 15:29:31 PST ---- -Page With Date RFC1123` - -var PAGE_WITH_DATE_RFC1123Z = `--- -date: Sun, 02 May 2010 15:29:31 +0800 ---- -Page With Date RFC1123Z` - -var PAGE_WITH_DATE_RFC822 = `--- -date: 02 May 10 15:29 PST ---- -Page With Date RFC822` - -var PAGE_WITH_DATE_RFC822Z = `--- -date: 02 May 10 15:29 +0800 ---- -Page With Date RFC822Z` - -var PAGE_WITH_DATE_ANSIC = `--- -date: Sun May 2 15:29:31 2010 ---- -Page With Date ANSIC` - -var PAGE_WITH_DATE_UnixDate = `--- -date: Sun May 2 15:29:31 PST 2010 ---- -Page With Date UnixDate` - -var PAGE_WITH_DATE_RubyDate = `--- -date: Sun May 02 15:29:31 +0800 2010 ---- -Page With Date RubyDate` - func checkError(t *testing.T, err error, expected string) { if err == nil { t.Fatalf("err is nil") @@ -215,40 +169,3 @@ func TestDegenerateInvalidFrontMatterLeadingWhitespace(t *testing.T) { t.Fatalf("Unable to parse front matter given leading whitespace: %s", err) } } - -func TestDegenerateDateFrontMatter(t *testing.T) { - p, _ := ReadFrom(strings.NewReader(PAGE_WITH_INVALID_DATE), "page/with/invalid/date") - if p.Date != time.Unix(0, 0) { - t.Fatalf("Date should be set to computer epoch. Got: %s", p.Date) - } -} - -func TestParsingDateInFrontMatter(t *testing.T) { - - for _, test := range []struct { - buf string - dt string - }{ - {PAGE_WITH_DATE_RFC3339, "2010-05-02T15:29:31+08:00"}, - {PAGE_WITH_DATE_RFC1123, "2010-05-02T15:29:31-08:00"}, - {PAGE_WITH_DATE_RFC1123Z, "2010-05-02T15:29:31+08:00"}, - {PAGE_WITH_DATE_RFC822, "2010-05-02T15:29:00-08:00"}, - {PAGE_WITH_DATE_RFC822Z, "2010-05-02T15:29:00+08:00"}, - {PAGE_WITH_DATE_ANSIC, "2010-05-02T15:29:31Z"}, - {PAGE_WITH_DATE_UnixDate, "2010-05-02T15:29:31-08:00"}, - {PAGE_WITH_DATE_RubyDate, "2010-05-02T15:29:31+08:00"}, - } { - dt, e := time.Parse(time.RFC3339, test.dt) - if e != nil { - t.Fatalf("Unable to parse date time (RFC3339) for running the test: %s", e) - } - p, err := ReadFrom(strings.NewReader(test.buf), "page/with/date") - if err != nil { - t.Fatalf("Expected to be able to parse page.") - } - if !dt.Equal(p.Date) { - //if dt != p.Date { - t.Errorf("Date does not equal frontmatter:\n%s\nExpecting: %s\n Got: %s. Diff: %s\n internal: %#v\n %#v", test.buf, dt, p.Date, dt.Sub(p.Date), dt, p.Date) - } - } -} diff --git a/hugolib/page_time_integration_test.go b/hugolib/page_time_integration_test.go new file mode 100644 index 000000000..20844abac --- /dev/null +++ b/hugolib/page_time_integration_test.go @@ -0,0 +1,103 @@ +package hugolib + +import ( + "fmt" + "os" + "strings" + "testing" + "time" +) + +var PAGE_WITH_INVALID_DATE = `--- +date: 2010-05-02 15:29:31+08:00 +--- +Page With Invalid Date (missing the T for RFC 3339)` + +var PAGE_WITH_DATE_RFC3339 = `--- +date: 2010-05-02T15:29:31+08:00 +--- +Page With Date RFC3339` + +var PAGE_WITH_DATE_RFC1123 = `--- +date: Sun, 02 May 2010 15:29:31 PST +--- +Page With Date RFC1123` + +var PAGE_WITH_DATE_RFC1123Z = `--- +date: Sun, 02 May 2010 15:29:31 +0800 +--- +Page With Date RFC1123Z` + +var PAGE_WITH_DATE_RFC822 = `--- +date: 02 May 10 15:29 PST +--- +Page With Date RFC822` + +var PAGE_WITH_DATE_RFC822Z = `--- +date: 02 May 10 15:29 +0800 +--- +Page With Date RFC822Z` + +var PAGE_WITH_DATE_ANSIC = `--- +date: Sun May 2 15:29:31 2010 +--- +Page With Date ANSIC` + +var PAGE_WITH_DATE_UnixDate = `--- +date: Sun May 2 15:29:31 PST 2010 +--- +Page With Date UnixDate` + +var PAGE_WITH_DATE_RubyDate = `--- +date: Sun May 02 15:29:31 +0800 2010 +--- +Page With Date RubyDate` + +func TestDegenerateDateFrontMatter(t *testing.T) { + p, _ := ReadFrom(strings.NewReader(PAGE_WITH_INVALID_DATE), "page/with/invalid/date") + if p.Date != time.Unix(0, 0) { + t.Fatalf("Date should be set to computer epoch. Got: %s", p.Date) + } +} + +func TestParsingDateInFrontMatter(t *testing.T) { + tests := []struct { + buf string + dt string + }{ + {PAGE_WITH_DATE_RFC3339, "2010-05-02T15:29:31+08:00"}, + {PAGE_WITH_DATE_RFC1123Z, "2010-05-02T15:29:31+08:00"}, + {PAGE_WITH_DATE_RFC822Z, "2010-05-02T15:29:00+08:00"}, + {PAGE_WITH_DATE_ANSIC, "2010-05-02T15:29:31Z"}, + {PAGE_WITH_DATE_RubyDate, "2010-05-02T15:29:31+08:00"}, + } + + tzShortCodeTests := []struct { + buf string + dt string + }{ + {PAGE_WITH_DATE_RFC1123, "2010-05-02T15:29:31-08:00"}, + {PAGE_WITH_DATE_RFC822, "2010-05-02T15:29:00-08:00"}, + {PAGE_WITH_DATE_UnixDate, "2010-05-02T15:29:31-08:00"}, + } + + if _, err := time.LoadLocation("PST"); err == nil { + tests = append(tests, tzShortCodeTests...) + } else { + fmt.Fprintf(os.Stderr, "Skipping shortname timezone tests.\n") + } + + for _, test := range tests { + dt, e := time.Parse(time.RFC3339, test.dt) + if e != nil { + t.Fatalf("Unable to parse date time (RFC3339) for running the test: %s", e) + } + p, err := ReadFrom(strings.NewReader(test.buf), "page/with/date") + if err != nil { + t.Fatalf("Expected to be able to parse page.") + } + if !dt.Equal(p.Date) { + t.Errorf("Date does not equal frontmatter:\n%s\nExpecting: %s\n Got: %s. Diff: %s\n internal: %#v\n %#v", test.buf, dt, p.Date, dt.Sub(p.Date), dt, p.Date) + } + } +}