metadata: allow to exclude some keys in Copy func #321
| @@ -98,11 +98,12 @@ func (md Metadata) Del(keys ...string) { | ||||
| } | ||||
|  | ||||
| // Copy makes a copy of the metadata | ||||
| func Copy(md Metadata) Metadata { | ||||
| func Copy(md Metadata, exclude ...string) Metadata { | ||||
| 	nmd := New(len(md)) | ||||
| 	for key, val := range md { | ||||
| 		nmd.Set(key, val) | ||||
| 	} | ||||
| 	nmd.Del(exclude...) | ||||
| 	return nmd | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -190,3 +190,14 @@ func TestMetadataContext(t *testing.T) { | ||||
| 		t.Errorf("Expected metadata length 1 got %d", i) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestCopy(t *testing.T) { | ||||
| 	md := New(2) | ||||
| 	md.Set("key1", "val1", "key2", "val2") | ||||
| 	nmd := Copy(md, "key2") | ||||
| 	if len(nmd) != 1 { | ||||
| 		t.Fatal("Copy exclude not works") | ||||
| 	} else if nmd["Key1"] != "val1" { | ||||
| 		t.Fatal("Copy exclude not works") | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user