From a47c50295a24c50872afc183927e34eec5c3dbdf Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Wed, 26 Feb 2014 16:32:05 -0700 Subject: [PATCH] Add bolt.Open(). Per the suggestion of @tv42 and @cespare, this commit adds a package level function to create and initialize a database at a given path. This is a common interface for database packages. --- bolt.go | 15 +++++++++++++++ db_test.go | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 bolt.go diff --git a/bolt.go b/bolt.go new file mode 100644 index 0000000..bb5a2de --- /dev/null +++ b/bolt.go @@ -0,0 +1,15 @@ +package bolt + +import ( + "os" +) + +// Open creates and opens a database at the given path. +// If the file does not exist then it will be created automatically. +func Open(path string, mode os.FileMode) (*DB, error) { + db := &DB{} + if err := db.Open(path, mode); err != nil { + return nil, err + } + return db, nil +} diff --git a/db_test.go b/db_test.go index 19e10f1..59f8748 100644 --- a/db_test.go +++ b/db_test.go @@ -14,6 +14,27 @@ import ( "github.com/stretchr/testify/mock" ) +// Ensure that a database can be opened without error. +func TestOpen(t *testing.T) { + f, _ := ioutil.TempFile("", "bolt-") + path := f.Name() + f.Close() + os.Remove(path) + defer os.RemoveAll(path) + + db, err := Open(path, 0666) + assert.NoError(t, err) + assert.NotNil(t, db) + db.Close() +} + +// Ensure that opening a database with a bad path returns an error. +func TestOpenBadPath(t *testing.T) { + db, err := Open("/../bad-path", 0666) + assert.Error(t, err) + assert.Nil(t, db) +} + // Ensure that a database can be opened without error. func TestDBOpen(t *testing.T) { withDB(func(db *DB, path string) {