github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/directory/backend_bolt_test.go (about) 1 package directory 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/boltdb/bolt" 9 ) 10 11 func TestBoltBackend(t *testing.T) { 12 td, err := ioutil.TempDir("", "otto") 13 if err != nil { 14 t.Fatalf("err: %s", err) 15 } 16 defer os.RemoveAll(td) 17 18 TestBackend(t, &BoltBackend{ 19 Dir: td, 20 }) 21 } 22 23 func TestBoltBackend_version(t *testing.T) { 24 td, err := ioutil.TempDir("", "otto") 25 if err != nil { 26 t.Fatalf("err: %s", err) 27 } 28 defer os.RemoveAll(td) 29 30 // Grab the DB and manually insert a version (breaking a black box here) 31 b := &BoltBackend{Dir: td} 32 db, err := b.db() 33 if err != nil { 34 t.Fatalf("err: %s", err) 35 } 36 err = db.Update(func(tx *bolt.Tx) error { 37 b := tx.Bucket(boltOttoBucket) 38 return b.Put([]byte("version"), []byte{boltDataVersion + 1}) 39 }) 40 db.Close() 41 if err != nil { 42 t.Fatalf("err: %s", err) 43 } 44 45 // Re-instantiate and try an operation, it should fail 46 b = &BoltBackend{Dir: td} 47 db, err = b.db() 48 if err == nil { 49 db.Close() 50 t.Fatal("should error") 51 } 52 }