12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package conf
- import (
- "io/ioutil"
- "os"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/tal-tech/go-zero/core/hash"
- )
- func TestConfigJson(t *testing.T) {
- tests := []string{
- ".json",
- ".yaml",
- ".yml",
- }
- text := `{
- "a": "foo",
- "b": 1,
- "c": "${FOO}"
- }`
- for _, test := range tests {
- test := test
- t.Run(test, func(t *testing.T) {
- os.Setenv("FOO", "2")
- defer os.Unsetenv("FOO")
- tmpfile, err := createTempFile(test, text)
- assert.Nil(t, err)
- defer os.Remove(tmpfile)
- var val struct {
- A string `json:"a"`
- B int `json:"b"`
- C string `json:"c"`
- }
- MustLoad(tmpfile, &val)
- assert.Equal(t, "foo", val.A)
- assert.Equal(t, 1, val.B)
- assert.Equal(t, "2", val.C)
- })
- }
- }
- func createTempFile(ext, text string) (string, error) {
- tmpfile, err := ioutil.TempFile(os.TempDir(), hash.Md5Hex([]byte(text))+"*"+ext)
- if err != nil {
- return "", err
- }
- if err := ioutil.WriteFile(tmpfile.Name(), []byte(text), os.ModeTemporary); err != nil {
- return "", err
- }
- filename := tmpfile.Name()
- if err = tmpfile.Close(); err != nil {
- return "", err
- }
- return filename, nil
- }
|