Skip to content

Commit 3bc3fab

Browse files
zou2699tekton-robot
authored andcommitted
fix: improve parsing logic to handle empty results
1 parent 7ea2ca0 commit 3bc3fab

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

pkg/termination/parse.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,17 @@ func ParseMessage(logger *zap.SugaredLogger, msg string) ([]result.RunResult, er
3939
return nil, fmt.Errorf("parsing message json: %w, msg: %s", err, msg)
4040
}
4141

42-
for i, rr := range r {
43-
if rr == (result.RunResult{}) {
42+
writeIndex := 0
43+
for _, rr := range r {
44+
if rr != (result.RunResult{}) {
4445
// Erase incorrect result
45-
r[i] = r[len(r)-1]
46-
r = r[:len(r)-1]
46+
r[writeIndex] = rr
47+
writeIndex++
48+
} else {
4749
logger.Errorf("termination message contains non taskrun or pipelineresource result keys")
4850
}
4951
}
52+
r = r[:writeIndex]
5053

5154
// Remove duplicates (last one wins) and sort by key.
5255
m := map[string]result.RunResult{}

pkg/termination/parse_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,17 @@ func TestParseMessage(t *testing.T) {
6363
Key: "foo",
6464
Value: "last",
6565
}},
66+
}, {
67+
desc: "duplicate keys with incorrect result",
68+
msg: `[
69+
{"key":"foo","value":"first"},
70+
{},
71+
{"key":"foo","value":"middle"},
72+
{"key":"foo","value":"last"}]`,
73+
want: []result.RunResult{{
74+
Key: "foo",
75+
Value: "last",
76+
}},
6677
}, {
6778
desc: "sorted by key",
6879
msg: `[

0 commit comments

Comments
 (0)