Ensure that deleting a bucket causes nested buckets to be deleted after they have been committed.
(t *testing.T)
| 651 | |
| 652 | // Ensure that deleting a bucket causes nested buckets to be deleted after they have been committed. |
| 653 | func TestBucket_DeleteBucket_Nested2(t *testing.T) { |
| 654 | db := btesting.MustCreateDB(t) |
| 655 | |
| 656 | if err := db.Update(func(tx *bolt.Tx) error { |
| 657 | widgets, err := tx.CreateBucket([]byte("widgets")) |
| 658 | if err != nil { |
| 659 | t.Fatal(err) |
| 660 | } |
| 661 | |
| 662 | foo, err := widgets.CreateBucket([]byte("foo")) |
| 663 | if err != nil { |
| 664 | t.Fatal(err) |
| 665 | } |
| 666 | |
| 667 | bar, err := foo.CreateBucket([]byte("bar")) |
| 668 | if err != nil { |
| 669 | t.Fatal(err) |
| 670 | } |
| 671 | |
| 672 | if err := bar.Put([]byte("baz"), []byte("bat")); err != nil { |
| 673 | t.Fatal(err) |
| 674 | } |
| 675 | return nil |
| 676 | }); err != nil { |
| 677 | t.Fatal(err) |
| 678 | } |
| 679 | |
| 680 | if err := db.Update(func(tx *bolt.Tx) error { |
| 681 | widgets := tx.Bucket([]byte("widgets")) |
| 682 | if widgets == nil { |
| 683 | t.Fatal("expected widgets bucket") |
| 684 | } |
| 685 | |
| 686 | foo := widgets.Bucket([]byte("foo")) |
| 687 | if foo == nil { |
| 688 | t.Fatal("expected foo bucket") |
| 689 | } |
| 690 | |
| 691 | bar := foo.Bucket([]byte("bar")) |
| 692 | if bar == nil { |
| 693 | t.Fatal("expected bar bucket") |
| 694 | } |
| 695 | |
| 696 | if v := bar.Get([]byte("baz")); !bytes.Equal(v, []byte("bat")) { |
| 697 | t.Fatalf("unexpected value: %v", v) |
| 698 | } |
| 699 | if err := tx.DeleteBucket([]byte("widgets")); err != nil { |
| 700 | t.Fatal(err) |
| 701 | } |
| 702 | return nil |
| 703 | }); err != nil { |
| 704 | t.Fatal(err) |
| 705 | } |
| 706 | |
| 707 | if err := db.View(func(tx *bolt.Tx) error { |
| 708 | if tx.Bucket([]byte("widgets")) != nil { |
| 709 | t.Fatal("expected bucket to be deleted") |
| 710 | } |
nothing calls this directly
no test coverage detected