diff --git a/.golangci.yaml b/.golangci.yaml index 0b549fd364..7d6b684a83 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -2,11 +2,6 @@ issues: exclude: - SA1019 - SA5011 - exclude-rules: - - path: "(cmpserver|reposerver)/" - text: "require-error:" - linters: - - testifylint max-issues-per-linter: 0 max-same-issues: 0 linters: diff --git a/cmpserver/plugin/config_test.go b/cmpserver/plugin/config_test.go index 3b5a58a182..db08e92a2f 100644 --- a/cmpserver/plugin/config_test.go +++ b/cmpserver/plugin/config_test.go @@ -159,9 +159,9 @@ spec: require.NoError(t, err) config, err := ReadPluginConfig(tempDir) if tcc.expectedErr != "" { - assert.EqualError(t, err, tcc.expectedErr) + require.EqualError(t, err, tcc.expectedErr) } else { - assert.NoError(t, err) + require.NoError(t, err) } assert.Equal(t, tcc.expected, config) }) diff --git a/cmpserver/plugin/plugin_test.go b/cmpserver/plugin/plugin_test.go index 51b4b5c4c1..c5f431a8fa 100644 --- a/cmpserver/plugin/plugin_test.go +++ b/cmpserver/plugin/plugin_test.go @@ -103,7 +103,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, match) assert.True(t, discovery) }) @@ -118,7 +118,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.False(t, match) assert.True(t, discovery) }) @@ -133,7 +133,7 @@ func TestMatchRepository(t *testing.T) { _, _, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.ErrorContains(t, err, "syntax error") + require.ErrorContains(t, err, "syntax error") }) t.Run("will match plugin by glob", func(t *testing.T) { // given @@ -148,7 +148,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, match) assert.True(t, discovery) }) @@ -165,7 +165,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.False(t, match) assert.True(t, discovery) }) @@ -182,7 +182,7 @@ func TestMatchRepository(t *testing.T) { _, _, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.ErrorContains(t, err, "error finding glob match for pattern") + require.ErrorContains(t, err, "error finding glob match for pattern") }) t.Run("will match plugin by command when returns any output", func(t *testing.T) { // given @@ -199,7 +199,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, match) assert.True(t, discovery) }) @@ -217,7 +217,7 @@ func TestMatchRepository(t *testing.T) { // when match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.False(t, match) assert.True(t, discovery) }) @@ -236,7 +236,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, match) assert.True(t, discovery) }) @@ -256,7 +256,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.False(t, match) assert.True(t, discovery) }) @@ -275,7 +275,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.Error(t, err) + require.Error(t, err) assert.False(t, match) assert.True(t, discovery) }) @@ -288,7 +288,7 @@ func TestMatchRepository(t *testing.T) { match, discovery, err := f.service.matchRepository(context.Background(), f.path, f.env, ".") // then - assert.NoError(t, err) + require.NoError(t, err) assert.False(t, match) assert.False(t, discovery) }) @@ -323,7 +323,7 @@ func TestGenerateManifest(t *testing.T) { service.WithGenerateCommand(Command{Command: []string{"bad-command"}}) res, err := service.generateManifest(context.Background(), "testdata/kustomize", nil) - assert.ErrorContains(t, err, "executable file not found") + require.ErrorContains(t, err, "executable file not found") assert.Nil(t, res.Manifests) }) t.Run("bad yaml output", func(t *testing.T) { @@ -332,7 +332,7 @@ func TestGenerateManifest(t *testing.T) { service.WithGenerateCommand(Command{Command: []string{"echo", "invalid yaml: }"}}) res, err := service.generateManifest(context.Background(), "testdata/kustomize", nil) - assert.ErrorContains(t, err, "failed to unmarshal manifest") + require.ErrorContains(t, err, "failed to unmarshal manifest") assert.Nil(t, res.Manifests) }) } @@ -345,7 +345,7 @@ func TestGenerateManifest_deadline_exceeded(t *testing.T) { expiredCtx, cancel := context.WithTimeout(context.Background(), time.Second*0) defer cancel() _, err = service.generateManifest(expiredCtx, "", nil) - assert.ErrorContains(t, err, "context deadline exceeded") + require.ErrorContains(t, err, "context deadline exceeded") } // TestRunCommandContextTimeout makes sure the command dies at timeout rather than sleeping past the timeout. @@ -360,13 +360,13 @@ func TestRunCommandContextTimeout(t *testing.T) { before := time.Now() _, err := runCommand(ctx, command, "", []string{}) after := time.Now() - assert.Error(t, err) // The command should time out, causing an error. + require.Error(t, err) // The command should time out, causing an error. assert.Less(t, after.Sub(before), 1*time.Second) } func TestRunCommandEmptyCommand(t *testing.T) { _, err := runCommand(context.Background(), Command{}, "", nil) - assert.ErrorContains(t, err, "Command is empty") + require.ErrorContains(t, err, "Command is empty") } // TestRunCommandContextTimeoutWithCleanup makes sure that the process is given enough time to cleanup before sending SIGKILL. @@ -385,7 +385,7 @@ func TestRunCommandContextTimeoutWithCleanup(t *testing.T) { output, err := runCommand(ctx, command, "", []string{}) after := time.Now() - assert.Error(t, err) // The command should time out, causing an error. + require.Error(t, err) // The command should time out, causing an error. assert.Less(t, after.Sub(before), 1*time.Second) // The command should still have completed the cleanup after termination. assert.Contains(t, output, "cleanup completed") @@ -451,7 +451,7 @@ func Test_getParametersAnnouncement_invalid_json(t *testing.T) { Args: []string{`[`}, } _, err := getParametersAnnouncement(context.Background(), "", []*repoclient.ParameterAnnouncement{}, command, []*apiclient.EnvEntry{}) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "unexpected end of JSON input") } @@ -461,7 +461,7 @@ func Test_getParametersAnnouncement_bad_command(t *testing.T) { Args: []string{"1"}, } _, err := getParametersAnnouncement(context.Background(), "", []*repoclient.ParameterAnnouncement{}, command, []*apiclient.EnvEntry{}) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "error executing dynamic parameter output command") } @@ -472,7 +472,7 @@ func Test_getTempDirMustCleanup(t *testing.T) { err := os.Chmod(tempDir, 0o000) require.NoError(t, err) _, _, err = getTempDirMustCleanup(path.Join(tempDir, "test")) - assert.ErrorContains(t, err, "error creating temp dir") + require.ErrorContains(t, err, "error creating temp dir") err = os.Chmod(tempDir, 0o700) require.NoError(t, err) @@ -500,13 +500,13 @@ func TestService_Init(t *testing.T) { require.NoError(t, err) s := NewService(CMPServerInitConstants{PluginConfig: PluginConfig{}}) err = s.Init(workDir) - assert.ErrorContains(t, err, "error removing workdir", "Init must throw an error if it can't remove the work directory") + require.ErrorContains(t, err, "error removing workdir", "Init must throw an error if it can't remove the work directory") // Make the base directory writable so Init's cleanup succeeds. err = os.Chmod(tempDir, 0o700) require.NoError(t, err) err = s.Init(workDir) - assert.NoError(t, err) + require.NoError(t, err) assert.DirExists(t, workDir) assert.NoFileExists(t, testfile) } diff --git a/reposerver/apiclient/clientset_test.go b/reposerver/apiclient/clientset_test.go index 8ae768cb58..c0966b799d 100644 --- a/reposerver/apiclient/clientset_test.go +++ b/reposerver/apiclient/clientset_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/argoproj/argo-cd/v2/reposerver/apiclient/mocks" @@ -16,7 +17,7 @@ func TestNewRepoServerClient_CorrectClientReturned(t *testing.T) { closer, client, err := mockClientset.NewRepoServerClient() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, closer) assert.NotNil(t, client) assert.Equal(t, mockClientset.RepoServerServiceClient, client) @@ -59,7 +60,7 @@ func TestNewConnection_TLSWithStrictValidation(t *testing.T) { conn, err := apiclient.NewConnection("example.com:443", 10, &tlsConfig) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, conn) } @@ -72,7 +73,7 @@ func TestNewConnection_TLSWithStrictValidationAndCertificates(t *testing.T) { conn, err := apiclient.NewConnection("example.com:443", 10, &tlsConfig) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, conn) } @@ -86,6 +87,6 @@ func TestNewConnection_InsecureConnection(t *testing.T) { conn, err := apiclient.NewConnection("example.com:80", 10, &tlsConfig) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, conn) } diff --git a/reposerver/cache/cache_test.go b/reposerver/cache/cache_test.go index 6cc0a3f533..c05fc14134 100644 --- a/reposerver/cache/cache_test.go +++ b/reposerver/cache/cache_test.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" . "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" @@ -48,7 +49,7 @@ func TestCache_GetRevisionMetadata(t *testing.T) { mockCache.RedisClient.AssertCalled(t, "Get", mock.Anything, mock.Anything) // populate cache err = cache.SetRevisionMetadata("my-repo-url", "my-revision", &RevisionMetadata{Message: "my-message"}) - assert.NoError(t, err) + require.NoError(t, err) // cache miss _, err = cache.GetRevisionMetadata("other-repo-url", "my-revision") assert.Equal(t, ErrCacheMiss, err) @@ -57,7 +58,7 @@ func TestCache_GetRevisionMetadata(t *testing.T) { assert.Equal(t, ErrCacheMiss, err) // cache hit value, err := cache.GetRevisionMetadata("my-repo-url", "my-revision") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, &RevisionMetadata{Message: "my-message"}, value) mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 4}) } @@ -72,7 +73,7 @@ func TestCache_ListApps(t *testing.T) { assert.Equal(t, ErrCacheMiss, err) // populate cache err = cache.SetApps("my-repo-url", "my-revision", map[string]string{"foo": "bar"}) - assert.NoError(t, err) + require.NoError(t, err) // cache miss _, err = cache.ListApps("other-repo-url", "my-revision") assert.Equal(t, ErrCacheMiss, err) @@ -81,7 +82,7 @@ func TestCache_ListApps(t *testing.T) { assert.Equal(t, ErrCacheMiss, err) // cache hit value, err := cache.ListApps("my-repo-url", "my-revision") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, map[string]string{"foo": "bar"}, value) mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 4}) } @@ -99,7 +100,7 @@ func TestCache_GetManifests(t *testing.T) { // populate cache res := &CachedManifestResponse{ManifestResponse: &apiclient.ManifestResponse{SourceType: "my-source-type"}} err = cache.SetManifests("my-revision", &ApplicationSource{}, q.RefSources, q, "my-namespace", "", "my-app-label-key", "my-app-label-value", res, nil) - assert.NoError(t, err) + require.NoError(t, err) t.Run("expect cache miss because of changed revision", func(t *testing.T) { err = cache.GetManifests("other-revision", &ApplicationSource{}, q.RefSources, q, "my-namespace", "", "my-app-label-key", "my-app-label-value", value, nil) assert.Equal(t, ErrCacheMiss, err) @@ -128,10 +129,10 @@ func TestCache_GetManifests(t *testing.T) { err = cache.SetManifests( "my-revision1", &ApplicationSource{}, q.RefSources, q, "my-namespace", "", "my-app-label-key", "my-app-label-value", &CachedManifestResponse{ManifestResponse: &apiclient.ManifestResponse{SourceType: "my-source-type", Revision: "my-revision2"}}, nil) - assert.NoError(t, err) + require.NoError(t, err) err = cache.GetManifests("my-revision1", &ApplicationSource{}, q.RefSources, q, "my-namespace", "", "my-app-label-key", "my-app-label-value", value, nil) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "my-source-type", value.ManifestResponse.SourceType) assert.Equal(t, "my-revision1", value.ManifestResponse.Revision) @@ -151,7 +152,7 @@ func TestCache_GetAppDetails(t *testing.T) { assert.Equal(t, ErrCacheMiss, err) res := &apiclient.RepoAppDetailsResponse{Type: "my-type"} err = cache.SetAppDetails("my-revision", &ApplicationSource{}, emptyRefSources, res, "", nil) - assert.NoError(t, err) + require.NoError(t, err) // cache miss err = cache.GetAppDetails("other-revision", &ApplicationSource{}, emptyRefSources, value, "", nil) assert.Equal(t, ErrCacheMiss, err) @@ -160,14 +161,14 @@ func TestCache_GetAppDetails(t *testing.T) { assert.Equal(t, ErrCacheMiss, err) // cache hit err = cache.GetAppDetails("my-revision", &ApplicationSource{}, emptyRefSources, value, "", nil) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, &apiclient.RepoAppDetailsResponse{Type: "my-type"}, value) mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 4}) } func TestAddCacheFlagsToCmd(t *testing.T) { cache, err := AddCacheFlagsToCmd(&cobra.Command{})() - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, 24*time.Hour, cache.repoCacheExpiration) } @@ -347,7 +348,7 @@ func TestGetGitReferences(t *testing.T) { cache := fixtures.cache var references []*plumbing.Reference lockOwner, err := cache.GetGitReferences("test-repo", &references) - assert.NoError(t, err, "Error is cache miss handled inside function") + require.NoError(t, err, "Error is cache miss handled inside function") assert.Equal(t, "", lockOwner, "Lock owner should be empty") assert.Nil(t, references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) @@ -359,7 +360,7 @@ func TestGetGitReferences(t *testing.T) { cache := fixtures.cache var references []*plumbing.Reference lockOwner, err := cache.GetGitReferences("test-repo", &references) - assert.NoError(t, err, "Error is cache miss handled inside function") + require.NoError(t, err, "Error is cache miss handled inside function") assert.Equal(t, "", lockOwner, "Lock owner should be empty") assert.Nil(t, references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) @@ -370,10 +371,10 @@ func TestGetGitReferences(t *testing.T) { t.Cleanup(fixtures.mockCache.StopRedisCallback) cache := fixtures.cache err := cache.SetGitReferences("test-repo", *GitRefCacheItemToReferences([][2]string{{"test-repo", "ref: test"}})) - assert.NoError(t, err) + require.NoError(t, err) var references []*plumbing.Reference lockOwner, err := cache.GetGitReferences("test-repo", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "", lockOwner, "Lock owner should be empty") assert.Len(t, references, 1) assert.Equal(t, "test", (references)[0].Target().String()) @@ -389,7 +390,7 @@ func TestGetGitReferences(t *testing.T) { fixtures.mockCache.RedisClient.On("Get", mock.Anything, mock.Anything).Return(errors.New("test cache error")) var references []*plumbing.Reference lockOwner, err := cache.GetGitReferences("test-repo", &references) - assert.ErrorContains(t, err, "test cache error", "Error should be propagated") + require.ErrorContains(t, err, "test cache error", "Error should be propagated") assert.Equal(t, "", lockOwner, "Lock owner should be empty") assert.Nil(t, references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) @@ -428,32 +429,32 @@ func TestTryLockGitRefCache_OwnershipFlows(t *testing.T) { // Test setting the lock _, err := cache.TryLockGitRefCache("my-repo-url", "my-lock-id", &references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 1}) - assert.NoError(t, err) + require.NoError(t, err) var output [][2]string key := fmt.Sprintf("git-refs|%s", "my-repo-url") err = utilCache.GetItem(key, &output) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 2}) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "locked", output[0][0], "The lock should be set") assert.Equal(t, "my-lock-id", output[0][1], "The lock should be set to the provided lock id") // Test not being able to overwrite the lock _, err = cache.TryLockGitRefCache("my-repo-url", "other-lock-id", &references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 2, ExternalGets: 3}) - assert.NoError(t, err) + require.NoError(t, err) err = utilCache.GetItem(key, &output) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 2, ExternalGets: 4}) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "locked", output[0][0], "The lock should not have changed") assert.Equal(t, "my-lock-id", output[0][1], "The lock should not have changed") // Test can overwrite once there is nothing set err = utilCache.SetItem(key, [][2]string{}, &cacheutil.CacheActionOpts{Expiration: 0, Delete: true}) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 2, ExternalGets: 4, ExternalDeletes: 1}) - assert.NoError(t, err) + require.NoError(t, err) _, err = cache.TryLockGitRefCache("my-repo-url", "other-lock-id", &references) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 3, ExternalGets: 5, ExternalDeletes: 1}) - assert.NoError(t, err) + require.NoError(t, err) err = utilCache.GetItem(key, &output) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "locked", output[0][0], "The lock should be set") assert.Equal(t, "other-lock-id", output[0][1], "The lock id should have changed to other-lock-id") fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 3, ExternalGets: 6, ExternalDeletes: 1}) @@ -466,7 +467,7 @@ func TestGetOrLockGitReferences(t *testing.T) { cache := fixtures.cache var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test-lock-id", lockId) assert.NotEqual(t, "", lockId, "Lock id should be set") fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1, ExternalGets: 2}) @@ -477,10 +478,10 @@ func TestGetOrLockGitReferences(t *testing.T) { t.Cleanup(fixtures.mockCache.StopRedisCallback) cache := fixtures.cache err := cache.SetGitReferences("test-repo", *GitRefCacheItemToReferences([][2]string{{"test-repo", "ref: test"}})) - assert.NoError(t, err) + require.NoError(t, err) var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEqual(t, "test-lock-id", lockId) assert.Equal(t, "", lockId, "Lock id should not be set") assert.Equal(t, "test-repo", references[0].Name().String()) @@ -498,10 +499,10 @@ func TestGetOrLockGitReferences(t *testing.T) { &cacheutil.CacheActionOpts{ Expiration: 30 * time.Second, }) - assert.NoError(t, err) + require.NoError(t, err) var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEqual(t, "test-lock-id", lockId) assert.Equal(t, "", lockId, "Lock id should not be set") assert.Equal(t, "test-repo", references[0].Name().String()) @@ -518,11 +519,11 @@ func TestGetOrLockGitReferences(t *testing.T) { fixtures.mockCache.RedisClient.On("Get", mock.Anything, mock.Anything).Unset() fixtures.mockCache.RedisClient.On("Get", mock.Anything, mock.Anything).Return(cacheutil.ErrCacheMiss).Once().Run(func(args mock.Arguments) { err := cache.SetGitReferences("test-repo", *GitRefCacheItemToReferences([][2]string{{"test-repo", "ref: test"}})) - assert.NoError(t, err) + require.NoError(t, err) }).On("Get", mock.Anything, mock.Anything).Return(nil) var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEqual(t, "test-lock-id", lockId) assert.Equal(t, "", lockId, "Lock id should not be set") fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 2, ExternalGets: 2}) @@ -534,11 +535,11 @@ func TestGetOrLockGitReferences(t *testing.T) { cache := fixtures.cache // Create conditions for cache hit, which would result in false on updateCache if we weren't reaching the timeout err := cache.SetGitReferences("test-repo", *GitRefCacheItemToReferences([][2]string{{"test-repo", "ref: test"}})) - assert.NoError(t, err) + require.NoError(t, err) cache.revisionCacheLockTimeout = -1 * time.Second var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test-lock-id", lockId) assert.NotEqual(t, "", lockId, "Lock id should be set") cache.revisionCacheLockTimeout = 10 * time.Second @@ -555,7 +556,7 @@ func TestGetOrLockGitReferences(t *testing.T) { On("Set", mock.Anything).Return(nil) var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test-lock-id", lockId) assert.NotEqual(t, "", lockId, "Lock id should be set") fixtures.mockCache.RedisClient.AssertNumberOfCalls(t, "Set", 2) @@ -570,7 +571,7 @@ func TestUnlockGitReferences(t *testing.T) { t.Run("Test not locked", func(t *testing.T) { err := cache.UnlockGitReferences("test-repo", "") - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "key is missing") }) @@ -578,12 +579,12 @@ func TestUnlockGitReferences(t *testing.T) { // Get lock var references []*plumbing.Reference lockId, err := cache.GetOrLockGitReferences("test-repo", "test-lock-id", &references) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test-lock-id", lockId) assert.NotEqual(t, "", lockId, "Lock id should be set") // Release lock err = cache.UnlockGitReferences("test-repo", lockId) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -592,17 +593,17 @@ func TestSetHelmIndex(t *testing.T) { fixtures := newFixtures() t.Cleanup(fixtures.mockCache.StopRedisCallback) err := fixtures.cache.SetHelmIndex("test-repo", []byte("test-data")) - assert.NoError(t, err) + require.NoError(t, err) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalSets: 1}) }) t.Run("SetHelmIndex with nil", func(t *testing.T) { fixtures := newFixtures() t.Cleanup(fixtures.mockCache.StopRedisCallback) err := fixtures.cache.SetHelmIndex("test-repo", nil) - assert.Error(t, err, "nil data should not be cached") + require.Error(t, err, "nil data should not be cached") var indexData []byte err = fixtures.cache.GetHelmIndex("test-repo", &indexData) - assert.Error(t, err) + require.Error(t, err) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) }) } @@ -612,7 +613,7 @@ func TestRevisionChartDetails(t *testing.T) { fixtures := newFixtures() t.Cleanup(fixtures.mockCache.StopRedisCallback) details, err := fixtures.cache.GetRevisionChartDetails("test-repo", "test-revision", "v1.0.0") - assert.ErrorAs(t, err, &ErrCacheMiss) + require.ErrorAs(t, err, &ErrCacheMiss) assert.Equal(t, &appv1.ChartDetails{}, details) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) }) @@ -629,9 +630,9 @@ func TestRevisionChartDetails(t *testing.T) { revisionChartDetailsKey("test-repo", "test-revision", "v1.0.0"), expectedItem, &cacheutil.CacheActionOpts{Expiration: 30 * time.Second}) - assert.NoError(t, err) + require.NoError(t, err) details, err := fixtures.cache.GetRevisionChartDetails("test-repo", "test-revision", "v1.0.0") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, details) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -649,9 +650,9 @@ func TestRevisionChartDetails(t *testing.T) { revisionChartDetailsKey("test-repo", "test-revision", "v1.0.0"), expectedItem, &cacheutil.CacheActionOpts{Expiration: 30 * time.Second}) - assert.NoError(t, err) + require.NoError(t, err) details, err := fixtures.cache.GetRevisionChartDetails("test-repo", "test-revision", "v1.0.0") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, details) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -665,9 +666,9 @@ func TestRevisionChartDetails(t *testing.T) { Maintainers: []string{"test-maintainer"}, } err := fixtures.cache.SetRevisionChartDetails("test-repo", "test-revision", "v1.0.0", expectedItem) - assert.NoError(t, err) + require.NoError(t, err) details, err := fixtures.cache.GetRevisionChartDetails("test-repo", "test-revision", "v1.0.0") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, details) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -678,7 +679,7 @@ func TestGetGitDirectories(t *testing.T) { fixtures := newFixtures() t.Cleanup(fixtures.mockCache.StopRedisCallback) directories, err := fixtures.cache.GetGitDirectories("test-repo", "test-revision") - assert.ErrorAs(t, err, &ErrCacheMiss) + require.ErrorAs(t, err, &ErrCacheMiss) assert.Empty(t, directories) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) }) @@ -691,9 +692,9 @@ func TestGetGitDirectories(t *testing.T) { gitDirectoriesKey("test-repo", "test-revision"), expectedItem, &cacheutil.CacheActionOpts{Expiration: 30 * time.Second}) - assert.NoError(t, err) + require.NoError(t, err) directories, err := fixtures.cache.GetGitDirectories("test-repo", "test-revision") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, directories) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -707,9 +708,9 @@ func TestGetGitDirectories(t *testing.T) { gitDirectoriesKey("test-repo", "test-revision"), expectedItem, &cacheutil.CacheActionOpts{Expiration: 30 * time.Second}) - assert.NoError(t, err) + require.NoError(t, err) directories, err := fixtures.cache.GetGitDirectories("test-repo", "test-revision") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, directories) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -719,9 +720,9 @@ func TestGetGitDirectories(t *testing.T) { t.Cleanup(fixtures.mockCache.StopRedisCallback) expectedItem := []string{"test/dir", "test/dir2"} err := fixtures.cache.SetGitDirectories("test-repo", "test-revision", expectedItem) - assert.NoError(t, err) + require.NoError(t, err) directories, err := fixtures.cache.GetGitDirectories("test-repo", "test-revision") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, directories) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -732,7 +733,7 @@ func TestGetGitFiles(t *testing.T) { fixtures := newFixtures() t.Cleanup(fixtures.mockCache.StopRedisCallback) directories, err := fixtures.cache.GetGitFiles("test-repo", "test-revision", "*.json") - assert.ErrorAs(t, err, &ErrCacheMiss) + require.ErrorAs(t, err, &ErrCacheMiss) assert.Empty(t, directories) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1}) }) @@ -745,9 +746,9 @@ func TestGetGitFiles(t *testing.T) { gitFilesKey("test-repo", "test-revision", "*.json"), expectedItem, &cacheutil.CacheActionOpts{Expiration: 30 * time.Second}) - assert.NoError(t, err) + require.NoError(t, err) files, err := fixtures.cache.GetGitFiles("test-repo", "test-revision", "*.json") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, files) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) @@ -757,9 +758,9 @@ func TestGetGitFiles(t *testing.T) { t.Cleanup(fixtures.mockCache.StopRedisCallback) expectedItem := map[string][]byte{"test/file.json": []byte("\"test\":\"contents\""), "test/file1.json": []byte("\"test1\":\"contents1\"")} err := fixtures.cache.SetGitFiles("test-repo", "test-revision", "*.json", expectedItem) - assert.NoError(t, err) + require.NoError(t, err) files, err := fixtures.cache.GetGitFiles("test-repo", "test-revision", "*.json") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedItem, files) fixtures.mockCache.AssertCacheCalledTimes(t, &mocks.CacheCallCounts{ExternalGets: 1, ExternalSets: 1}) }) diff --git a/reposerver/repository/chart_test.go b/reposerver/repository/chart_test.go index f948e4bc59..3e1bccfa46 100644 --- a/reposerver/repository/chart_test.go +++ b/reposerver/repository/chart_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func Test_getChartDetailsNotSet(t *testing.T) { @@ -12,7 +13,7 @@ name: mychart version: 0.0.0` cd, err := getChartDetails(chart1) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "", cd.Description) assert.Equal(t, cd.Maintainers, []string(nil)) assert.Equal(t, "", cd.Home) @@ -30,7 +31,7 @@ maintainers: ` cd, err := getChartDetails(chart1) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "a good chart", cd.Description) assert.Equal(t, []string{"alex "}, cd.Maintainers) assert.Equal(t, "https://example.com", cd.Home) @@ -44,7 +45,7 @@ maintainers: - name: alex ` cd, err = getChartDetails(chart1) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, []string{"alex"}, cd.Maintainers) } @@ -58,6 +59,6 @@ maintainers: alex ` cd, err := getChartDetails(chart1) - assert.Error(t, err) + require.Error(t, err) assert.Nil(t, cd) } diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index 38006085fe..6d4ec29d77 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -211,12 +211,12 @@ func TestGenerateYamlManifestInDir(t *testing.T) { res1, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, countOfManifests) // this will test concatenated manifests to verify we split YAMLs correctly res2, err := GenerateManifests(context.Background(), "./testdata/concatenated", "/", "", &q, false, &git.NoopCredsStore{}, resource.MustParse("0"), nil) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res2.Manifests, 3) } @@ -311,15 +311,15 @@ func TestGenerateManifests_K8SAPIResetCache(t *testing.T) { cachedFakeResponse := &apiclient.ManifestResponse{Manifests: []string{"Fake"}, Revision: mock.Anything} err := service.cache.SetManifests(mock.Anything, &src, q.RefSources, &q, "", "", "", "", &cache.CachedManifestResponse{ManifestResponse: cachedFakeResponse}, nil) - assert.NoError(t, err) + require.NoError(t, err) res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, cachedFakeResponse, res) q.KubeVersion = "v1.17.0" res, err = service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEqual(t, cachedFakeResponse, res) assert.Greater(t, len(res.Manifests), 1) } @@ -336,10 +336,10 @@ func TestGenerateManifests_EmptyCache(t *testing.T) { } err := service.cache.SetManifests(mock.Anything, &src, q.RefSources, &q, "", "", "", "", &cache.CachedManifestResponse{ManifestResponse: nil}, nil) - assert.NoError(t, err) + require.NoError(t, err) res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Positive(t, len(res.Manifests)) mockCache.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 2, @@ -396,14 +396,14 @@ func TestGenerateManifest_RefOnlyShortCircuit(t *testing.T) { ProjectSourceRepos: []string{"*"}, } _, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) cacheMocks.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 2, ExternalGets: 2, }) assert.True(t, lsremoteCalled, "ls-remote should be called when the source is ref only") var revisions [][2]string - assert.NoError(t, cacheMocks.cacheutilCache.GetItem(fmt.Sprintf("git-refs|%s", repoRemote), &revisions)) + require.NoError(t, cacheMocks.cacheutilCache.GetItem(fmt.Sprintf("git-refs|%s", repoRemote), &revisions)) assert.ElementsMatch(t, [][2]string{{"refs/heads/main", revision}, {"HEAD", "ref: refs/heads/main"}}, revisions) } @@ -467,9 +467,9 @@ func TestGenerateManifestsHelmWithRefs_CachedNoLsRemote(t *testing.T) { RefSources: map[string]*argoappv1.RefTarget{"$ref": {TargetRevision: "HEAD", Repo: *repo}}, } err = cacheMocks.cacheutilCache.SetItem(fmt.Sprintf("git-refs|%s", repoRemote), [][2]string{{"HEAD", revision}}, nil) - assert.NoError(t, err) + require.NoError(t, err) _, err = service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) cacheMocks.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 2, ExternalGets: 5, @@ -486,7 +486,7 @@ func TestHelmManifestFromChartRepo(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err := service.GenerateManifest(context.Background(), request) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, response) assert.Equal(t, &apiclient.ManifestResponse{ Manifests: []string{"{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"my-map\"}}"}, @@ -523,7 +523,7 @@ func TestHelmChartReferencingExternalValues(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err := service.GenerateManifest(context.Background(), request) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, response) assert.Equal(t, &apiclient.ManifestResponse{ Manifests: []string{"{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"my-map\"}}"}, @@ -561,7 +561,7 @@ func TestHelmChartReferencingExternalValues_InvalidRefs(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err := service.GenerateManifest(context.Background(), request) - assert.Error(t, err) + require.Error(t, err) assert.Nil(t, response) // Invalid ref @@ -576,7 +576,7 @@ func TestHelmChartReferencingExternalValues_InvalidRefs(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err = service.GenerateManifest(context.Background(), request) - assert.Error(t, err) + require.Error(t, err) assert.Nil(t, response) // Helm chart as ref (unsupported) @@ -592,7 +592,7 @@ func TestHelmChartReferencingExternalValues_InvalidRefs(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err = service.GenerateManifest(context.Background(), request) - assert.Error(t, err) + require.Error(t, err) assert.Nil(t, response) } @@ -627,7 +627,7 @@ func TestHelmChartReferencingExternalValues_OutOfBounds_Symlink(t *testing.T) { require.NoError(t, err) request := &apiclient.ManifestRequest{Repo: &argoappv1.Repository{}, ApplicationSource: &spec.Sources[0], NoCache: true, RefSources: refSources, HasMultipleSources: true} _, err = service.GenerateManifest(context.Background(), request) - assert.Error(t, err) + require.Error(t, err) } func TestGenerateManifestsUseExactRevision(t *testing.T) { @@ -641,7 +641,7 @@ func TestGenerateManifestsUseExactRevision(t *testing.T) { } res1, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) assert.Equal(t, "abc", gitClient.Calls[0].Arguments[0]) } @@ -657,7 +657,7 @@ func TestRecurseManifestsInDir(t *testing.T) { } res1, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) } @@ -669,7 +669,7 @@ func TestInvalidManifestsInDir(t *testing.T) { q := apiclient.ManifestRequest{Repo: &argoappv1.Repository{}, ApplicationSource: &src} _, err := service.GenerateManifest(context.Background(), &q) - assert.Error(t, err) + require.Error(t, err) } func TestInvalidMetadata(t *testing.T) { @@ -678,7 +678,7 @@ func TestInvalidMetadata(t *testing.T) { src := argoappv1.ApplicationSource{Path: "./testdata/invalid-metadata", Directory: &argoappv1.ApplicationSourceDirectory{Recurse: true}} q := apiclient.ManifestRequest{Repo: &argoappv1.Repository{}, ApplicationSource: &src, AppLabelKey: "test", AppName: "invalid-metadata", TrackingMethod: "annotation+label"} _, err := service.GenerateManifest(context.Background(), &q) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "contains non-string value in the map under key \"invalid\"") } @@ -689,7 +689,7 @@ func TestNilMetadataAccessors(t *testing.T) { src := argoappv1.ApplicationSource{Path: "./testdata/nil-metadata-accessors", Directory: &argoappv1.ApplicationSourceDirectory{Recurse: true}} q := apiclient.ManifestRequest{Repo: &argoappv1.Repository{}, ApplicationSource: &src, AppLabelKey: "test", AppName: "nil-metadata-accessors", TrackingMethod: "annotation+label"} res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res.Manifests, 1) assert.Equal(t, expected, res.Manifests[0]) } @@ -713,7 +713,7 @@ func TestGenerateJsonnetManifestInDir(t *testing.T) { ProjectSourceRepos: []string{"*"}, } res1, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) } @@ -736,7 +736,7 @@ func TestGenerateJsonnetManifestInRootDir(t *testing.T) { ProjectSourceRepos: []string{"*"}, } res1, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) } @@ -769,7 +769,7 @@ func TestManifestGenErrorCacheByNumRequests(t *testing.T) { cachedManifestResponse := &cache.CachedManifestResponse{} err := service.cache.GetManifests(mock.Anything, manifestRequest.ApplicationSource, manifestRequest.RefSources, manifestRequest, manifestRequest.Namespace, "", manifestRequest.AppLabelKey, manifestRequest.AppName, cachedManifestResponse, nil) - assert.NoError(t, err) + require.NoError(t, err) return cachedManifestResponse } @@ -905,17 +905,17 @@ func TestManifestGenErrorCacheFileContentsChange(t *testing.T) { // Ensure that the target directory will succeed or fail, so we can verify the cache correctly handles it err := os.RemoveAll(tmpDir) - assert.NoError(t, err) + require.NoError(t, err) err = os.MkdirAll(tmpDir, 0o777) - assert.NoError(t, err) + require.NoError(t, err) if errorExpected { // Copy invalid helm chart into temporary directory, ensuring manifest generation will fail err = fileutil.CopyDir("./testdata/invalid-helm", tmpDir) - assert.NoError(t, err) + require.NoError(t, err) } else { // Copy valid helm chart into temporary directory, ensuring generation will succeed err = fileutil.CopyDir("./testdata/my-chart", tmpDir) - assert.NoError(t, err) + require.NoError(t, err) } res, err := service.GenerateManifest(context.Background(), &apiclient.ManifestRequest{ @@ -934,16 +934,16 @@ func TestManifestGenErrorCacheFileContentsChange(t *testing.T) { if step < 2 { if errorExpected { - assert.Error(t, err, "error return value and error expected did not match") + require.Error(t, err, "error return value and error expected did not match") assert.Nil(t, res, "GenerateManifest return value and expected value did not match") } else { - assert.NoError(t, err, "error return value and error expected did not match") + require.NoError(t, err, "error return value and error expected did not match") assert.NotNil(t, res, "GenerateManifest return value and expected value did not match") } } if step == 2 { - assert.NoError(t, err, "error ret val was non-nil on step 3") + require.NoError(t, err, "error ret val was non-nil on step 3") assert.NotNil(t, res, "GenerateManifest ret val was nil on step 3") } } @@ -1097,18 +1097,18 @@ func TestGenerateHelmWithValues(t *testing.T) { ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) replicasVerified := false for _, src := range res.Manifests { obj := unstructured.Unstructured{} err = json.Unmarshal([]byte(src), &obj) - assert.NoError(t, err) + require.NoError(t, err) if obj.GetKind() == "Deployment" && obj.GetName() == "test-redis-slave" { var dep v1.Deployment err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.Object, &dep) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, int32(2), *dep.Spec.Replicas) replicasVerified = true } @@ -1135,13 +1135,13 @@ func TestHelmWithMissingValueFiles(t *testing.T) { // Should fail since we're passing a non-existent values file, and error should indicate that _, err := service.GenerateManifest(context.Background(), req) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), fmt.Sprintf("%s: no such file or directory", missingValuesFile)) // Should template without error even if defining a non-existent values file req.ApplicationSource.Helm.IgnoreMissingValueFiles = true _, err = service.GenerateManifest(context.Background(), req) - assert.NoError(t, err) + require.NoError(t, err) } func TestGenerateHelmWithEnvVars(t *testing.T) { @@ -1160,18 +1160,18 @@ func TestGenerateHelmWithEnvVars(t *testing.T) { ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) replicasVerified := false for _, src := range res.Manifests { obj := unstructured.Unstructured{} err = json.Unmarshal([]byte(src), &obj) - assert.NoError(t, err) + require.NoError(t, err) if obj.GetKind() == "Deployment" && obj.GetName() == "production-redis-slave" { var dep v1.Deployment err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.Object, &dep) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, int32(3), *dep.Spec.Replicas) replicasVerified = true } @@ -1196,7 +1196,7 @@ func TestGenerateHelmWithValuesDirectoryTraversal(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) // Test the case where the path is "." service = newService(t, "./testdata") @@ -1209,7 +1209,7 @@ func TestGenerateHelmWithValuesDirectoryTraversal(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) } func TestChartRepoWithOutOfBoundsSymlink(t *testing.T) { @@ -1239,7 +1239,7 @@ func TestHelmManifestFromChartRepoWithValueFile(t *testing.T) { ProjectSourceRepos: []string{"*"}, } response, err := service.GenerateManifest(context.Background(), request) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, response) assert.Equal(t, &apiclient.ManifestResponse{ Manifests: []string{"{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"my-map\"}}"}, @@ -1263,7 +1263,7 @@ func TestHelmManifestFromChartRepoWithValueFileOutsideRepo(t *testing.T) { } request := &apiclient.ManifestRequest{Repo: &argoappv1.Repository{}, ApplicationSource: source, NoCache: true} _, err := service.GenerateManifest(context.Background(), request) - assert.Error(t, err) + require.Error(t, err) } func TestHelmManifestFromChartRepoWithValueFileLinks(t *testing.T) { @@ -1281,7 +1281,7 @@ func TestHelmManifestFromChartRepoWithValueFileLinks(t *testing.T) { ProjectSourceRepos: []string{"*"}, } _, err := service.GenerateManifest(context.Background(), request) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -1302,7 +1302,7 @@ func TestGenerateHelmWithURL(t *testing.T) { ProjectSourceRepos: []string{"*"}, HelmOptions: &argoappv1.HelmOptions{ValuesFileSchemes: []string{"https"}}, }) - assert.NoError(t, err) + require.NoError(t, err) } // The requested value file (`../minio/values.yaml`) is outside the repo directory @@ -1323,7 +1323,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "outside repository root") }) @@ -1342,7 +1342,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Values file with absolute path stays within repo root", func(t *testing.T) { @@ -1360,7 +1360,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Values file with absolute path using back-references outside repo root", func(t *testing.T) { @@ -1378,7 +1378,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "outside repository root") }) @@ -1397,7 +1397,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "is not allowed") }) @@ -1416,7 +1416,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.Error(t, err) + require.Error(t, err) assert.Contains(t, err.Error(), "s3://my-bucket/my-chart-values.yaml: no such file or directory") }) } @@ -1426,13 +1426,13 @@ func TestGenerateHelmWithAbsoluteFileParameter(t *testing.T) { service := newService(t, "../..") file, err := os.CreateTemp("", "external-secret.txt") - assert.NoError(t, err) + require.NoError(t, err) externalSecretPath := file.Name() defer func() { _ = os.RemoveAll(externalSecretPath) }() expectedFileContent, err := os.ReadFile("../../util/helm/testdata/external/external-secret.txt") - assert.NoError(t, err) + require.NoError(t, err) err = os.WriteFile(externalSecretPath, expectedFileContent, 0o644) - assert.NoError(t, err) + require.NoError(t, err) defer func() { if err = file.Close(); err != nil { panic(err) @@ -1456,7 +1456,7 @@ func TestGenerateHelmWithAbsoluteFileParameter(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.Error(t, err) + require.Error(t, err) } // The requested file parameter (`../external/external-secret.txt`) is outside the app path @@ -1484,7 +1484,7 @@ func TestGenerateHelmWithFileParameter(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Contains(t, res.Manifests[6], `"replicas":2`, "ValuesObject should override Values") } @@ -1499,7 +1499,7 @@ func TestGenerateNullList(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 1) assert.Contains(t, res1.Manifests[0], "prometheus-operator-operator") }) @@ -1512,7 +1512,7 @@ func TestGenerateNullList(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 1) assert.Contains(t, res1.Manifests[0], "prometheus-operator-operator") }) @@ -1525,22 +1525,22 @@ func TestGenerateNullList(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) }) } func TestIdentifyAppSourceTypeByAppDirWithKustomizations(t *testing.T) { sourceType, err := GetAppSourceType(context.Background(), &argoappv1.ApplicationSource{}, "./testdata/kustomization_yaml", "./testdata", "testapp", map[string]bool{}, []string{}, []string{}) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, argoappv1.ApplicationSourceTypeKustomize, sourceType) sourceType, err = GetAppSourceType(context.Background(), &argoappv1.ApplicationSource{}, "./testdata/kustomization_yml", "./testdata", "testapp", map[string]bool{}, []string{}, []string{}) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, argoappv1.ApplicationSourceTypeKustomize, sourceType) sourceType, err = GetAppSourceType(context.Background(), &argoappv1.ApplicationSource{}, "./testdata/Kustomization", "./testdata", "testapp", map[string]bool{}, []string{}, []string{}) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, argoappv1.ApplicationSourceTypeKustomize, sourceType) } @@ -1552,7 +1552,7 @@ func TestGenerateFromUTF16(t *testing.T) { ProjectSourceRepos: []string{"*"}, } res1, err := GenerateManifests(context.Background(), "./testdata/utf-16", "/", "", &q, false, &git.NoopCredsStore{}, resource.MustParse("0"), nil) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res1.Manifests, 2) } @@ -1560,7 +1560,7 @@ func TestListApps(t *testing.T) { service := newService(t, "./testdata") res, err := service.ListApps(context.Background(), &apiclient.ListAppsRequest{Repo: &argoappv1.Repository{}}) - assert.NoError(t, err) + require.NoError(t, err) expectedApps := map[string]string{ "Kustomization": "Kustomize", @@ -1594,7 +1594,7 @@ func TestGetAppDetailsHelm(t *testing.T) { }, }) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, res.Helm) assert.Equal(t, "Helm", res.Type) @@ -1611,7 +1611,7 @@ func TestGetAppDetailsHelmUsesCache(t *testing.T) { }, }) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, res.Helm) assert.Equal(t, "Helm", res.Type) @@ -1628,7 +1628,7 @@ func TestGetAppDetailsHelm_WithNoValuesFile(t *testing.T) { }, }) - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, res.Helm) assert.Equal(t, "Helm", res.Type) @@ -1646,7 +1646,7 @@ func TestGetAppDetailsKustomize(t *testing.T) { }, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "Kustomize", res.Type) assert.NotNil(t, res.Kustomize) @@ -1662,7 +1662,7 @@ func TestGetHelmCharts(t *testing.T) { return res.Items[i].Name < res.Items[j].Name }) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, res.Items, 2) item := res.Items[0] @@ -1691,7 +1691,7 @@ func TestGetRevisionMetadata(t *testing.T) { CheckSignature: true, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test", res.Message) assert.Equal(t, now, res.Date.Time) assert.Equal(t, "author", res.Author) @@ -1705,7 +1705,7 @@ func TestGetRevisionMetadata(t *testing.T) { CheckSignature: true, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test", res.Message) assert.Equal(t, now, res.Date.Time) assert.Equal(t, "author", res.Author) @@ -1718,7 +1718,7 @@ func TestGetRevisionMetadata(t *testing.T) { Revision: "c0b400fc458875d925171398f9ba9eabd5529923", CheckSignature: false, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, res.SignatureInfo) // Enforce cache miss - signature info should not be in result @@ -1727,7 +1727,7 @@ func TestGetRevisionMetadata(t *testing.T) { Revision: "da52afd3b2df1ec49470603d8bbb46954dab1091", CheckSignature: false, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, res.SignatureInfo) // Cache hit on previous entry that did not have signature info @@ -1736,7 +1736,7 @@ func TestGetRevisionMetadata(t *testing.T) { Revision: "da52afd3b2df1ec49470603d8bbb46954dab1091", CheckSignature: true, }) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEmpty(t, res.SignatureInfo) } @@ -1755,7 +1755,7 @@ func TestGetSignatureVerificationResult(t *testing.T) { } res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, testSignature, res.VerifyResult) } // Commit with signature and verification not requested @@ -1769,7 +1769,7 @@ func TestGetSignatureVerificationResult(t *testing.T) { } res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, res.VerifyResult) } // Commit without signature and verification requested @@ -1783,7 +1783,7 @@ func TestGetSignatureVerificationResult(t *testing.T) { } res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, res.VerifyResult) } // Commit without signature and verification not requested @@ -1797,7 +1797,7 @@ func TestGetSignatureVerificationResult(t *testing.T) { } res, err := service.GenerateManifest(context.Background(), &q) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, res.VerifyResult) } } @@ -1915,7 +1915,7 @@ func TestGetAppDetailsWithAppParameterFile(t *testing.T) { }, AppName: "broken", }) - assert.Error(t, err) + require.Error(t, err) }) }) } @@ -1962,9 +1962,7 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { for _, manifest := range manifests.Manifests { var un unstructured.Unstructured err := yaml.Unmarshal([]byte(manifest), &un) - if !assert.NoError(t, err) { - return - } + require.NoError(t, err) resourceByKindName[fmt.Sprintf("%s/%s", un.GetKind(), un.GetName())] = &un } deployment, ok := resourceByKindName["Deployment/guestbook-ui"] @@ -1993,9 +1991,7 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { for _, manifest := range manifests.Manifests { var un unstructured.Unstructured err := yaml.Unmarshal([]byte(manifest), &un) - if !assert.NoError(t, err) { - return - } + require.NoError(t, err) resourceByKindName[fmt.Sprintf("%s/%s", un.GetKind(), un.GetName())] = &un } deployment, ok := resourceByKindName["Deployment/guestbook-ui"] @@ -2025,9 +2021,7 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { for _, manifest := range manifests.Manifests { var un unstructured.Unstructured err := yaml.Unmarshal([]byte(manifest), &un) - if !assert.NoError(t, err) { - return - } + require.NoError(t, err) resourceByKindName[fmt.Sprintf("%s/%s", un.GetKind(), un.GetName())] = &un } deployment, ok := resourceByKindName["Deployment/guestbook-ui"] @@ -2055,7 +2049,7 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { ProjectSourceRepos: []string{"*"}, HasMultipleSources: true, }) - assert.NoError(t, err) + require.NoError(t, err) assert.Empty(t, manifests.Manifests) assert.NotEmpty(t, manifests.Revision) }) @@ -2078,9 +2072,7 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { for _, manifest := range manifests.Manifests { var un unstructured.Unstructured err := yaml.Unmarshal([]byte(manifest), &un) - if !assert.NoError(t, err) { - return - } + require.NoError(t, err) resourceByKindName[fmt.Sprintf("%s/%s", un.GetKind(), un.GetName())] = &un } deployment, ok := resourceByKindName["Deployment/guestbook-ui"] @@ -2107,13 +2099,13 @@ func TestGenerateManifestsWithAppParameterFile(t *testing.T) { ProjectName: "something", ProjectSourceRepos: []string{"*"}, }) - assert.NoError(t, err) + require.NoError(t, err) res := &cache.CachedManifestResponse{} // Try to pull from the cache with a `source` that does not include any overrides. Overrides should not be // part of the cache key, because you can't get the overrides without a repo operation. And avoiding repo // operations is the point of the cache. err = service.cache.GetManifests(mock.Anything, source, argoappv1.RefTargetRevisionMapping{}, &argoappv1.ClusterInfo{}, "", "", "", "test", res, nil) - assert.NoError(t, err) + require.NoError(t, err) }) }) } @@ -2274,9 +2266,7 @@ func TestFindResources(t *testing.T) { Include: tc.include, Exclude: tc.exclude, }, map[string]bool{}, resource.MustParse("0")) - if !assert.NoError(t, err) { - return - } + require.NoError(t, err) var names []string for i := range objs { names = append(names, objs[i].GetName()) @@ -2292,9 +2282,8 @@ func TestFindManifests_Exclude(t *testing.T) { Exclude: "subdir/deploymentSub.yaml", }, map[string]bool{}, resource.MustParse("0")) - if !assert.NoError(t, err) || !assert.Len(t, objs, 1) { - return - } + require.NoError(t, err) + require.Len(t, objs, 1) assert.Equal(t, "nginx-deployment", objs[0].GetName()) } @@ -2305,9 +2294,8 @@ func TestFindManifests_Exclude_NothingMatches(t *testing.T) { Exclude: "nothing.yaml", }, map[string]bool{}, resource.MustParse("0")) - if !assert.NoError(t, err) || !assert.Len(t, objs, 2) { - return - } + require.NoError(t, err) + require.Len(t, objs, 2) assert.ElementsMatch(t, []string{"nginx-deployment", "nginx-deployment-sub"}, []string{objs[0].GetName(), objs[1].GetName()}) @@ -2360,7 +2348,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(filePath, info, appDir, appDir, "", "") assert.Nil(t, realFileInfo) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2394,7 +2382,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(aPath, info, appDir, appDir, "", "") assert.Nil(t, realFileInfo) assert.NotEmpty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2427,7 +2415,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(linkPath, info, appDir, appDir, "", "") assert.Nil(t, realFileInfo) assert.Contains(t, ignoreMessage, "non-regular file") - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2444,7 +2432,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(filePath, info, appDir, appDir, "*.json", "") assert.Nil(t, realFileInfo) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2461,7 +2449,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(filePath, info, appDir, appDir, "", "excluded.*") assert.Nil(t, realFileInfo) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2482,7 +2470,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(linkPath, info, appDir, appDir, "", "") assert.NotNil(t, realFileInfo) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2499,7 +2487,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { realFileInfo, ignoreMessage, err := getPotentiallyValidManifestFile(filePath, info, appDir, appDir, "", "") assert.NotNil(t, realFileInfo) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) @@ -2521,7 +2509,7 @@ func Test_getPotentiallyValidManifestFile(t *testing.T) { assert.NotNil(t, realFileInfo) assert.Equal(t, filepath.Base(filePath), realFileInfo.Name()) assert.Empty(t, ignoreMessage) - assert.NoError(t, err) + require.NoError(t, err) }) }) } @@ -2542,7 +2530,7 @@ func Test_getPotentiallyValidManifests(t *testing.T) { manifests, err := getPotentiallyValidManifests(logCtx, appDir, appDir, false, "", "", resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) // allow cleanup err = os.Chmod(appDir, 0o777) @@ -2554,19 +2542,19 @@ func Test_getPotentiallyValidManifests(t *testing.T) { t.Run("no recursion when recursion is disabled", func(t *testing.T) { manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/recurse", "./testdata/recurse", false, "", "", resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("recursion when recursion is enabled", func(t *testing.T) { manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/recurse", "./testdata/recurse", true, "", "", resource.MustParse("0")) assert.Len(t, manifests, 2) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("non-JSON/YAML is skipped", func(t *testing.T) { manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/non-manifest-file", "./testdata/non-manifest-file", false, "", "", resource.MustParse("0")) assert.Empty(t, manifests) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("circular link should throw an error", func(t *testing.T) { @@ -2578,14 +2566,14 @@ func Test_getPotentiallyValidManifests(t *testing.T) { defer os.Remove(path.Join(testDir, "b.json")) manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/circular-link", "./testdata/circular-link", false, "", "", resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("out-of-bounds symlink should throw an error", func(t *testing.T) { require.DirExists(t, "./testdata/out-of-bounds-link") manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/out-of-bounds-link", "./testdata/out-of-bounds-link", false, "", "", resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("symlink to a regular file works", func(t *testing.T) { @@ -2595,13 +2583,13 @@ func Test_getPotentiallyValidManifests(t *testing.T) { require.NoError(t, err) manifests, err := getPotentiallyValidManifests(logCtx, appPath, repoRoot, false, "", "", resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("symlink to nowhere should be ignored", func(t *testing.T) { manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/link-to-nowhere", "./testdata/link-to-nowhere", false, "", "", resource.MustParse("0")) assert.Empty(t, manifests) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("link to over-sized manifest fails", func(t *testing.T) { @@ -2619,7 +2607,7 @@ func Test_getPotentiallyValidManifests(t *testing.T) { // There is a total of 10 files, ech file being 10 bytes. manifests, err := getPotentiallyValidManifests(logCtx, "./testdata/several-files", "./testdata/several-files", false, "", "", resource.MustParse("365")) assert.Len(t, manifests, 10) - assert.NoError(t, err) + require.NoError(t, err) manifests, err = getPotentiallyValidManifests(logCtx, "./testdata/several-files", "./testdata/several-files", false, "", "", resource.MustParse("100")) assert.Empty(t, manifests) @@ -2641,7 +2629,7 @@ func Test_findManifests(t *testing.T) { manifests, err := findManifests(logCtx, appDir, appDir, nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) // allow cleanup err = os.Chmod(appDir, 0o777) @@ -2653,20 +2641,20 @@ func Test_findManifests(t *testing.T) { t.Run("no recursion when recursion is disabled", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/recurse", "./testdata/recurse", nil, noRecurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 2) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("recursion when recursion is enabled", func(t *testing.T) { recurse := argoappv1.ApplicationSourceDirectory{Recurse: true} manifests, err := findManifests(logCtx, "./testdata/recurse", "./testdata/recurse", nil, recurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 4) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("non-JSON/YAML is skipped", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/non-manifest-file", "./testdata/non-manifest-file", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("circular link should throw an error", func(t *testing.T) { @@ -2678,14 +2666,14 @@ func Test_findManifests(t *testing.T) { defer os.Remove(path.Join(testDir, "b.json")) manifests, err := findManifests(logCtx, "./testdata/circular-link", "./testdata/circular-link", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("out-of-bounds symlink should throw an error", func(t *testing.T) { require.DirExists(t, "./testdata/out-of-bounds-link") manifests, err := findManifests(logCtx, "./testdata/out-of-bounds-link", "./testdata/out-of-bounds-link", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("symlink to a regular file works", func(t *testing.T) { @@ -2695,13 +2683,13 @@ func Test_findManifests(t *testing.T) { require.NoError(t, err) manifests, err := findManifests(logCtx, appPath, repoRoot, nil, noRecurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("symlink to nowhere should be ignored", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/link-to-nowhere", "./testdata/link-to-nowhere", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("link to over-sized manifest fails", func(t *testing.T) { @@ -2719,7 +2707,7 @@ func Test_findManifests(t *testing.T) { // There is a total of 10 files, each file being 10 bytes. manifests, err := findManifests(logCtx, "./testdata/several-files", "./testdata/several-files", nil, noRecurse, nil, resource.MustParse("365")) assert.Len(t, manifests, 10) - assert.NoError(t, err) + require.NoError(t, err) manifests, err = findManifests(logCtx, "./testdata/several-files", "./testdata/several-files", nil, noRecurse, nil, resource.MustParse("364")) assert.Empty(t, manifests) @@ -2730,7 +2718,7 @@ func Test_findManifests(t *testing.T) { // Each file is 36 bytes. Only the 36-byte json file should be counted against the limit. manifests, err := findManifests(logCtx, "./testdata/jsonnet-and-json", "./testdata/jsonnet-and-json", nil, noRecurse, nil, resource.MustParse("36")) assert.Len(t, manifests, 2) - assert.NoError(t, err) + require.NoError(t, err) manifests, err = findManifests(logCtx, "./testdata/jsonnet-and-json", "./testdata/jsonnet-and-json", nil, noRecurse, nil, resource.MustParse("35")) assert.Empty(t, manifests) @@ -2741,46 +2729,46 @@ func Test_findManifests(t *testing.T) { require.DirExists(t, "./testdata/partially-valid-yaml") manifests, err := findManifests(logCtx, "./testdata/partially-valid-yaml", "./testdata/partially-valid-yaml", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("invalid manifest throws an error", func(t *testing.T) { require.DirExists(t, "./testdata/invalid-manifests") manifests, err := findManifests(logCtx, "./testdata/invalid-manifests", "./testdata/invalid-manifests", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("irrelevant YAML gets skipped, relevant YAML gets parsed", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/irrelevant-yaml", "./testdata/irrelevant-yaml", nil, noRecurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("multiple JSON objects in one file throws an error", func(t *testing.T) { require.DirExists(t, "./testdata/json-list") manifests, err := findManifests(logCtx, "./testdata/json-list", "./testdata/json-list", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("invalid JSON throws an error", func(t *testing.T) { require.DirExists(t, "./testdata/invalid-json") manifests, err := findManifests(logCtx, "./testdata/invalid-json", "./testdata/invalid-json", nil, noRecurse, nil, resource.MustParse("0")) assert.Empty(t, manifests) - assert.Error(t, err) + require.Error(t, err) }) t.Run("valid JSON returns manifest and no error", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/valid-json", "./testdata/valid-json", nil, noRecurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("YAML with an empty document doesn't throw an error", func(t *testing.T) { manifests, err := findManifests(logCtx, "./testdata/yaml-with-empty-document", "./testdata/yaml-with-empty-document", nil, noRecurse, nil, resource.MustParse("0")) assert.Len(t, manifests, 1) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -2802,7 +2790,7 @@ func Test_getHelmDependencyRepos(t *testing.T) { repo2 := "https://eventstore.github.io/EventStore.Charts" repos, err := getHelmDependencyRepos("../../util/helm/testdata/dependency") - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, repos, 2) assert.Equal(t, repos[0].Repo, repo1) assert.Equal(t, repos[1].Repo, repo2) @@ -2824,7 +2812,7 @@ func TestResolveRevision(t *testing.T) { } assert.NotNil(t, resolveRevisionResponse.Revision) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expectedResolveRevisionResponse, resolveRevisionResponse) } @@ -2844,7 +2832,7 @@ func TestResolveRevisionNegativeScenarios(t *testing.T) { } assert.NotNil(t, resolveRevisionResponse.Revision) - assert.Error(t, err) + require.Error(t, err) assert.Equal(t, expectedResolveRevisionResponse, resolveRevisionResponse) } @@ -2856,7 +2844,7 @@ func TestDirectoryPermissionInitializer(t *testing.T) { io.Close(file) // remove read permissions - assert.NoError(t, os.Chmod(dir, 0o000)) + require.NoError(t, os.Chmod(dir, 0o000)) // Remember to restore permissions when the test finishes so dir can // be removed properly. @@ -2877,42 +2865,42 @@ func TestDirectoryPermissionInitializer(t *testing.T) { func addHelmToGitRepo(t *testing.T, options newGitRepoOptions) { err := os.WriteFile(filepath.Join(options.path, "Chart.yaml"), []byte("name: test\nversion: v1.0.0"), 0o777) - assert.NoError(t, err) + require.NoError(t, err) for valuesFileName, values := range options.helmChartOptions.valuesFiles { valuesFileContents, err := yaml.Marshal(values) - assert.NoError(t, err) + require.NoError(t, err) err = os.WriteFile(filepath.Join(options.path, valuesFileName), valuesFileContents, 0o777) - assert.NoError(t, err) + require.NoError(t, err) } - assert.NoError(t, err) + require.NoError(t, err) cmd := exec.Command("git", "add", "-A") cmd.Dir = options.path - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) cmd = exec.Command("git", "commit", "-m", "Initial commit") cmd.Dir = options.path - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) } func initGitRepo(t *testing.T, options newGitRepoOptions) (revision string) { if options.createPath { - assert.NoError(t, os.Mkdir(options.path, 0o755)) + require.NoError(t, os.Mkdir(options.path, 0o755)) } cmd := exec.Command("git", "init", "-b", "main", options.path) cmd.Dir = options.path - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) if options.remote != "" { cmd = exec.Command("git", "remote", "add", "origin", options.path) cmd.Dir = options.path - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) } commitAdded := options.addEmptyCommit || options.helmChartOptions.chartName != "" if options.addEmptyCommit { cmd = exec.Command("git", "commit", "-m", "Initial commit", "--allow-empty") cmd.Dir = options.path - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) } else if options.helmChartOptions.chartName != "" { addHelmToGitRepo(t, options) } @@ -2922,7 +2910,7 @@ func initGitRepo(t *testing.T, options newGitRepoOptions) (revision string) { cmd = exec.Command("git", "rev-parse", "HEAD", options.path) cmd.Dir = options.path cmd.Stdout = &revB - assert.NoError(t, cmd.Run()) + require.NoError(t, cmd.Run()) revision = strings.Split(revB.String(), "\n")[0] } return revision @@ -2980,10 +2968,10 @@ func TestCheckoutRevisionCanGetNonstandardRefs(t *testing.T) { require.NoError(t, err) err = checkoutRevision(gitClient, "does-not-exist", false) - assert.Error(t, err) + require.Error(t, err) err = checkoutRevision(gitClient, pullSha, false) - assert.NoError(t, err) + require.NoError(t, err) } func TestCheckoutRevisionPresentSkipFetch(t *testing.T) { @@ -2995,7 +2983,7 @@ func TestCheckoutRevisionPresentSkipFetch(t *testing.T) { gitClient.On("Checkout", revision, mock.Anything).Return(nil) err := checkoutRevision(gitClient, revision, false) - assert.NoError(t, err) + require.NoError(t, err) } func TestCheckoutRevisionNotPresentCallFetch(t *testing.T) { @@ -3008,7 +2996,7 @@ func TestCheckoutRevisionNotPresentCallFetch(t *testing.T) { gitClient.On("Checkout", revision, mock.Anything).Return(nil) err := checkoutRevision(gitClient, revision, false) - assert.NoError(t, err) + require.NoError(t, err) } // runGit runs a git command in the given working directory. If the command succeeds, it returns the combined standard @@ -3027,14 +3015,14 @@ func Test_walkHelmValueFilesInPath(t *testing.T) { var files []string root := "/obviously/does/not/exist" err := filepath.Walk(root, walkHelmValueFilesInPath(root, &files)) - assert.Error(t, err) + require.Error(t, err) assert.Empty(t, files) }) t.Run("values files", func(t *testing.T) { var files []string root := "./testdata/values-files" err := filepath.Walk(root, walkHelmValueFilesInPath(root, &files)) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, files, 5) }) t.Run("unrelated root", func(t *testing.T) { @@ -3042,7 +3030,7 @@ func Test_walkHelmValueFilesInPath(t *testing.T) { root := "./testdata/values-files" unrelated_root := "/different/root/path" err := filepath.Walk(root, walkHelmValueFilesInPath(unrelated_root, &files)) - assert.Error(t, err) + require.Error(t, err) }) } @@ -3091,7 +3079,7 @@ func TestGetHelmRepos_OCIDependenciesWithHelmRepo(t *testing.T) { }} helmRepos, err := getHelmRepos("./testdata/oci-dependencies", q.Repos, q.HelmRepoCreds) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, helmRepos, 1) assert.Equal(t, "test", helmRepos[0].Username) @@ -3104,7 +3092,7 @@ func TestGetHelmRepos_OCIDependenciesWithRepo(t *testing.T) { q := apiclient.ManifestRequest{Repos: []*argoappv1.Repository{{Repo: "example.com", Username: "test", Password: "test", EnableOCI: true}}, ApplicationSource: &src, HelmRepoCreds: []*argoappv1.RepoCreds{}} helmRepos, err := getHelmRepos("./testdata/oci-dependencies", q.Repos, q.HelmRepoCreds) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, helmRepos, 1) assert.Equal(t, "test", helmRepos[0].Username) @@ -3121,7 +3109,7 @@ func TestGetHelmRepo_NamedRepos(t *testing.T) { }}} helmRepos, err := getHelmRepos("./testdata/helm-with-dependencies", q.Repos, q.HelmRepoCreds) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, helmRepos, 1) assert.Equal(t, "test", helmRepos[0].Username) @@ -3137,7 +3125,7 @@ func TestGetHelmRepo_NamedReposAlias(t *testing.T) { }}} helmRepos, err := getHelmRepos("./testdata/helm-with-dependencies-alias", q.Repos, q.HelmRepoCreds) - assert.NoError(t, err) + require.NoError(t, err) assert.Len(t, helmRepos, 1) assert.Equal(t, "test-alias", helmRepos[0].Username) @@ -3291,11 +3279,11 @@ func Test_getResolvedValueFiles(t *testing.T) { t.Parallel() resolvedPaths, err := getResolvedValueFiles(path.Join(tempDir, "main-repo"), path.Join(tempDir, "main-repo"), tcc.env, []string{}, []string{tcc.rawPath}, tcc.refSources, paths, false) if !tcc.expectedErr { - assert.NoError(t, err) + require.NoError(t, err) require.Len(t, resolvedPaths, 1) assert.Equal(t, tcc.expectedPath, string(resolvedPaths[0])) } else { - assert.Error(t, err) + require.Error(t, err) assert.Empty(t, resolvedPaths) } }) @@ -3396,13 +3384,13 @@ func TestGetGitDirectories(t *testing.T) { Revision: "HEAD", } directories, err := s.GetGitDirectories(context.TODO(), dirRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.ElementsMatch(t, directories.GetPaths(), []string{"app", "app/bar", "app/foo/bar", "somedir", "app/foo"}) // do the same request again to use the cache // we only allow CheckOut to be called once in the mock directories, err = s.GetGitDirectories(context.TODO(), dirRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.ElementsMatch(t, []string{"app", "app/bar", "app/foo/bar", "somedir", "app/foo"}, directories.GetPaths()) cacheMocks.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 1, @@ -3430,13 +3418,13 @@ func TestGetGitDirectoriesWithHiddenDirSupported(t *testing.T) { Revision: "HEAD", } directories, err := s.GetGitDirectories(context.TODO(), dirRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.ElementsMatch(t, directories.GetPaths(), []string{"app", "app/bar", "app/foo/bar", "somedir", "app/foo", "app/bar/.hidden"}) // do the same request again to use the cache // we only allow CheckOut to be called once in the mock directories, err = s.GetGitDirectories(context.TODO(), dirRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.ElementsMatch(t, []string{"app", "app/bar", "app/foo/bar", "somedir", "app/foo", "app/bar/.hidden"}, directories.GetPaths()) cacheMocks.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 1, @@ -3528,18 +3516,18 @@ func TestGetGitFiles(t *testing.T) { expected := make(map[string][]byte) for _, filePath := range files { fileContents, err := os.ReadFile(filePath) - assert.NoError(t, err) + require.NoError(t, err) expected[filePath] = fileContents } fileResponse, err := s.GetGitFiles(context.TODO(), filesRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expected, fileResponse.GetMap()) // do the same request again to use the cache // we only allow LsFiles to be called once in the mock fileResponse, err = s.GetGitFiles(context.TODO(), filesRequest) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, expected, fileResponse.GetMap()) cacheMocks.mockCache.AssertCacheCalledTimes(t, &repositorymocks.CacheCallCounts{ ExternalSets: 1, @@ -3839,7 +3827,7 @@ func TestGetRefs_CacheWithLockDisabled(t *testing.T) { client, err := git.NewClient(fmt.Sprintf("file://%s", dir), git.NopCreds{}, true, false, "", git.WithCache(cacheMocks.cache, true)) require.NoError(t, err) refs, err := client.LsRefs() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, refs) assert.NotEmpty(t, refs.Branches, "Expected branches to be populated") assert.NotEmpty(t, refs.Branches[0]) @@ -3866,7 +3854,7 @@ func TestGetRefs_CacheDisabled(t *testing.T) { client, err := git.NewClient(fmt.Sprintf("file://%s", dir), git.NopCreds{}, true, false, "", git.WithCache(cacheMocks.cache, false)) require.NoError(t, err) refs, err := client.LsRefs() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, refs) assert.NotEmpty(t, refs.Branches, "Expected branches to be populated") assert.NotEmpty(t, refs.Branches[0]) @@ -3895,7 +3883,7 @@ func TestGetRefs_CacheWithLock(t *testing.T) { client, err := git.NewClient(fmt.Sprintf("file://%s", dir), git.NopCreds{}, true, false, "", git.WithCache(cacheMocks.cache, true)) require.NoError(t, err) refs, err := client.LsRefs() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, refs) assert.NotEmpty(t, refs.Branches, "Expected branches to be populated") assert.NotEmpty(t, refs.Branches[0]) @@ -3924,13 +3912,13 @@ func TestGetRefs_CacheUnlockedOnUpdateFailed(t *testing.T) { client, err := git.NewClient(repoUrl, git.NopCreds{}, true, false, "", git.WithCache(cacheMocks.cache, true)) require.NoError(t, err) refs, err := client.LsRefs() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, refs) assert.NotEmpty(t, refs.Branches, "Expected branches to be populated") assert.NotEmpty(t, refs.Branches[0]) var output [][2]string err = cacheMocks.cacheutilCache.GetItem(fmt.Sprintf("git-refs|%s|%s", repoUrl, common.CacheVersion), &output) - assert.Error(t, err, "Should be a cache miss") + require.Error(t, err, "Should be a cache miss") assert.Empty(t, output, "Expected cache to be empty for key") cacheMocks.mockCache.AssertNumberOfCalls(t, "UnlockGitReferences", 0) cacheMocks.mockCache.AssertNumberOfCalls(t, "GetOrLockGitReferences", 0) @@ -3955,7 +3943,7 @@ func TestGetRefs_CacheLockTryLockGitRefCacheError(t *testing.T) { client, err := git.NewClient(repoUrl, git.NopCreds{}, true, false, "", git.WithCache(cacheMocks.cache, true)) require.NoError(t, err) refs, err := client.LsRefs() - assert.NoError(t, err) + require.NoError(t, err) assert.NotNil(t, refs) } @@ -3984,7 +3972,7 @@ func TestGetRevisionChartDetails(t *testing.T) { Home: "test-home", Maintainers: []string{"test-maintainer"}, }) - assert.NoError(t, err) + require.NoError(t, err) chartDetails, err := service.GetRevisionChartDetails(context.Background(), &apiclient.RepoServerRevisionChartDetailsRequest{ Repo: &v1alpha1.Repository{ Repo: fmt.Sprintf("file://%s", root), @@ -3994,7 +3982,7 @@ func TestGetRevisionChartDetails(t *testing.T) { Name: "my-chart", Revision: "1.1.0", }) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "test-description", chartDetails.Description) assert.Equal(t, "test-home", chartDetails.Home) assert.Equal(t, []string{"test-maintainer"}, chartDetails.Maintainers) @@ -4013,7 +4001,7 @@ func TestVerifyCommitSignature(t *testing.T) { Return(testSignature, nil) err := verifyCommitSignature(true, mockGitClient, "abcd1234", repo) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("VerifyCommitSignature with invalid signature", func(t *testing.T) { @@ -4023,7 +4011,7 @@ func TestVerifyCommitSignature(t *testing.T) { Return("", nil) err := verifyCommitSignature(true, mockGitClient, "abcd1234", repo) - assert.Error(t, err) + require.Error(t, err) assert.Equal(t, "revision abcd1234 is not signed", err.Error()) }) @@ -4034,7 +4022,7 @@ func TestVerifyCommitSignature(t *testing.T) { Return("", fmt.Errorf("UNKNOWN signature: gpg: Unknown signature from ABCDEFGH")) err := verifyCommitSignature(true, mockGitClient, "abcd1234", repo) - assert.Error(t, err) + require.Error(t, err) assert.Equal(t, "UNKNOWN signature: gpg: Unknown signature from ABCDEFGH", err.Error()) }) @@ -4045,7 +4033,7 @@ func TestVerifyCommitSignature(t *testing.T) { Return("", fmt.Errorf("error verifying signature of commit 'abcd1234' in repo 'https://github.com/example/repo.git': failed to verify signature")) err := verifyCommitSignature(true, mockGitClient, "abcd1234", repo) - assert.Error(t, err) + require.Error(t, err) assert.Equal(t, "error verifying signature of commit 'abcd1234' in repo 'https://github.com/example/repo.git': failed to verify signature", err.Error()) }) @@ -4053,6 +4041,6 @@ func TestVerifyCommitSignature(t *testing.T) { t.Setenv("ARGOCD_GPG_ENABLED", "false") mockGitClient := &gitmocks.Client{} err := verifyCommitSignature(false, mockGitClient, "abcd1234", repo) - assert.NoError(t, err) + require.NoError(t, err) }) } diff --git a/test/e2e/app_k8s_events_test.go b/test/e2e/app_k8s_events_test.go index e306e2ddf0..7438adfe70 100644 --- a/test/e2e/app_k8s_events_test.go +++ b/test/e2e/app_k8s_events_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" . "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" @@ -31,7 +32,7 @@ func TestLabelsOnAppK8sEvents(t *testing.T) { events, err := KubeClientset.CoreV1().Events(app.Namespace).List(context.Background(), metav1.ListOptions{ FieldSelector: fmt.Sprintf("involvedObject.name=%s,involvedObject.kind=Application", app.Name), }) - assert.NoError(t, err) + require.NoError(t, err) for _, event := range events.Items { for k, v := range event.Labels { ev, found := expectedLabels[k] @@ -56,7 +57,7 @@ func TestNoLabelsOnAppK8sEvents(t *testing.T) { events, err := KubeClientset.CoreV1().Events(app.Namespace).List(context.Background(), metav1.ListOptions{ FieldSelector: fmt.Sprintf("involvedObject.name=%s,involvedObject.kind=Application", app.Name), }) - assert.NoError(t, err) + require.NoError(t, err) for _, event := range events.Items { assert.Nil(t, event.Labels) }