Skip to content

Commit

Permalink
Merge branch 'close-file-fix'
Browse files Browse the repository at this point in the history
  • Loading branch information
vaughan0 committed Sep 23, 2013
2 parents c54e097 + 3c405a4 commit a98ad7e
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions ini.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ func (f File) LoadFile(file string) (err error) {
if err != nil {
return
}
defer in.Close()
return f.Load(in)
}

Expand Down
43 changes: 43 additions & 0 deletions ini_linux_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ini

import (
"reflect"
"syscall"
"testing"
)

func TestLoadFile(t *testing.T) {
originalOpenFiles := numFilesOpen(t)

file, err := LoadFile("test.ini")
if err != nil {
t.Fatal(err)
}

if originalOpenFiles != numFilesOpen(t) {
t.Error("test.ini not closed")
}

if !reflect.DeepEqual(file, File{"default": {"stuff": "things"}}) {
t.Error("file not read correctly")
}
}

func numFilesOpen(t *testing.T) (num uint64) {
var rlimit syscall.Rlimit
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
if err != nil {
t.Fatal(err)
}
maxFds := int(rlimit.Cur)

var stat syscall.Stat_t
for i := 0; i < maxFds; i++ {
if syscall.Fstat(i, &stat) == nil {
num++
} else {
return
}
}
return
}
2 changes: 2 additions & 0 deletions test.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[default]
stuff = things

0 comments on commit a98ad7e

Please sign in to comment.