hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit e73f7a770dfb06f23d842d589bdd3d0fb53c7eed
parent 3ddffd064dbacf62aa854b26ea8ddc5d15ba1ef8
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue, 20 Apr 2021 12:05:25 +0200

Regression in media type suffix lookup

Introduced in Hugo 0.82.0.

Fixes #8406

Diffstat:
Mmedia/mediaType.go | 2+-
Mmedia/mediaType_test.go | 28+++++++++++++++++++++++-----
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/media/mediaType.go b/media/mediaType.go
@@ -305,7 +305,7 @@ func (t Types) GetBySuffix(suffix string) (tp Type, si SuffixInfo, found bool) {
 }
 
 func (m Type) hasSuffix(suffix string) bool {
-	return strings.Contains(m.suffixesCSV, suffix)
+	return strings.Contains(","+m.suffixesCSV+",", ","+suffix+",")
 }
 
 // GetByMainSubType gets a media type given a main and a sub type e.g. "text" and "plain".
diff --git a/media/mediaType_test.go b/media/mediaType_test.go
@@ -15,6 +15,7 @@ package media
 
 import (
 	"encoding/json"
+	"sort"
 	"testing"
 
 	qt "github.com/frankban/quicktest"
@@ -98,11 +99,28 @@ func TestBySuffix(t *testing.T) {
 
 func TestGetFirstBySuffix(t *testing.T) {
 	c := qt.New(t)
-	_, f, found := DefaultTypes.GetFirstBySuffix("xml")
-	c.Assert(found, qt.Equals, true)
-	c.Assert(f, qt.Equals, SuffixInfo{
-		Suffix:     "xml",
-		FullSuffix: ".xml"})
+
+	types := DefaultTypes
+
+	// Issue #8406
+	geoJSON := newMediaTypeWithMimeSuffix("application", "geo", "json", []string{"geojson", "gjson"})
+	types = append(types, geoJSON)
+	sort.Sort(types)
+
+	check := func(suffix string, expectedType Type) {
+		t, f, found := types.GetFirstBySuffix(suffix)
+		c.Assert(found, qt.Equals, true)
+		c.Assert(f, qt.Equals, SuffixInfo{
+			Suffix:     suffix,
+			FullSuffix: "." + suffix})
+		c.Assert(t, qt.Equals, expectedType)
+	}
+
+	check("js", JavascriptType)
+	check("json", JSONType)
+	check("geojson", geoJSON)
+	check("gjson", geoJSON)
+
 }
 
 func TestFromTypeString(t *testing.T) {