func (s *S) TestForceInt(c *gc.C) { sch := schema.ForceInt() out, err := sch.Coerce(42, aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce("42", aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce("42.66", aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce(int8(42), aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce(float32(42), aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce(float64(42), aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) out, err = sch.Coerce(42.66, aPath) c.Assert(err, gc.IsNil) c.Assert(out, gc.Equals, int(42)) // If an out of range value is provided, that value is truncated, // generating unexpected results, but no error is raised. out, err = sch.Coerce(float64(math.MaxInt64+1), aPath) c.Assert(err, gc.IsNil) out, err = sch.Coerce(true, aPath) c.Assert(out, gc.IsNil) c.Assert(err, gc.ErrorMatches, `<path>: expected number, got bool\(true\)`) out, err = sch.Coerce(nil, aPath) c.Assert(out, gc.IsNil) c.Assert(err, gc.ErrorMatches, "<path>: expected number, got nothing") }
import ( "fmt" "github.com/wallyworld/core/environs/config" "github.com/wallyworld/core/schema" ) const defaultStoragePort = 8040 var ( configFields = schema.Fields{ "bootstrap-host": schema.String(), "bootstrap-user": schema.String(), "storage-listen-ip": schema.String(), "storage-port": schema.ForceInt(), "storage-auth-key": schema.String(), "use-sshstorage": schema.Bool(), } configDefaults = schema.Defaults{ "bootstrap-user": "", "storage-listen-ip": "", "storage-port": defaultStoragePort, "use-sshstorage": true, } ) type environConfig struct { *config.Config attrs map[string]interface{} }
"default-series": schema.String(), "tools-metadata-url": schema.String(), "image-metadata-url": schema.String(), "image-stream": schema.String(), "authorized-keys": schema.String(), "authorized-keys-path": schema.String(), "firewall-mode": schema.String(), "agent-version": schema.String(), "development": schema.Bool(), "admin-secret": schema.String(), "ca-cert": schema.String(), "ca-cert-path": schema.String(), "ca-private-key": schema.String(), "ca-private-key-path": schema.String(), "ssl-hostname-verification": schema.Bool(), "state-port": schema.ForceInt(), "api-port": schema.ForceInt(), "syslog-port": schema.ForceInt(), "rsyslog-ca-cert": schema.String(), "logging-config": schema.String(), "charm-store-auth": schema.String(), "provisioner-safe-mode": schema.Bool(), "http-proxy": schema.String(), "https-proxy": schema.String(), "ftp-proxy": schema.String(), "no-proxy": schema.String(), "apt-http-proxy": schema.String(), "apt-https-proxy": schema.String(), "apt-ftp-proxy": schema.String(), "bootstrap-timeout": schema.ForceInt(), "bootstrap-retry-delay": schema.ForceInt(),