From e702bfa5358b1a1206df02af503674c2a9e49363 Mon Sep 17 00:00:00 2001 From: George K Date: Wed, 17 Jun 2026 15:33:46 -0700 Subject: [PATCH] test(enterprise/coderd): deflake TestInvalidateTemplatePrebuilds (#26499) `TestInvalidateTemplatePrebuilds` assumed a stable ordering from preset invalidation results, but the underlying `UPDATE ... RETURNING` query does not guarantee row order. Local WIP schema changes were enough to surface that latent flake when running tests. Update the test to compare invalidated presets as a set instead of by slice position. This keeps the behavior under test the same, while removing dependence on unspecified database row ordering. --- enterprise/coderd/templates_test.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/enterprise/coderd/templates_test.go b/enterprise/coderd/templates_test.go index 57acd59835..79cbacd49b 100644 --- a/enterprise/coderd/templates_test.go +++ b/enterprise/coderd/templates_test.go @@ -2301,8 +2301,10 @@ func TestInvalidateTemplatePrebuilds(t *testing.T) { // Then require.Len(t, invalidated.Invalidated, 2) - require.Equal(t, codersdk.InvalidatedPreset{TemplateName: template.Name, TemplateVersionName: version1.Name, PresetName: presetWithParameters1.Name}, invalidated.Invalidated[0]) - require.Equal(t, codersdk.InvalidatedPreset{TemplateName: template.Name, TemplateVersionName: version1.Name, PresetName: presetWithParameters2.Name}, invalidated.Invalidated[1]) + require.ElementsMatch(t, []codersdk.InvalidatedPreset{ + {TemplateName: template.Name, TemplateVersionName: version1.Name, PresetName: presetWithParameters1.Name}, + {TemplateName: template.Name, TemplateVersionName: version1.Name, PresetName: presetWithParameters2.Name}, + }, invalidated.Invalidated) // Given the template is updated... version2 := coderdtest.UpdateTemplateVersion(t, templateAdminClient, owner.OrganizationID, &echo.Responses{ @@ -2320,8 +2322,10 @@ func TestInvalidateTemplatePrebuilds(t *testing.T) { // Then: it should only invalidate the presets from the currently active version (preset2 and preset3) require.Len(t, invalidated.Invalidated, 2) - require.Equal(t, codersdk.InvalidatedPreset{TemplateName: template.Name, TemplateVersionName: version2.Name, PresetName: presetWithParameters2.Name}, invalidated.Invalidated[0]) - require.Equal(t, codersdk.InvalidatedPreset{TemplateName: template.Name, TemplateVersionName: version2.Name, PresetName: presetWithParameters3.Name}, invalidated.Invalidated[1]) + require.ElementsMatch(t, []codersdk.InvalidatedPreset{ + {TemplateName: template.Name, TemplateVersionName: version2.Name, PresetName: presetWithParameters2.Name}, + {TemplateName: template.Name, TemplateVersionName: version2.Name, PresetName: presetWithParameters3.Name}, + }, invalidated.Invalidated) } func TestInvalidateTemplatePrebuilds_RegularUser(t *testing.T) {