packagehugolibimport("bytes""fmt""image/jpeg""io""math/rand""os""path/filepath""regexp""runtime""sort""strconv""strings""testing""text/template""time""unicode/utf8""github.com/gohugoio/hugo/htesting""github.com/gohugoio/hugo/output""github.com/gohugoio/hugo/parser/metadecoders""github.com/google/go-cmp/cmp""github.com/gohugoio/hugo/parser""github.com/pkg/errors""github.com/fsnotify/fsnotify""github.com/gohugoio/hugo/common/herrors""github.com/gohugoio/hugo/common/maps""github.com/gohugoio/hugo/config""github.com/gohugoio/hugo/deps""github.com/gohugoio/hugo/resources/page""github.com/sanity-io/litter""github.com/spf13/afero""github.com/spf13/cast""github.com/gohugoio/hugo/helpers""github.com/gohugoio/hugo/tpl""github.com/gohugoio/hugo/resources/resource"qt"github.com/frankban/quicktest""github.com/gohugoio/hugo/common/loggers""github.com/gohugoio/hugo/hugofs")var(deepEqualsPages=qt.CmpEquals(cmp.Comparer(func(p1,p2*pageState)bool{returnp1==p2}))deepEqualsOutputFormats=qt.CmpEquals(cmp.Comparer(func(o1,o2output.Format)bool{returno1.Name==o2.Name&&o1.MediaType.Type()==o2.MediaType.Type()})))typesitesBuilderstruct{Cfgconfig.Providerenviron[]stringFs*hugofs.FsTtesting.TBdepsCfgdeps.DepsCfg*qt.Cloggerloggers.Loggerrnd*rand.Randdumperlitter.Options// Used to test partial rebuilds.changedFiles[]stringremovedFiles[]string// Aka the Hugo server mode.runningboolH*HugoSitesthemestring// Default toml<