summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--objectstore/memory_backend.go5
-rw-r--r--objectstore/memory_backend_test.go10
2 files changed, 15 insertions, 0 deletions
diff --git a/objectstore/memory_backend.go b/objectstore/memory_backend.go
index 09f7d8a..7dcfe4a 100644
--- a/objectstore/memory_backend.go
+++ b/objectstore/memory_backend.go
@@ -70,5 +70,10 @@ func (os *MemObjectStore) DeleteObject(bucketId string, objectId string) error {
}
delete(bucket.objects, objectId)
+ // Delete the bucket if it's empty
+ if len(bucket.objects) == 0 {
+ delete(os.buckets, bucketId)
+ }
+
return nil
}
diff --git a/objectstore/memory_backend_test.go b/objectstore/memory_backend_test.go
index 3fc2852..3ac347c 100644
--- a/objectstore/memory_backend_test.go
+++ b/objectstore/memory_backend_test.go
@@ -47,6 +47,11 @@ func TestCreateAndDelete(t *testing.T) {
t.Error("Delete non-existent object. Got nil, want error")
}
+ // Check the number of buckets
+ if numBuckets := len(objects.buckets); numBuckets != 1 {
+ t.Errorf("Number of buckets. Got %v, want 1", numBuckets)
+ }
+
// Delete the object
if err := objects.DeleteObject(bucketId, objectId); err != nil {
t.Fatalf("Delete test object: %v", err)
@@ -56,4 +61,9 @@ func TestCreateAndDelete(t *testing.T) {
if err := objects.DeleteObject(bucketId, objectId); err == nil {
t.Error("Delete already deleted object. Got nil, want error")
}
+
+ // Re-check the number of buckets
+ if numBuckets := len(objects.buckets); numBuckets != 0 {
+ t.Errorf("Number of buckets. Got %v, want 0", numBuckets)
+ }
}