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  }