github.com/lingyao2333/mo-zero@v1.4.1/core/conf/properties_test.go (about) 1 package conf 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/lingyao2333/mo-zero/core/fs" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestProperties(t *testing.T) { 12 text := `app.name = test 13 14 app.program=app 15 16 # this is comment 17 app.threads = 5` 18 tmpfile, err := fs.TempFilenameWithText(text) 19 assert.Nil(t, err) 20 defer os.Remove(tmpfile) 21 22 props, err := LoadProperties(tmpfile) 23 assert.Nil(t, err) 24 assert.Equal(t, "test", props.GetString("app.name")) 25 assert.Equal(t, "app", props.GetString("app.program")) 26 assert.Equal(t, 5, props.GetInt("app.threads")) 27 28 val := props.ToString() 29 assert.Contains(t, val, "app.name") 30 assert.Contains(t, val, "app.program") 31 assert.Contains(t, val, "app.threads") 32 } 33 34 func TestPropertiesEnv(t *testing.T) { 35 text := `app.name = test 36 37 app.program=app 38 39 app.env1 = ${FOO} 40 app.env2 = $none 41 42 # this is comment 43 app.threads = 5` 44 tmpfile, err := fs.TempFilenameWithText(text) 45 assert.Nil(t, err) 46 defer os.Remove(tmpfile) 47 48 os.Setenv("FOO", "2") 49 defer os.Unsetenv("FOO") 50 51 props, err := LoadProperties(tmpfile, UseEnv()) 52 assert.Nil(t, err) 53 assert.Equal(t, "test", props.GetString("app.name")) 54 assert.Equal(t, "app", props.GetString("app.program")) 55 assert.Equal(t, 5, props.GetInt("app.threads")) 56 assert.Equal(t, "2", props.GetString("app.env1")) 57 assert.Equal(t, "", props.GetString("app.env2")) 58 59 val := props.ToString() 60 assert.Contains(t, val, "app.name") 61 assert.Contains(t, val, "app.program") 62 assert.Contains(t, val, "app.threads") 63 assert.Contains(t, val, "app.env1") 64 assert.Contains(t, val, "app.env2") 65 } 66 67 func TestLoadProperties_badContent(t *testing.T) { 68 filename, err := fs.TempFilenameWithText("hello") 69 assert.Nil(t, err) 70 defer os.Remove(filename) 71 _, err = LoadProperties(filename) 72 assert.NotNil(t, err) 73 assert.True(t, len(err.Error()) > 0) 74 } 75 76 func TestSetString(t *testing.T) { 77 key := "a" 78 value := "the value of a" 79 props := NewProperties() 80 props.SetString(key, value) 81 assert.Equal(t, value, props.GetString(key)) 82 } 83 84 func TestSetInt(t *testing.T) { 85 key := "a" 86 value := 101 87 props := NewProperties() 88 props.SetInt(key, value) 89 assert.Equal(t, value, props.GetInt(key)) 90 } 91 92 func TestLoadBadFile(t *testing.T) { 93 _, err := LoadProperties("nosuchfile") 94 assert.NotNil(t, err) 95 }