b.Assert(b.CheckExists("public/page/1/index.json"), qt.Equals, false)
b.AssertFileContent("public/page/2/index.json", `JSON: 22: |/p11/index.json|/p12/index.json`)
}
+
+// Issue 10802
+func TestPaginatorEmptyPageGroups(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- config.toml --
+baseURL = "https://example.com/"
+-- content/p1.md --
+-- content/p2.md --
+-- layouts/index.html --
+{{ $empty := site.RegularPages | complement site.RegularPages }}
+Len: {{ len $empty }}: Type: {{ printf "%T" $empty }}
+{{ $pgs := $empty.GroupByPublishDate "January 2006" }}
+{{ $pag := .Paginate $pgs }}
+Len Pag: {{ len $pag.Pages }}
+`
+ b := NewIntegrationTestBuilder(
+ IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ ).Build()
+
+ b.AssertFileContent("public/index.html", "Len: 0", "Len Pag: 0")
+}
}
// ToPagesGroup tries to convert seq into a PagesGroup.
-func ToPagesGroup(seq any) (PagesGroup, error) {
+func ToPagesGroup(seq any) (PagesGroup, bool, error) {
switch v := seq.(type) {
case nil:
- return nil, nil
+ return nil, true, nil
case PagesGroup:
- return v, nil
+ return v, true, nil
case []PageGroup:
- return PagesGroup(v), nil
+ return PagesGroup(v), true, nil
case []any:
l := len(v)
if l == 0 {
if pg, ok := ipg.(PageGroup); ok {
pagesGroup[i] = pg
} else {
- return nil, fmt.Errorf("unsupported type in paginate from slice, got %T instead of PageGroup", ipg)
+ return nil, false, fmt.Errorf("unsupported type in paginate from slice, got %T instead of PageGroup", ipg)
}
}
- return pagesGroup, nil
+ return pagesGroup, true, nil
}
}
- return nil, nil
+ return nil, false, nil
}
var paginator *Paginator
- groups, err := ToPagesGroup(seq)
+ groups, ok, err := ToPagesGroup(seq)
if err != nil {
return nil, err
}
- if groups != nil {
+ if ok {
paginator, _ = newPaginatorFromPageGroups(groups, pagerSize, urlFactory)
} else {
pages, err := ToPages(seq)