From d4f098ae80fb276153efc757e373c813163da0e8 Mon Sep 17 00:00:00 2001 From: Marco Pracucci Date: Fri, 26 Jul 2024 14:55:39 +0200 Subject: [PATCH] Fix relabel.Regexp zero value marshalling (#14517) Signed-off-by: Marco Pracucci --- model/relabel/relabel.go | 4 ++++ model/relabel/relabel_test.go | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/model/relabel/relabel.go b/model/relabel/relabel.go index 4f33edda43..a880465969 100644 --- a/model/relabel/relabel.go +++ b/model/relabel/relabel.go @@ -213,6 +213,10 @@ func (re Regexp) IsZero() bool { // String returns the original string used to compile the regular expression. func (re Regexp) String() string { + if re.Regexp == nil { + return "" + } + str := re.Regexp.String() // Trim the anchor `^(?:` prefix and `)$` suffix. return str[4 : len(str)-2] diff --git a/model/relabel/relabel_test.go b/model/relabel/relabel_test.go index 0f11f7068d..fc9952134d 100644 --- a/model/relabel/relabel_test.go +++ b/model/relabel/relabel_test.go @@ -900,3 +900,16 @@ action: replace }) } } + +func TestRegexp_ShouldMarshalAndUnmarshalZeroValue(t *testing.T) { + var zero Regexp + + marshalled, err := yaml.Marshal(&zero) + require.NoError(t, err) + require.Equal(t, "null\n", string(marshalled)) + + var unmarshalled Regexp + err = yaml.Unmarshal(marshalled, &unmarshalled) + require.NoError(t, err) + require.Nil(t, unmarshalled.Regexp) +}