fix: previous parameter value is not a number (#12246)

This commit is contained in:
Marcin Tojek 2024-02-21 15:44:45 +01:00 committed by GitHub
parent b4fb754b2d
commit c230bcf5ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 1 deletions

View File

@ -60,7 +60,7 @@ func validateBuildParameter(richParameter TemplateVersionParameter, buildParamet
value = richParameter.DefaultValue
}
if lastBuildParameter != nil && richParameter.Type == "number" && len(richParameter.ValidationMonotonic) > 0 {
if lastBuildParameter != nil && lastBuildParameter.Value != "" && richParameter.Type == "number" && len(richParameter.ValidationMonotonic) > 0 {
prev, err := strconv.Atoi(lastBuildParameter.Value)
if err != nil {
return xerrors.Errorf("previous parameter value is not a number: %s", lastBuildParameter.Value)

View File

@ -309,6 +309,26 @@ func TestRichParameterValidation(t *testing.T) {
})
}
func TestParameterResolver_ValidateResolve_EmptyString_Monotonic(t *testing.T) {
t.Parallel()
uut := codersdk.ParameterResolver{
Rich: []codersdk.WorkspaceBuildParameter{{Name: "n", Value: ""}},
}
p := codersdk.TemplateVersionParameter{
Name: "n",
Type: "number",
Mutable: true,
DefaultValue: "0",
ValidationMonotonic: codersdk.MonotonicOrderIncreasing,
}
v, err := uut.ValidateResolve(p, &codersdk.WorkspaceBuildParameter{
Name: "n",
Value: "1",
})
require.NoError(t, err)
require.Equal(t, "1", v)
}
func TestParameterResolver_ValidateResolve_Ephemeral_OverridePrevious(t *testing.T) {
t.Parallel()
uut := codersdk.ParameterResolver{