Skip to content

Commit a8e9e87

Browse files
authored
Merge pull request #5049 from vinayakankugoyal/deps
KEP-Template: Fix KEP validation to correctly handle deprecated->disabled->removed releases.
2 parents 1d5ad90 + 7cd88e6 commit a8e9e87

File tree

2 files changed

+57
-4
lines changed

2 files changed

+57
-4
lines changed

api/approval.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ func (prr *PRRApproval) ApproverForStage(stage Stage) (string, error) {
6262
return "", err
6363
}
6464

65-
if prr.Alpha == nil && prr.Beta == nil && prr.Stable == nil {
65+
// KEPs are usually of 2 types:
66+
// 1. Features that go through Alpha->Beta->Stable
67+
// 2. Removals that go through Deprecated->Disabled->Removed
68+
if prr.Alpha == nil && prr.Beta == nil && prr.Stable == nil && prr.Deprecated == nil && prr.Disabled == nil && prr.Removed == nil {
6669
return "", ErrPRRMilestonesAllEmpty
6770
}
6871

@@ -71,20 +74,37 @@ func (prr *PRRApproval) ApproverForStage(stage Stage) (string, error) {
7174
if prr.Alpha == nil {
7275
return "", ErrPRRMilestoneIsNil
7376
}
74-
7577
return prr.Alpha.Approver, nil
78+
7679
case BetaStage:
7780
if prr.Beta == nil {
7881
return "", ErrPRRMilestoneIsNil
7982
}
80-
8183
return prr.Beta.Approver, nil
84+
8285
case StableStage:
8386
if prr.Stable == nil {
8487
return "", ErrPRRMilestoneIsNil
8588
}
86-
8789
return prr.Stable.Approver, nil
90+
91+
case Deprecated:
92+
if prr.Deprecated == nil {
93+
return "", ErrPRRMilestoneIsNil
94+
}
95+
return prr.Deprecated.Approver, nil
96+
97+
case Disabled:
98+
if prr.Disabled == nil {
99+
return "", ErrPRRMilestoneIsNil
100+
}
101+
return prr.Disabled.Approver, nil
102+
103+
case Removed:
104+
if prr.Removed == nil {
105+
return "", ErrPRRMilestoneIsNil
106+
}
107+
return prr.Removed.Approver, nil
88108
}
89109

90110
return "", ErrPRRApproverUnknown

api/approval_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ var (
4040
Stable: prrMilestoneWithApprover,
4141
}
4242

43+
validDeprecatedPRR = &api.PRRApproval{
44+
Deprecated: prrMilestoneWithApprover,
45+
}
46+
47+
validDisabledPRR = &api.PRRApproval{
48+
Disabled: prrMilestoneWithApprover,
49+
}
50+
51+
validRemovedPRR = &api.PRRApproval{
52+
Removed: prrMilestoneWithApprover,
53+
}
54+
4355
invalidPRR = &api.PRRApproval{}
4456
)
4557

@@ -85,6 +97,27 @@ func TestPRRApproval_ApproverForStage(t *testing.T) {
8597
wantApprover: "@wojtek-t",
8698
wantErr: false,
8799
},
100+
{
101+
name: "valid: deprecated",
102+
stage: "deprecated",
103+
prr: validDeprecatedPRR,
104+
wantApprover: "@wojtek-t",
105+
wantErr: false,
106+
},
107+
{
108+
name: "valid: disabled",
109+
stage: "disabled",
110+
prr: validDisabledPRR,
111+
wantApprover: "@wojtek-t",
112+
wantErr: false,
113+
},
114+
{
115+
name: "valid: removed",
116+
stage: "removed",
117+
prr: validRemovedPRR,
118+
wantApprover: "@wojtek-t",
119+
wantErr: false,
120+
},
88121
}
89122

90123
for _, tc := range testcases {

0 commit comments

Comments
 (0)