Regression in media type suffix lookup

Introduced in Hugo 0.82.0.

Fixes #8406
This commit is contained in:
Bjørn Erik Pedersen 2021-04-20 12:05:25 +02:00
parent 3ddffd064d
commit e73f7a770d
2 changed files with 24 additions and 6 deletions

View file

@ -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".

View file

@ -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")
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: "xml",
FullSuffix: ".xml"})
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) {