expvar: add the missing deletion step for keys

In CL575777 I forgot to remove the key from the "sync.Map".
This did not cause the test to fail due to the lack of an associated
testcase. Now delete the key correctly and add the testcase.

Change-Id: I26f770966a828caa02f1766675756b67894dc195
GitHub-Last-Rev: a351ce095b
GitHub-Pull-Request: golang/go#66675
Reviewed-on: https://go-review.googlesource.com/c/go/+/576395
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: qiu laidongfeng2 <2645477756@qq.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
apocelipes 2024-04-04 06:59:50 +00:00 committed by Gopher Robot
parent 7dd8f39eba
commit 0f10ffec13
2 changed files with 7 additions and 0 deletions

View File

@ -249,6 +249,7 @@ func (v *Map) Delete(key string) {
i, found := slices.BinarySearch(v.keys, key)
if found {
v.keys = slices.Delete(v.keys, i, i+1)
v.m.Delete(key)
}
}

View File

@ -199,6 +199,9 @@ func TestMapDelete(t *testing.T) {
}
colors.Delete("red")
if v := colors.Get("red"); v != nil {
t.Errorf("removed red, Get should return nil; got %v", v)
}
n = 0
colors.Do(func(KeyValue) { n++ })
if n != 1 {
@ -214,6 +217,9 @@ func TestMapDelete(t *testing.T) {
colors.Delete("blue")
colors.Delete("blue")
if v := colors.Get("blue"); v != nil {
t.Errorf("removed blue, Get should return nil; got %v", v)
}
n = 0
colors.Do(func(KeyValue) { n++ })
if n != 0 {