aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2013-06-29 13:23:11 +0200
committerKevin Chabowski <kevin@kch42.de>2013-06-29 13:23:11 +0200
commit6b1d800927bd4505764fd56c659f211cb7bb25b5 (patch)
treed31ec20e37d475c3cc0548d59831ddb3d071a773
parentaf9b3d79b6086e7f8c8ed5bc74753a806d5cddfa (diff)
downloadsimpleconf-6b1d800927bd4505764fd56c659f211cb7bb25b5.tar.gz
simpleconf-6b1d800927bd4505764fd56c659f211cb7bb25b5.tar.bz2
simpleconf-6b1d800927bd4505764fd56c659f211cb7bb25b5.zip
Test case added; fixed error (didn't save section name. D'oh!)
-rw-r--r--simpleconf.go4
-rw-r--r--simpleconf_test.go53
2 files changed, 57 insertions, 0 deletions
diff --git a/simpleconf.go b/simpleconf.go
index 777cd53..ad13f11 100644
--- a/simpleconf.go
+++ b/simpleconf.go
@@ -45,9 +45,13 @@ func Load(r io.Reader) (config Config, outerr error) {
if len(parts[1]) != 0 {
return nil, fmt.Errorf("More data after closing ']' at line %d", l)
}
+ if len(parts[0]) == 0 {
+ return nil, fmt.Errorf("Empty section name at line %d", l)
+ }
config.addSection(section, sectName)
section = make(Section)
+ sectName = parts[0]
default:
parts := strings.SplitN(line, "=", 2)
if len(parts) != 2 {
diff --git a/simpleconf_test.go b/simpleconf_test.go
new file mode 100644
index 0000000..02e05b7
--- /dev/null
+++ b/simpleconf_test.go
@@ -0,0 +1,53 @@
+package simpleconf
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestConfig(t *testing.T) {
+ r := strings.NewReader(`; I am just a comment.
+ # Me too!
+[foo]
+ a = Hello, World!
+b=1337
+c= on
+[bar]
+trololo = 1.5
+file = /dev/zero`)
+
+ conf, err := Load(r)
+ if err != nil {
+ t.Fatalf("Could not read config: %s", err)
+ }
+
+ if s, err := conf.GetString("foo", "a"); err != nil || s != "Hello, World!" {
+ t.Errorf("Unexpected return for [foo] a: `%s`, %s", s, err)
+ }
+
+ if i, err := conf.GetInt("foo", "b"); err != nil || i != 1337 {
+ t.Errorf("Unexpected return for [foo] b: %d, %s", i, err)
+ }
+
+ if b, err := conf.GetBool("foo", "c"); err != nil || b != true {
+ t.Errorf("Unexpected return for [foo] c: %s, %s", b, err)
+ }
+
+ if f, err := conf.GetFloat("bar", "trololo"); err != nil || f != 1.5 {
+ t.Errorf("Unexpected return for [bar] trololo: %f, %s", f, err)
+ }
+
+ f, err := conf.GetFileReadonly("bar", "file")
+ if err != nil {
+ t.Fatalf("Error while reading [bar] trololo: %s", err)
+ }
+ defer f.Close()
+
+ if f.Name() != "/dev/zero" {
+ t.Errorf("Unexpected file opened: %s", f.Name())
+ }
+
+ if s, err := conf.GetStringDefault("?", "baz", "bla"); err != nil || s != "?" {
+ t.Errorf("Unexpected return for [baz] bla: `%s`, %s", s, err)
+ }
+}