hugolib: Fix timeout number parsing for YAML/JSON config
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 29 Nov 2019 09:50:36 +0000 (10:50 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 29 Nov 2019 09:50:36 +0000 (10:50 +0100)
Where numbers are all floats.

Fixes #6555

hugolib/image_test.go
hugolib/site.go

index 315da6b78bcf68b9f3fc5255671605c943cc893d..cd7ec7a7e1d516f7b93af556696ae6545b65d04e 100644 (file)
@@ -36,7 +36,7 @@ func TestImageOps(t *testing.T) {
        c.Assert(err, qt.IsNil)
        defer clean()
 
-       newBuilder := func(timeout string) *sitesBuilder {
+       newBuilder := func(timeout interface{}) *sitesBuilder {
 
                v := viper.New()
                v.Set("workingDir", workDir)
@@ -152,7 +152,7 @@ IMG SHORTCODE: /images/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_129x239_r
                c.Assert(err, qt.Not(qt.IsNil))
        }
 
-       b = newBuilder("30s")
+       b = newBuilder(29000)
        b.Build(BuildCfg{})
 
        assertImages()
index 69e745e6120056571660904e5701cbe257928ba4..1df7d6076db92e8e6b68abc7a37193b2bb1784c2 100644 (file)
@@ -413,11 +413,11 @@ func newSite(cfg deps.DepsCfg) (*Site, error) {
 
        timeout := 30 * time.Second
        if cfg.Language.IsSet("timeout") {
-               switch v := cfg.Language.Get("timeout").(type) {
-               case int64:
-                       timeout = time.Duration(v) * time.Millisecond
-               case string:
-                       d, err := time.ParseDuration(v)
+               v := cfg.Language.Get("timeout")
+               if n := cast.ToInt(v); n > 0 {
+                       timeout = time.Duration(n) * time.Millisecond
+               } else {
+                       d, err := time.ParseDuration(cast.ToString(v))
                        if err == nil {
                                timeout = d
                        }