metrics: Fix divide by zero error

Under certain conditions, `howSimilarString` could reach a divide-by-
zero situation which causes bogus values to print in the cache potential
column of the template hints output.  This situation essentially causes
a `int(math.NaN())` value to be returned and hilarity ensues thereafter.
This commit is contained in:
Cameron Moore 2022-05-25 21:14:37 -05:00 committed by Bjørn Erik Pedersen
parent 805b21555e
commit 6a5acd753a
2 changed files with 5 additions and 0 deletions

View file

@ -281,6 +281,10 @@ func howSimilarStrings(a, b string) int {
}
}
if common == 0 && common == len(af) {
return 100
}
return int(math.Floor((float64(common) / float64(len(af)) * 100)))
}

View file

@ -43,6 +43,7 @@ func TestSimilarPercentage(t *testing.T) {
c.Assert(howSimilar(template.HTML("Hugo Rules"), template.HTML("Hugo Rules")), qt.Equals, 100)
c.Assert(howSimilar(map[string]any{"a": 32, "b": 33}, map[string]any{"a": 32, "b": 33}), qt.Equals, 100)
c.Assert(howSimilar(map[string]any{"a": 32, "b": 33}, map[string]any{"a": 32, "b": 34}), qt.Equals, 0)
c.Assert(howSimilar("\n", ""), qt.Equals, 100)
}
type testStruct struct {