diff --git a/cmd/config.go b/cmd/config.go index 21ab5dd..823dd32 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -2,10 +2,9 @@ package cmd import ( "fmt" - "io/ioutil" "os" - "github.com/naoina/toml" + "github.com/BurntSushi/toml" "github.com/FreifunkBremen/yanic/database" "github.com/FreifunkBremen/yanic/respond" @@ -40,12 +39,13 @@ func loadConfig() *Config { func ReadConfigFile(path string) (config *Config, err error) { config = &Config{} - file, err := ioutil.ReadFile(path) + file, err := os.Open(path) if err != nil { return nil, err } + defer file.Close() - err = toml.Unmarshal(file, config) + _, err = toml.NewDecoder(file).Decode(config) if err != nil { return nil, err } diff --git a/cmd/config_test.go b/cmd/config_test.go index f21db98..550dafd 100644 --- a/cmd/config_test.go +++ b/cmd/config_test.go @@ -5,14 +5,16 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestReadConfig(t *testing.T) { assert := assert.New(t) + require := require.New(t) config, err := ReadConfigFile("../config_example.toml") - assert.NoError(err) - assert.NotNil(config) + require.NoError(err) + require.NotNil(config) assert.True(config.Respondd.Enable) assert.Equal("br-ffhb", config.Respondd.Interfaces[0].InterfaceName) @@ -26,7 +28,7 @@ func TestReadConfig(t *testing.T) { // Test output plugins assert.Len(config.Nodes.Output, 5) - outputs := config.Nodes.Output["meshviewer"].([]interface{}) + outputs := config.Nodes.Output["meshviewer"].([]map[string]interface{}) assert.Len(outputs, 1) meshviewer := outputs[0] @@ -41,10 +43,8 @@ func TestReadConfig(t *testing.T) { }, meshviewer) _, err = ReadConfigFile("testdata/config_invalid.toml") - assert.Error(err, "not unmarshalable") - assert.Contains(err.Error(), "invalid TOML syntax") + assert.EqualError(err, "toml: line 2: expected '.' or '=', but got '\\n' instead") _, err = ReadConfigFile("testdata/adsa.toml") - assert.Error(err, "not found able") - assert.Contains(err.Error(), "no such file or directory") + assert.EqualError(err, "open testdata/adsa.toml: no such file or directory") } diff --git a/go.mod b/go.mod index 2f0a910..58f3a58 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module github.com/FreifunkBremen/yanic go 1.17 require ( + github.com/BurntSushi/toml v1.0.0 github.com/NYTimes/gziphandler v1.1.1 github.com/bdlm/log v0.1.20 github.com/bdlm/std v1.0.1 github.com/fgrosse/graphigo v0.0.0-20151222101953-5770fe631d9a github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c - github.com/naoina/toml v0.1.1 github.com/paulmach/go.geojson v1.4.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.4.0 @@ -20,8 +20,6 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect - github.com/naoina/go-stringutil v0.1.0 // indirect github.com/onsi/ginkgo v1.16.5 // indirect github.com/onsi/gomega v1.19.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/go.sum b/go.sum index 0e884a8..cdda3d2 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= +github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/bdlm/log v0.1.20 h1:fSxBuBSHz+DkxPSFlaVcPiep20mCYUJZ5azUynkjhfA= @@ -37,12 +39,6 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c h1:qSHzRbhzK8RdXOsAdfDgO49TtqC1oZ+acxPrkfTxcCs= github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= -github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=