From b427b344331323fb3127078ae3afac20d09225ad Mon Sep 17 00:00:00 2001 From: Damien Mathieu <42@dmathieu.com> Date: Tue, 11 Jan 2022 10:46:03 +0100 Subject: [PATCH] validate new Members only once, when they are added to the Baggage --- baggage/baggage.go | 10 +++------- baggage/baggage_test.go | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/baggage/baggage.go b/baggage/baggage.go index 3427c51b477..451b7b66018 100644 --- a/baggage/baggage.go +++ b/baggage/baggage.go @@ -222,15 +222,11 @@ type Member struct { properties properties } -// NewMember returns a new Member from the passed arguments. An error is -// returned if the created Member would be invalid according to the W3C -// Baggage specification. +// NewMember returns a new Member from the passed arguments. To avoid double +// validation, the created member is not validated yet. It will be when it's +// added to the baggage. func NewMember(key, value string, props ...Property) (Member, error) { m := Member{key: key, value: value, properties: properties(props).Copy()} - if err := m.validate(); err != nil { - return Member{}, err - } - return m, nil } diff --git a/baggage/baggage_test.go b/baggage/baggage_test.go index 0635c823e9e..e5813f05b4b 100644 --- a/baggage/baggage_test.go +++ b/baggage/baggage_test.go @@ -669,7 +669,7 @@ func TestMemberValidation(t *testing.T) { func TestNewMember(t *testing.T) { m, err := NewMember("", "") - assert.ErrorIs(t, err, errInvalidKey) + assert.NoError(t, err) assert.Equal(t, Member{}, m) key, val := "k", "v"