From 4a814f7ea40940f76577b7acbb0159fb72637bed Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 18 Jul 2022 18:46:58 +0300 Subject: [PATCH] fix: Sort `ComputedValue` according to parameter schema index This fixes a test-flake in TestTemplateVersionParameters/List and gives us consistent sorting for parameters. --- coderd/parameter/compute.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/coderd/parameter/compute.go b/coderd/parameter/compute.go index 8a79850b5c99b..4531c4aa74d8e 100644 --- a/coderd/parameter/compute.go +++ b/coderd/parameter/compute.go @@ -6,6 +6,7 @@ import ( "errors" "github.com/google/uuid" + "golang.org/x/exp/slices" "golang.org/x/xerrors" "github.com/coder/coder/coderd/database" @@ -32,6 +33,7 @@ type ComputedValue struct { database.ParameterValue SchemaID uuid.UUID `json:"schema_id"` DefaultSourceValue bool `json:"default_source_value"` + index int32 // Track parameter schema index for sorting. } // Compute accepts a scope in which parameter values are sourced. @@ -137,6 +139,9 @@ func Compute(ctx context.Context, db database.Store, scope ComputeScope, options for _, value := range compute.computedParameterByName { values = append(values, value) } + slices.SortFunc(values, func(a, b ComputedValue) bool { + return a.index < b.index + }) return values, nil } @@ -188,6 +193,7 @@ func (c *compute) injectSingle(scopedParameter database.ParameterValue, defaultV ParameterValue: scopedParameter, SchemaID: parameterSchema.ID, DefaultSourceValue: defaultValue, + index: parameterSchema.Index, } if c.options.HideRedisplayValues && !parameterSchema.RedisplayValue { value.SourceValue = ""