diff options
author | Ben Johnson <benbjohnson@yahoo.com> | 2014-02-26 16:32:05 -0700 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2014-02-26 16:32:40 -0700 |
commit | a47c50295a24c50872afc183927e34eec5c3dbdf (patch) | |
tree | b14c3f9b43c91608a85282ab11c013600633a16c | |
parent | Remove RWTransaction.Bucket(). (diff) | |
download | dedo-a47c50295a24c50872afc183927e34eec5c3dbdf.tar.gz dedo-a47c50295a24c50872afc183927e34eec5c3dbdf.tar.xz |
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.
-rw-r--r-- | bolt.go | 15 | ||||
-rw-r--r-- | db_test.go | 21 |
2 files changed, 36 insertions, 0 deletions
@@ -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 +} @@ -15,6 +15,27 @@ import ( ) // 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) { err := db.Open(path, 0666) |