diff --git a/helpers/general.go b/helpers/general.go index 731452d9d..2237125d7 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -467,3 +467,27 @@ func NormalizeHugoFlags(f *pflag.FlagSet, name string) pflag.NormalizedName { } return pflag.NormalizedName(name) } + +// DiffStringSlices returns the difference between two string slices. +// Useful in tests. +// See: +// http://stackoverflow.com/questions/19374219/how-to-find-the-difference-between-two-slices-of-strings-in-golang +func DiffStringSlices(slice1 []string, slice2 []string) []string { + diffStr := []string{} + m := map[string]int{} + + for _, s1Val := range slice1 { + m[s1Val] = 1 + } + for _, s2Val := range slice2 { + m[s2Val] = m[s2Val] + 1 + } + + for mKey, mVal := range m { + if mVal == 1 { + diffStr = append(diffStr, mKey) + } + } + + return diffStr +} diff --git a/hugolib/site_show_plan_test.go b/hugolib/site_show_plan_test.go index 48edf563a..4f1d8c4dd 100644 --- a/hugolib/site_show_plan_test.go +++ b/hugolib/site_show_plan_test.go @@ -57,7 +57,7 @@ func checkShowPlanExpected(t *testing.T, s *Site, expected string) { gotList := strings.Split(got, "\n") expectedList := strings.Split(expected, "\n") - diff := DiffStringSlices(gotList, expectedList) + diff := helpers.DiffStringSlices(gotList, expectedList) if len(diff) > 0 { t.Errorf("Got diff in show plan: %s", diff) @@ -146,26 +146,3 @@ func TestFileTargetPublishDir(t *testing.T) { "section/somecontent.html (renderer: n/a)\n canonical => ../public/section/somecontent/index.html\n\n" checkShowPlanExpected(t, s, expected) } - -// DiffStringSlices returns the difference between two string slices. -// See: -// http://stackoverflow.com/questions/19374219/how-to-find-the-difference-between-two-slices-of-strings-in-golang -func DiffStringSlices(slice1 []string, slice2 []string) []string { - diffStr := []string{} - m := map[string]int{} - - for _, s1Val := range slice1 { - m[s1Val] = 1 - } - for _, s2Val := range slice2 { - m[s2Val] = m[s2Val] + 1 - } - - for mKey, mVal := range m { - if mVal == 1 { - diffStr = append(diffStr, mKey) - } - } - - return diffStr -} diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index 6246bba0b..1a94adfc3 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -28,6 +28,8 @@ import ( "testing" "time" + "github.com/spf13/hugo/helpers" + "github.com/spf13/afero" "github.com/spf13/cast" "github.com/spf13/hugo/hugofs" @@ -136,7 +138,7 @@ sub: {{sub 3 2}} substr: {{substr "BatMan" 0 -3}} substr: {{substr "BatMan" 3 3}} title: {{title "Bat man"}} -time: {{ time "2015-01-21" }} +time: {{ (time "2015-01-21").Year }} trim: {{ trim "++Batman--" "+-" }} upper: {{upper "BatMan"}} urlize: {{ "Bat Man" | urlize }} @@ -200,7 +202,7 @@ sub: 1 substr: Bat substr: Man title: Bat Man -time: 2015-01-21T00:00:00Z +time: 2015 trim: Batman upper: BATMAN urlize: bat-man @@ -229,7 +231,9 @@ urlize: bat-man } if b.String() != expected { - t.Errorf("Got\n%q\nExpected\n%q", b.String(), expected) + sl1 := strings.Split(b.String(), "\n") + sl2 := strings.Split(expected, "\n") + t.Errorf("Diff:\n%q", helpers.DiffStringSlices(sl1, sl2)) } }