103 lines
2.3 KiB
Go
103 lines
2.3 KiB
Go
package env
|
|
|
|
import (
|
|
"testing"
|
|
"os"
|
|
"time"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
type config struct {
|
|
App string
|
|
Port int `default:"8000"`
|
|
IsDebug bool `env:"DEBUG"`
|
|
Hosts []string `slice_sep:","`
|
|
Timeout time.Duration
|
|
|
|
Redis struct {
|
|
Version string `sep:""` // no sep between `CONFIG` and `REDIS`
|
|
Host string
|
|
Port int
|
|
}
|
|
|
|
MySQL struct {
|
|
Version string `default:"5.7"`
|
|
Host string
|
|
Port int
|
|
}
|
|
}
|
|
func TestGeneralEnv(t *testing.T) {
|
|
os.Setenv("CONFIG_APP", "ENV APP")
|
|
// os.Setenv("CONFIG_PORT", "default") // default value
|
|
os.Setenv("CONFIG_DEBUG", "1")
|
|
os.Setenv("CONFIG_HOSTS", "192.168.0.1,127.0.0.1")
|
|
os.Setenv("CONFIG_TIMEOUT", "5s")
|
|
|
|
os.Setenv("CONFIG_REDISVERSION", "3.2")
|
|
os.Setenv("CONFIG_REDIS_HOST", "rdb")
|
|
os.Setenv("CONFIG_REDIS_PORT", "6379")
|
|
|
|
os.Setenv("CONFIG_MYSQL_HOST", "mysqldb")
|
|
os.Setenv("CONFIG_MYSQL_PORT", "3306")
|
|
|
|
defer os.Clearenv()
|
|
|
|
cfg := new(config)
|
|
err := Fill(cfg)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert.Equal(cfg.App, "ENV APP")
|
|
assert.Equal(cfg.Port, 8000)
|
|
assert.Equal(cfg.IsDebug, true)
|
|
assert.Equal(cfg.Hosts, []string{"192.168.0.1", "127.0.0.1"})
|
|
assert.Equal(cfg.Timeout, 5*time.Second)
|
|
assert.Equal(cfg.Redis.Version, "3.2")
|
|
assert.Equal(cfg.Redis.Host, "rdb")
|
|
assert.Equal(cfg.MySQL.Version, "5.7")
|
|
assert.Equal(cfg.MySQL.Host, "mysqldb")
|
|
assert.Equal(cfg.MySQL.Port, 3306)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNoPrefixEnv(t *testing.T) {
|
|
os.Setenv("APP", "ENV_APP")
|
|
// os.Setenv("PORT", "default") // default value
|
|
os.Setenv("DEBUG", "1")
|
|
os.Setenv("HOSTS", "192.168.1.1,127.0.0.1")
|
|
os.Setenv("TIMEOUT", "5s")
|
|
|
|
os.Setenv("REDISVERSION", "3.2")
|
|
os.Setenv("REDIS_HOST", "rdb")
|
|
os.Setenv("REDIS_PORT", "6379")
|
|
|
|
os.Setenv("MYSQL_HOST", "mysqldb")
|
|
os.Setenv("MYSQL_PORT", "3306")
|
|
|
|
defer os.Clearenv()
|
|
|
|
cfg := new(config)
|
|
IgnorePrefix()
|
|
err := Fill(cfg)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert.Equal(cfg.App, "ENV_APP")
|
|
assert.Equal(cfg.Port, 8000)
|
|
assert.Equal(cfg.IsDebug, true)
|
|
assert.Equal(cfg.Hosts, []string{"192.168.1.1", "127.0.0.1"})
|
|
assert.Equal(cfg.Timeout, 5*time.Second)
|
|
assert.Equal(cfg.Redis.Version, "3.2")
|
|
assert.Equal(cfg.Redis.Host, "rdb")
|
|
assert.Equal(cfg.MySQL.Version, "5.7")
|
|
assert.Equal(cfg.MySQL.Host, "mysqldb")
|
|
assert.Equal(cfg.MySQL.Port, 3306)
|
|
|
|
} |