aboutsummaryrefslogtreecommitdiff
path: root/db_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'db_test.go')
-rw-r--r--db_test.go37
1 files changed, 29 insertions, 8 deletions
diff --git a/db_test.go b/db_test.go
index 0809bcb..2063249 100644
--- a/db_test.go
+++ b/db_test.go
@@ -608,15 +608,36 @@ func withOpenDB(fn func(*DB, string)) {
// mustCheck runs a consistency check on the database and panics if any errors are found.
func mustCheck(db *DB) {
- err := db.View(func(tx *Tx) error {
- return <-tx.Check()
+ db.View(func(tx *Tx) error {
+ // Collect all the errors.
+ var errors []error
+ for err := range tx.Check() {
+ errors = append(errors, err)
+ if len(errors) > 10 {
+ break
+ }
+ }
+
+ // If errors occurred, copy the DB and print the errors.
+ if len(errors) > 0 {
+ var path = tempfile()
+ tx.CopyFile(path, 0600)
+
+ // Print errors.
+ fmt.Print("\n\n")
+ fmt.Printf("consistency check failed (%d errors)\n", len(errors))
+ for _, err := range errors {
+ fmt.Println(err)
+ }
+ fmt.Println("")
+ fmt.Println("db saved to:")
+ fmt.Println(path)
+ fmt.Print("\n\n")
+ os.Exit(-1)
+ }
+
+ return nil
})
- if err != nil {
- // Copy db off first.
- var path = tempfile()
- db.View(func(tx *Tx) error { return tx.CopyFile(path, 0600) })
- panic("check failure: " + err.Error() + ": " + path)
- }
}
// mustContainKeys checks that a bucket contains a given set of keys.