package main_test import ( "fmt" "io/ioutil" "os" "path/filepath" "reflect" "runtime" "strings" "testing" "github.com/boltdb/bolt" . "github.com/boltdb/bolt/cmd/bolt" ) // open creates and opens a Bolt database in the temp directory. func open(fn func(*bolt.DB, string)) { path := tempfile() defer os.RemoveAll(path) db, err := bolt.Open(path, 0600, nil) if err != nil { panic("db open error: " + err.Error()) } fn(db, path) } // run executes a command against the CLI and returns the output. func run(args ...string) string { args = append([]string{"bolt"}, args...) NewApp().Run(args) return strings.TrimSpace(LogBuffer()) } // tempfile returns a temporary file path. func tempfile() string { f, _ := ioutil.TempFile("", "bolt-") f.Close() os.Remove(f.Name()) return f.Name() } // assert fails the test if the condition is false. func assert(tb testing.TB, condition bool, msg string, v ...interface{}) { if !condition { _, file, line, _ := runtime.Caller(1) fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...) tb.FailNow() } } // ok fails the test if an err is not nil. func ok(tb testing.TB, err error) { if err != nil { _, file, line, _ := runtime.Caller(1) fmt.Printf("\033[31m%s:%d: unexpected error: %s\033[39m\n\n", filepath.Base(file), line, err.Error()) tb.FailNow() } } // equals fails the test if exp is not equal to act. func equals(tb testing.TB, exp, act interface{}) { if !reflect.DeepEqual(exp, act) { _, file, line, _ := runtime.Caller(1) fmt.Printf("\033[31m%s:%d:\n\n\texp: %#v\n\n\tgot: %#v\033[39m\n\n", filepath.Base(file), line, exp, act) tb.FailNow() } }