diff --git a/internal/chart/v3/lint/rules/values_test.go b/internal/chart/v3/lint/rules/values_test.go index c0d2f5299..36f5c403e 100644 --- a/internal/chart/v3/lint/rules/values_test.go +++ b/internal/chart/v3/lint/rules/values_test.go @@ -92,11 +92,7 @@ func TestValidateValuesFileSchemaFailure(t *testing.T) { valfile := filepath.Join(tmpdir, "values.yaml") err := validateValuesFile(valfile, map[string]any{}, false) - if err == nil { - t.Fatal("expected values file to fail parsing") - } - - assert.Contains(t, err.Error(), "- at '/username': got number, want string") + assert.ErrorContains(t, err, "- at '/username': got number, want string") } func TestValidateValuesFileSchemaFailureButWithSkipSchemaValidation(t *testing.T) { @@ -167,7 +163,7 @@ func TestValidateValuesFile(t *testing.T) { case err == nil && tt.errorMessage != "": t.Error("expected values file to fail parsing") case err != nil && tt.errorMessage != "": - assert.Contains(t, err.Error(), tt.errorMessage, "Failed with unexpected error") + assert.ErrorContains(t, err, tt.errorMessage, "Failed with unexpected error") } }) } diff --git a/internal/plugin/config_test.go b/internal/plugin/config_test.go index beac05abf..ec81ffed6 100644 --- a/internal/plugin/config_test.go +++ b/internal/plugin/config_test.go @@ -49,8 +49,7 @@ func TestUnmarshaConfig(t *testing.T) { config, err := unmarshalConfig("cli/v1", map[string]any{ "invalid field": "foo", }) - require.Error(t, err) - assert.Contains(t, err.Error(), "field not found") + require.ErrorContains(t, err, "field not found") assert.Nil(t, config) } } diff --git a/internal/plugin/loader_test.go b/internal/plugin/loader_test.go index cb0de968d..4b98a6f83 100644 --- a/internal/plugin/loader_test.go +++ b/internal/plugin/loader_test.go @@ -295,8 +295,7 @@ command: echo test`, m, err := loadMetadataLegacy([]byte(tc.yaml)) if tc.expectError { - require.Error(t, err) - assert.Contains(t, err.Error(), tc.errorContains) + require.ErrorContains(t, err, tc.errorContains) t.Logf("Legacy error (validation catches empty name): %v", err) if tc.logNote != "" { t.Log(tc.logNote) @@ -342,8 +341,7 @@ runtime: subprocess m, err := loadMetadataV1([]byte(tc.yaml)) if tc.expectError { - require.Error(t, err) - assert.Contains(t, err.Error(), tc.errorContains) + require.ErrorContains(t, err, tc.errorContains) t.Logf("V1 error (strict unmarshalling): %v", err) } else { require.NoError(t, err) diff --git a/internal/plugin/metadata_v1_test.go b/internal/plugin/metadata_v1_test.go index 21a78549e..74c67178e 100644 --- a/internal/plugin/metadata_v1_test.go +++ b/internal/plugin/metadata_v1_test.go @@ -19,7 +19,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestMetadataV1ValidateVersion(t *testing.T) { @@ -79,8 +78,7 @@ func TestMetadataV1ValidateVersion(t *testing.T) { m := base() m.Version = tc.version err := m.Validate() - require.Error(t, err) - assert.Contains(t, err.Error(), tc.errMsg) + assert.ErrorContains(t, err, tc.errMsg) }) } } diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 045fa7d1e..4ad08b761 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -358,8 +358,7 @@ func TestConfiguration_Init(t *testing.T) { actualErr := cfg.Init(nil, "default", tt.helmDriver) if tt.expectErr { - require.Error(t, actualErr) - assert.Contains(t, actualErr.Error(), tt.errMsg) + require.ErrorContains(t, actualErr, tt.errMsg) } else { require.NoError(t, actualErr) assert.IsType(t, tt.expectedDriverType, cfg.Releases.Driver) @@ -1575,8 +1574,7 @@ data: merged, err := annotateAndMerge(tt.files) if tt.expectedError != "" { - require.Error(t, err) - assert.Contains(t, err.Error(), tt.expectedError) + assert.ErrorContains(t, err, tt.expectedError) } else { require.NoError(t, err) assert.NotNil(t, merged) @@ -1738,8 +1736,7 @@ data: files, err := splitAndDeannotate(tt.input, "test") if tt.expectedError != "" { - require.Error(t, err) - assert.Contains(t, err.Error(), tt.expectedError) + require.ErrorContains(t, err, tt.expectedError) } else { require.NoError(t, err) assert.Len(t, files, len(tt.expectedFiles)) @@ -1874,8 +1871,7 @@ func TestRenderResources_PostRenderer_Error(t *testing.T) { mockPR, false, false, false, PostRenderStrategyCombined, ) - require.Error(t, err) - assert.Contains(t, err.Error(), "error while running post render on files") + assert.ErrorContains(t, err, "error while running post render on files") } func TestRenderResources_PostRenderer_MergeError(t *testing.T) { @@ -1903,7 +1899,7 @@ func TestRenderResources_PostRenderer_MergeError(t *testing.T) { ) require.Error(t, err) - assert.Contains(t, err.Error(), "error merging manifests") + assert.ErrorContains(t, err, "error merging manifests") } func TestRenderResources_PostRenderer_SplitError(t *testing.T) { @@ -1924,8 +1920,7 @@ func TestRenderResources_PostRenderer_SplitError(t *testing.T) { mockPR, false, false, false, PostRenderStrategyCombined, ) - require.Error(t, err) - assert.Contains(t, err.Error(), "error while parsing post rendered output: error parsing YAML: MalformedYAMLError:") + assert.ErrorContains(t, err, "error while parsing post rendered output: error parsing YAML: MalformedYAMLError:") } func TestRenderResources_PostRenderer_Integration(t *testing.T) { @@ -2284,9 +2279,8 @@ metadata: mockPR, false, false, false, PostRenderStrategy("bogus"), ) - require.Error(t, err) - assert.Contains(t, err.Error(), "unknown post-render strategy") - assert.Contains(t, err.Error(), "bogus") + require.ErrorContains(t, err, "unknown post-render strategy") + assert.ErrorContains(t, err, "bogus") } func TestDetermineReleaseSSAApplyMethod(t *testing.T) { diff --git a/pkg/action/get_metadata_test.go b/pkg/action/get_metadata_test.go index ee0bd84a0..37f20fb60 100644 --- a/pkg/action/get_metadata_test.go +++ b/pkg/action/get_metadata_test.go @@ -443,8 +443,7 @@ func TestGetMetadata_Run_UnreachableKubeClient(t *testing.T) { client := NewGetMetadata(cfg) _, err := client.Run("test-release") - require.Error(t, err) - assert.Contains(t, err.Error(), "connection refused") + assert.ErrorContains(t, err, "connection refused") } func TestGetMetadata_Run_ReleaseNotFound(t *testing.T) { @@ -452,8 +451,7 @@ func TestGetMetadata_Run_ReleaseNotFound(t *testing.T) { client := NewGetMetadata(cfg) _, err := client.Run("non-existent-release") - require.Error(t, err) - assert.Contains(t, err.Error(), "not found") + assert.ErrorContains(t, err, "not found") } func TestGetMetadata_Run_EmptyAppVersion(t *testing.T) { diff --git a/pkg/action/get_values_test.go b/pkg/action/get_values_test.go index ce937b234..7e455baee 100644 --- a/pkg/action/get_values_test.go +++ b/pkg/action/get_values_test.go @@ -177,8 +177,7 @@ func TestGetValues_Run_UnreachableKubeClient(t *testing.T) { client := NewGetValues(cfg) _, err := client.Run("test-release") - require.Error(t, err) - assert.Contains(t, err.Error(), "connection refused") + assert.ErrorContains(t, err, "connection refused") } func TestGetValues_Run_ReleaseNotFound(t *testing.T) { @@ -186,8 +185,7 @@ func TestGetValues_Run_ReleaseNotFound(t *testing.T) { client := NewGetValues(cfg) _, err := client.Run("non-existent-release") - require.Error(t, err) - assert.Contains(t, err.Error(), "not found") + assert.ErrorContains(t, err, "not found") } func TestGetValues_Run_NilConfig(t *testing.T) { diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 28f989524..0d0e58e4a 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -334,10 +334,7 @@ func TestInstallRelease_NoName(t *testing.T) { instAction.ReleaseName = "" vals := map[string]any{} _, err := instAction.Run(buildChart(), vals) - if err == nil { - t.Fatal("expected failure when no name is specified") - } - assert.Contains(t, err.Error(), "no name provided") + assert.ErrorContains(t, err, "no name provided") } func TestInstallRelease_WithNotes(t *testing.T) { diff --git a/pkg/action/release_testing_test.go b/pkg/action/release_testing_test.go index d2a365cba..48a3251a1 100644 --- a/pkg/action/release_testing_test.go +++ b/pkg/action/release_testing_test.go @@ -231,8 +231,7 @@ func TestGetContainerLogs_PodNotFound(t *testing.T) { var buf bytes.Buffer err := rt.getContainerLogs(&buf, client, "nonexistent-pod") - require.Error(t, err) - assert.Contains(t, err.Error(), "unable to get pod nonexistent-pod") + assert.ErrorContains(t, err, "unable to get pod nonexistent-pod") } func TestGetContainerLogs_OutputHeaderFormat(t *testing.T) { diff --git a/pkg/action/validate_test.go b/pkg/action/validate_test.go index 75c29bf6b..878bec599 100644 --- a/pkg/action/validate_test.go +++ b/pkg/action/validate_test.go @@ -331,8 +331,7 @@ func TestSetMetadataVisitor(t *testing.T) { // Add a new resource that is missing ownership metadata and verify error resources.Append(newDeploymentResource("baz", "default", "")) err = resources.Visit(setMetadataVisitor("rel-b", "ns-a", false)) - require.Error(t, err) - assert.Contains(t, err.Error(), `Deployment "baz" in namespace "" cannot be owned`) + assert.ErrorContains(t, err, `Deployment "baz" in namespace "" cannot be owned`) } func TestValidateNameAndGenerateName(t *testing.T) { @@ -369,8 +368,7 @@ func TestValidateNameAndGenerateName(t *testing.T) { skip, err := validateNameAndGenerateName(tc.info) if tc.wantErr { - require.Error(t, err) - assert.Contains(t, err.Error(), tc.errContains) + require.ErrorContains(t, err, tc.errContains) } else { require.NoError(t, err) } diff --git a/pkg/chart/v2/lint/rules/values_test.go b/pkg/chart/v2/lint/rules/values_test.go index c0d2f5299..36f5c403e 100644 --- a/pkg/chart/v2/lint/rules/values_test.go +++ b/pkg/chart/v2/lint/rules/values_test.go @@ -92,11 +92,7 @@ func TestValidateValuesFileSchemaFailure(t *testing.T) { valfile := filepath.Join(tmpdir, "values.yaml") err := validateValuesFile(valfile, map[string]any{}, false) - if err == nil { - t.Fatal("expected values file to fail parsing") - } - - assert.Contains(t, err.Error(), "- at '/username': got number, want string") + assert.ErrorContains(t, err, "- at '/username': got number, want string") } func TestValidateValuesFileSchemaFailureButWithSkipSchemaValidation(t *testing.T) { @@ -167,7 +163,7 @@ func TestValidateValuesFile(t *testing.T) { case err == nil && tt.errorMessage != "": t.Error("expected values file to fail parsing") case err != nil && tt.errorMessage != "": - assert.Contains(t, err.Error(), tt.errorMessage, "Failed with unexpected error") + assert.ErrorContains(t, err, tt.errorMessage, "Failed with unexpected error") } }) } diff --git a/pkg/cli/values/options_test.go b/pkg/cli/values/options_test.go index c601de49e..40590f33f 100644 --- a/pkg/cli/values/options_test.go +++ b/pkg/cli/values/options_test.go @@ -258,8 +258,7 @@ func TestReadFileErrorMessages(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { _, err := readFile(tt.filePath, tt.providers) - require.Error(t, err) - assert.Contains(t, err.Error(), tt.wantErr) + require.ErrorContains(t, err, tt.wantErr) }) } } diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index 4924b6721..e0cea0cd2 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -755,8 +755,7 @@ func TestWriteLock(t *testing.T) { require.NoError(t, os.Symlink(dummyFile, lockfilePath)) err = writeLock(dir, lock, false) - require.Error(t, err) - assert.Contains(t, err.Error(), "the Chart.lock file is a symlink to") + assert.ErrorContains(t, err, "the Chart.lock file is a symlink to") }) t.Run("chart path is not a directory", func(t *testing.T) { diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index 8a71e4b6b..4a28fc5ed 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -539,8 +539,7 @@ func TestUpdate(t *testing.T) { ClientUpdateOptionUpgradeClientSideFieldManager(true)) if tc.ExpectedError != "" { - require.Error(t, err) - require.Contains(t, err.Error(), tc.ExpectedError) + require.ErrorContains(t, err, tc.ExpectedError) } else { require.NoError(t, err) } @@ -558,7 +557,7 @@ func TestUpdate(t *testing.T) { if tc.ExpectedError != "" { require.Error(t, err) - require.Contains(t, err.Error(), tc.ExpectedError) + require.ErrorContains(t, err, tc.ExpectedError) } else { require.NoError(t, err) } @@ -1939,7 +1938,7 @@ func TestClientWaitContextCancellationLegacy(t *testing.T) { err = c.Wait(resources, time.Second*30) require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitWithJobsContextCancellationLegacy(t *testing.T) { @@ -1993,8 +1992,7 @@ func TestClientWaitWithJobsContextCancellationLegacy(t *testing.T) { assert.Len(t, result.Created, 1, "expected 1 resource created, got %d", len(result.Created)) err = c.WaitWithJobs(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitForDeleteContextCancellationLegacy(t *testing.T) { @@ -2058,8 +2056,7 @@ func TestClientWaitForDeleteContextCancellationLegacy(t *testing.T) { } err = c.WaitForDelete(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitContextNilDoesNotPanic(t *testing.T) { @@ -2166,8 +2163,7 @@ func TestClientWaitContextPreCancelledLegacy(t *testing.T) { assert.Len(t, result.Created, 1, "expected 1 resource created, got %d", len(result.Created)) err = c.Wait(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitContextCancellationStatusWatcher(t *testing.T) { @@ -2193,8 +2189,7 @@ metadata: cancel() err = c.Wait(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitWithJobsContextCancellationStatusWatcher(t *testing.T) { @@ -2220,8 +2215,7 @@ metadata: cancel() err = c.WaitWithJobs(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } func TestClientWaitForDeleteContextCancellationStatusWatcher(t *testing.T) { @@ -2252,8 +2246,7 @@ status: cancel() err = c.WaitForDelete(resources, time.Second*30) - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled", "expected context canceled error, got: %v", err) + assert.ErrorContains(t, err, "context canceled", "expected context canceled error, got: %v", err) } // testStatusReader is a custom status reader for testing that returns a configurable status. diff --git a/pkg/kube/statuswait_test.go b/pkg/kube/statuswait_test.go index 12c44b420..14f10124c 100644 --- a/pkg/kube/statuswait_test.go +++ b/pkg/kube/statuswait_test.go @@ -350,7 +350,7 @@ func TestStatusWaitForDelete(t *testing.T) { if tt.expectErrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -441,7 +441,7 @@ func TestStatusWait(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -498,7 +498,7 @@ func TestWaitForJobComplete(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -561,7 +561,7 @@ func TestWatchForReady(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -679,7 +679,7 @@ func TestStatusWaitMultipleNamespaces(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -861,7 +861,7 @@ func TestStatusWaitRestrictedRBAC(t *testing.T) { if tt.expectErrs != nil { require.Error(t, err) for _, expectedErr := range tt.expectErrs { - assert.Contains(t, err.Error(), expectedErr.Error()) + require.ErrorContains(t, err, expectedErr.Error()) } return } @@ -969,7 +969,7 @@ func TestStatusWaitMixedResources(t *testing.T) { if tt.expectErrs != nil { require.Error(t, err) for _, expectedErr := range tt.expectErrs { - assert.Contains(t, err.Error(), expectedErr.Error()) + require.ErrorContains(t, err, expectedErr.Error()) } return } @@ -1075,7 +1075,7 @@ func TestStatusWaitWithCustomReaders(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -1246,7 +1246,7 @@ func TestStatusWaitWithFailedResources(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } @@ -1328,8 +1328,7 @@ func TestMethodSpecificContextCancellation(t *testing.T) { err := sw.WatchUntilReady(resourceList, time.Second*3) // Should fail due to cancelled method context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("Wait uses method-specific context", func(t *testing.T) { @@ -1362,8 +1361,7 @@ func TestMethodSpecificContextCancellation(t *testing.T) { err := sw.Wait(resourceList, time.Second*3) // Should fail due to cancelled method context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("WaitWithJobs uses method-specific context", func(t *testing.T) { @@ -1396,8 +1394,7 @@ func TestMethodSpecificContextCancellation(t *testing.T) { err := sw.WaitWithJobs(resourceList, time.Second*3) // Should fail due to cancelled method context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("WaitForDelete uses method-specific context", func(t *testing.T) { @@ -1430,8 +1427,7 @@ func TestMethodSpecificContextCancellation(t *testing.T) { err := sw.WaitForDelete(resourceList, time.Second*3) // Should fail due to cancelled method context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) } @@ -1468,8 +1464,7 @@ func TestMethodContextFallbackToGeneralContext(t *testing.T) { err := sw.WatchUntilReady(resourceList, time.Second*3) // Should fail due to cancelled general context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("Wait falls back to general context when method context is nil", func(t *testing.T) { @@ -1502,8 +1497,7 @@ func TestMethodContextFallbackToGeneralContext(t *testing.T) { err := sw.Wait(resourceList, time.Second*3) // Should fail due to cancelled general context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("WaitWithJobs falls back to general context when method context is nil", func(t *testing.T) { @@ -1536,8 +1530,7 @@ func TestMethodContextFallbackToGeneralContext(t *testing.T) { err := sw.WaitWithJobs(resourceList, time.Second*3) // Should fail due to cancelled general context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) t.Run("WaitForDelete falls back to general context when method context is nil", func(t *testing.T) { @@ -1570,8 +1563,7 @@ func TestMethodContextFallbackToGeneralContext(t *testing.T) { err := sw.WaitForDelete(resourceList, time.Second*3) // Should fail due to cancelled general context - require.Error(t, err) - assert.Contains(t, err.Error(), "context canceled") + assert.ErrorContains(t, err, "context canceled") }) } @@ -1795,7 +1787,7 @@ func TestWatchUntilReadyWithCustomReaders(t *testing.T) { if tt.expectErrStrs != nil { require.Error(t, err) for _, expectedErrStr := range tt.expectErrStrs { - assert.Contains(t, err.Error(), expectedErrStr) + require.ErrorContains(t, err, expectedErrStr) } return } diff --git a/pkg/kube/wait_test.go b/pkg/kube/wait_test.go index da730a22e..acdfffa23 100644 --- a/pkg/kube/wait_test.go +++ b/pkg/kube/wait_test.go @@ -228,8 +228,7 @@ func TestSelectorsForObject(t *testing.T) { t.Run(tt.name, func(t *testing.T) { selector, err := SelectorsForObject(tt.object.(runtime.Object)) if tt.expectError { - require.Error(t, err) - assert.Contains(t, err.Error(), tt.errorContains) + require.ErrorContains(t, err, tt.errorContains) } else { require.NoError(t, err) expected := labels.Set(tt.expectedLabels) diff --git a/pkg/registry/tag_test.go b/pkg/registry/tag_test.go index 830eac7e1..e6f447eb3 100644 --- a/pkg/registry/tag_test.go +++ b/pkg/registry/tag_test.go @@ -19,6 +19,7 @@ package registry import ( "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -61,15 +62,14 @@ func TestGetTagMatchingVersionOrConstraint_InvalidConstraint(t *testing.T) { func TestGetTagMatchingVersionOrConstraint_NoMatches(t *testing.T) { tags := []string{"0.1.0", "0.2.0"} _, err := GetTagMatchingVersionOrConstraint(tags, ">=1.0.0") - require.Error(t, err, "expected error when no tags match") - require.Contains(t, err.Error(), ">=1.0.0", "expected error to contain version string") + assert.ErrorContains(t, err, ">=1.0.0", "expected error to contain version string") } func TestGetTagMatchingVersionOrConstraint_SkipsNonSemverTags(t *testing.T) { tags := []string{"alpha", "1.0.0", "beta", "1.1.0"} got, err := GetTagMatchingVersionOrConstraint(tags, ">=1.0.0 <2.0.0") require.NoError(t, err) - require.Equal(t, "1.0.0", got) + assert.Equal(t, "1.0.0", got) } func TestGetTagMatchingVersionOrConstraint_OrderMatters_FirstMatchReturned(t *testing.T) { @@ -77,7 +77,7 @@ func TestGetTagMatchingVersionOrConstraint_OrderMatters_FirstMatchReturned(t *te tags := []string{"1.3.0", "1.2.0"} got, err := GetTagMatchingVersionOrConstraint(tags, ">=1.2.0 <2.0.0") require.NoError(t, err) - require.Equal(t, "1.3.0", got, "first satisfying tag") + assert.Equal(t, "1.3.0", got, "first satisfying tag") } func TestGetTagMatchingVersionOrConstraint_ExactMatchHasPrecedence(t *testing.T) { @@ -85,5 +85,5 @@ func TestGetTagMatchingVersionOrConstraint_ExactMatchHasPrecedence(t *testing.T) tags := []string{"1.3.0", "1.2.3"} got, err := GetTagMatchingVersionOrConstraint(tags, "1.2.3") require.NoError(t, err) - require.Equal(t, "1.2.3", got, "expected exact match") + assert.Equal(t, "1.2.3", got, "expected exact match") }