diff --git a/src/.golangci.yml b/src/.golangci.yml index f0ce30498..377c140d8 100644 --- a/src/.golangci.yml +++ b/src/.golangci.yml @@ -44,6 +44,9 @@ linters-settings: - '(errors|fmt)\.(New|Stack|Wrap|Error)f?\((# error handling should use clues pkg)?' # Avoid Warn-level logging in favor of Info or Error. - 'Warn[wf]?\((# logging should use Info or Error)?' + # Prefer suite.Run(name, func() {}) for subtests as testify has it instead + # of suite.T().Run(name, func(t *testing.T) {}). + - '(T\(\)|\st[a-zA-Z0-9]*)\.Run(# prefer testify suite.Run(name, func()) )?' lll: line-length: 120 revive: diff --git a/src/internal/connector/sharepoint/pageInfo_test.go b/src/internal/connector/sharepoint/pageInfo_test.go index d05d30a24..924a9eed2 100644 --- a/src/internal/connector/sharepoint/pageInfo_test.go +++ b/src/internal/connector/sharepoint/pageInfo_test.go @@ -1,8 +1,6 @@ package sharepoint import ( - "testing" - "github.com/stretchr/testify/assert" "github.com/alcionai/corso/src/internal/connector/graph/betasdk/models" @@ -37,7 +35,9 @@ func (suite *SharePointInfoSuite) TestSharePointInfo_Pages() { }, } for _, test := range tests { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + paged, expected := test.pageAndDeets() info := sharePointPageInfo(paged, "", 0) assert.Equal(t, expected.ItemType, info.ItemType) diff --git a/src/internal/operations/manifests_test.go b/src/internal/operations/manifests_test.go index 47c46a1fe..86861d8c4 100644 --- a/src/internal/operations/manifests_test.go +++ b/src/internal/operations/manifests_test.go @@ -687,7 +687,8 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() { if test.expectNilMans { expectMans = nil } - assert.Equal(t, expectMans, mans) + + assert.ElementsMatch(t, expectMans, mans) expect, got := []string{}, []string{} diff --git a/src/pkg/account/account_test.go b/src/pkg/account/account_test.go index 355ec49a3..01279666a 100644 --- a/src/pkg/account/account_test.go +++ b/src/pkg/account/account_test.go @@ -43,7 +43,9 @@ func (suite *AccountSuite) TestNewAccount() { {"m365 w/ error", ProviderM365, testConfig{"configVal", "", assert.AnError}, assert.Error}, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + s, err := NewAccount(test.p, test.c) test.errCheck(t, err, clues.ToCore(err)) // remaining tests are dependent upon error-free state diff --git a/src/pkg/account/m365_test.go b/src/pkg/account/m365_test.go index 44cf49c94..25db445a4 100644 --- a/src/pkg/account/m365_test.go +++ b/src/pkg/account/m365_test.go @@ -82,9 +82,9 @@ func (suite *M365CfgSuite) TestAccount_M365Config_InvalidCases() { {"missing tenant ID", makeTestM365Cfg("cid", "cs", "")}, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { _, err := account.NewAccount(account.ProviderUnknown, test.cfg) - assert.Error(t, err) + assert.Error(suite.T(), err) }) } @@ -113,7 +113,9 @@ func (suite *M365CfgSuite) TestAccount_M365Config_InvalidCases() { }, } for _, test := range table2 { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + st, err := account.NewAccount(account.ProviderUnknown, goodM365Config) assert.NoError(t, err, clues.ToCore(err)) test.amend(st) diff --git a/src/pkg/filters/filters_test.go b/src/pkg/filters/filters_test.go index 7ee32e3e0..060b97744 100644 --- a/src/pkg/filters/filters_test.go +++ b/src/pkg/filters/filters_test.go @@ -191,7 +191,9 @@ func (suite *FiltersSuite) TestIn_MultipleTargets() { {"oof", assert.False, assert.True}, } for _, test := range table { - suite.T().Run(test.input, func(t *testing.T) { + suite.Run(test.input, func() { + t := suite.T() + test.expectF(t, f.Compare(test.input), "filter") test.expectNF(t, nf.Compare(test.input), "negated filter") }) @@ -213,7 +215,9 @@ func (suite *FiltersSuite) TestIn_MultipleTargets_Joined() { {"arf,oof", assert.False, assert.True}, } for _, test := range table { - suite.T().Run(test.input, func(t *testing.T) { + suite.Run(test.input, func() { + t := suite.T() + test.expectF(t, f.Compare(test.input), "filter") test.expectNF(t, nf.Compare(test.input), "negated filter") }) diff --git a/src/pkg/path/path_test.go b/src/pkg/path/path_test.go index 4c945553a..51f5801cf 100644 --- a/src/pkg/path/path_test.go +++ b/src/pkg/path/path_test.go @@ -253,11 +253,11 @@ func (suite *PathUnitSuite) TestEscapedFailure() { target := "i_s" for c := range charactersToEscape { - suite.T().Run(fmt.Sprintf("Unescaped-%c", c), func(t *testing.T) { + suite.Run(fmt.Sprintf("Unescaped-%c", c), func() { tmp := strings.ReplaceAll(target, "_", string(c)) _, err := Builder{}.UnescapeAndAppend("this", tmp, "path") - assert.Errorf(t, err, "path with unescaped %s did not error", string(c)) + assert.Errorf(suite.T(), err, "path with unescaped %s did not error", string(c)) }) } } @@ -267,12 +267,12 @@ func (suite *PathUnitSuite) TestBadEscapeSequenceErrors() { notEscapes := []rune{'a', 'b', '#', '%'} for _, c := range notEscapes { - suite.T().Run(fmt.Sprintf("Escaped-%c", c), func(t *testing.T) { + suite.Run(fmt.Sprintf("Escaped-%c", c), func() { tmp := strings.ReplaceAll(target, "_", string(c)) _, err := Builder{}.UnescapeAndAppend("this", tmp, "path") assert.Errorf( - t, + suite.T(), err, "path with bad escape sequence %c%c did not error", escapeCharacter, @@ -285,14 +285,14 @@ func (suite *PathUnitSuite) TestTrailingEscapeChar() { base := []string{"this", "is", "a", "path"} for i := 0; i < len(base); i++ { - suite.T().Run(fmt.Sprintf("Element%v", i), func(t *testing.T) { + suite.Run(fmt.Sprintf("Element%v", i), func() { path := make([]string, len(base)) copy(path, base) path[i] = path[i] + string(escapeCharacter) _, err := Builder{}.UnescapeAndAppend(path...) assert.Error( - t, + suite.T(), err, "path with trailing escape character did not error") }) @@ -673,9 +673,10 @@ func (suite *PathUnitSuite) TestFromString() { for service, cats := range serviceCategories { for cat := range cats { for _, item := range isItem { - suite.T().Run(fmt.Sprintf("%s-%s-%s", service, cat, item.name), func(t1 *testing.T) { + suite.Run(fmt.Sprintf("%s-%s-%s", service, cat, item.name), func() { for _, test := range table { - t1.Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() testPath := fmt.Sprintf(test.unescapedPath, service, cat) p, err := FromDataLayerPath(testPath, item.isItem) diff --git a/src/pkg/selectors/exchange_test.go b/src/pkg/selectors/exchange_test.go index 8d1dc3d8a..29b144002 100644 --- a/src/pkg/selectors/exchange_test.go +++ b/src/pkg/selectors/exchange_test.go @@ -467,7 +467,9 @@ func (suite *ExchangeSelectorSuite) TestExchangeBackup_Scopes() { for _, sc := range scopes { cat := sc.Category() - suite.T().Run(cat.String(), func(t *testing.T) { + suite.Run(cat.String(), func() { + t := suite.T() + switch sc.Category() { case ExchangeContactFolder: assert.True(t, sc.IsAny(ExchangeContact)) @@ -506,13 +508,13 @@ func (suite *ExchangeSelectorSuite) TestExchangeScope_Category() { {ExchangeUser, ExchangeCategoryUnknown, assert.NotEqual}, } for _, test := range table { - suite.T().Run(test.is.String()+test.expect.String(), func(t *testing.T) { + suite.Run(test.is.String()+test.expect.String(), func() { eb := NewExchangeBackup(Any()) eb.Includes = []scope{ {scopeKeyCategory: filters.Identity(test.is.String())}, } scope := eb.Scopes()[0] - test.check(t, test.expect, scope.Category()) + test.check(suite.T(), test.expect, scope.Category()) }) } } @@ -549,13 +551,13 @@ func (suite *ExchangeSelectorSuite) TestExchangeScope_IncludesCategory() { {ExchangeUser, ExchangeEventCalendar, assert.True}, } for _, test := range table { - suite.T().Run(test.is.String()+test.expect.String(), func(t *testing.T) { + suite.Run(test.is.String()+test.expect.String(), func() { eb := NewExchangeBackup(Any()) eb.Includes = []scope{ {scopeKeyCategory: filters.Identity(test.is.String())}, } scope := eb.Scopes()[0] - test.check(t, scope.IncludesCategory(test.expect)) + test.check(suite.T(), scope.IncludesCategory(test.expect)) }) } } @@ -574,7 +576,9 @@ func (suite *ExchangeSelectorSuite) TestExchangeScope_Get() { ExchangeMailFolder, } for _, test := range table { - suite.T().Run(test.String(), func(t *testing.T) { + suite.Run(test.String(), func() { + t := suite.T() + for _, sc := range scopes { switch sc.Category() { case ExchangeContactFolder: @@ -1449,8 +1453,8 @@ func (suite *ExchangeSelectorSuite) TestExchangeCategory_leafCat() { {ExchangeEvent, ExchangeEvent}, } for _, test := range table { - suite.T().Run(test.cat.String(), func(t *testing.T) { - assert.Equal(t, test.expect, test.cat.leafCat(), test.cat.String()) + suite.Run(test.cat.String(), func() { + assert.Equal(suite.T(), test.expect, test.cat.leafCat(), test.cat.String()) }) } } @@ -1484,7 +1488,8 @@ func (suite *ExchangeSelectorSuite) TestExchangeCategory_PathValues() { {ExchangeMail, mailPath, mailMap}, } for _, test := range table { - suite.T().Run(string(test.cat), func(t *testing.T) { + suite.Run(string(test.cat), func() { + t := suite.T() ent := details.DetailsEntry{ RepoRef: test.path.String(), ShortRef: "short", @@ -1516,8 +1521,8 @@ func (suite *ExchangeSelectorSuite) TestExchangeCategory_PathKeys() { {ExchangeUser, user}, } for _, test := range table { - suite.T().Run(string(test.cat), func(t *testing.T) { - assert.Equal(t, test.cat.pathKeys(), test.expect) + suite.Run(string(test.cat), func() { + assert.Equal(suite.T(), test.cat.pathKeys(), test.expect) }) } } @@ -1584,8 +1589,8 @@ func (suite *ExchangeSelectorSuite) TestCategory_PathType() { {ExchangeInfoEventSubject, path.EventsCategory}, } for _, test := range table { - suite.T().Run(test.cat.String(), func(t *testing.T) { - assert.Equal(t, test.pathType, test.cat.PathType()) + suite.Run(test.cat.String(), func() { + assert.Equal(suite.T(), test.pathType, test.cat.PathType()) }) } } diff --git a/src/pkg/selectors/onedrive_test.go b/src/pkg/selectors/onedrive_test.go index 6b0c42f56..ff83e4efb 100644 --- a/src/pkg/selectors/onedrive_test.go +++ b/src/pkg/selectors/onedrive_test.go @@ -354,8 +354,8 @@ func (suite *OneDriveSelectorSuite) TestCategory_PathType() { {FileInfoModifiedBefore, path.FilesCategory}, } for _, test := range table { - suite.T().Run(test.cat.String(), func(t *testing.T) { - assert.Equal(t, test.pathType, test.cat.PathType()) + suite.Run(test.cat.String(), func() { + assert.Equal(suite.T(), test.pathType, test.cat.PathType()) }) } } diff --git a/src/pkg/selectors/sharepoint_test.go b/src/pkg/selectors/sharepoint_test.go index e0ed58131..9f154a4ae 100644 --- a/src/pkg/selectors/sharepoint_test.go +++ b/src/pkg/selectors/sharepoint_test.go @@ -73,7 +73,9 @@ func (suite *SharePointSelectorSuite) TestSharePointSelector_AllData() { cat = spsc.Category() ) - suite.T().Run(test.name+"-"+cat.String(), func(t *testing.T) { + suite.Run(test.name+"-"+cat.String(), func() { + t := suite.T() + switch cat { case SharePointLibraryItem: scopeMustHave( @@ -471,8 +473,8 @@ func (suite *SharePointSelectorSuite) TestCategory_PathType() { {SharePointList, path.ListsCategory}, } for _, test := range table { - suite.T().Run(test.cat.String(), func(t *testing.T) { - assert.Equal(t, test.pathType, test.cat.PathType()) + suite.Run(test.cat.String(), func() { + assert.Equal(suite.T(), test.pathType, test.cat.PathType()) }) } } diff --git a/src/pkg/storage/common_test.go b/src/pkg/storage/common_test.go index 42deaf608..02668e611 100644 --- a/src/pkg/storage/common_test.go +++ b/src/pkg/storage/common_test.go @@ -37,8 +37,8 @@ func (suite *CommonCfgSuite) TestCommonConfig_Config() { {"common_corsoPassphrase", cfg.CorsoPassphrase}, } for _, test := range table { - suite.T().Run(test.key, func(t *testing.T) { - assert.Equal(t, test.expect, c[test.key]) + suite.Run(test.key, func() { + assert.Equal(suite.T(), test.expect, c[test.key]) }) } } @@ -64,9 +64,9 @@ func (suite *CommonCfgSuite) TestStorage_CommonConfig_InvalidCases() { {"missing passphrase", storage.CommonConfig{}}, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { _, err := storage.NewStorage(storage.ProviderUnknown, test.cfg) - assert.Error(t, err) + assert.Error(suite.T(), err) }) } @@ -83,7 +83,9 @@ func (suite *CommonCfgSuite) TestStorage_CommonConfig_InvalidCases() { }, } for _, test := range table2 { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + st, err := storage.NewStorage(storage.ProviderUnknown, goodCommonConfig) assert.NoError(t, err, clues.ToCore(err)) test.amend(st) diff --git a/src/pkg/storage/s3_test.go b/src/pkg/storage/s3_test.go index 776df19b3..b66ebeb25 100644 --- a/src/pkg/storage/s3_test.go +++ b/src/pkg/storage/s3_test.go @@ -85,9 +85,9 @@ func (suite *S3CfgSuite) TestStorage_S3Config_invalidCases() { {"missing bucket", makeTestS3Cfg("", "end", "pre/")}, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { _, err := NewStorage(ProviderUnknown, test.cfg) - assert.Error(t, err) + assert.Error(suite.T(), err) }) } @@ -104,7 +104,9 @@ func (suite *S3CfgSuite) TestStorage_S3Config_invalidCases() { }, } for _, test := range table2 { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + st, err := NewStorage(ProviderUnknown, goodS3Config) assert.NoError(t, err, clues.ToCore(err)) test.amend(st) @@ -149,7 +151,9 @@ func (suite *S3CfgSuite) TestStorage_S3Config_StringConfig() { }, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + result, err := test.input.StringConfig() require.NoError(t, err, clues.ToCore(err)) assert.Equal(t, test.expect, result) diff --git a/src/pkg/storage/storage_test.go b/src/pkg/storage/storage_test.go index a1a7b3fe3..2c0850688 100644 --- a/src/pkg/storage/storage_test.go +++ b/src/pkg/storage/storage_test.go @@ -38,7 +38,9 @@ func (suite *StorageSuite) TestNewStorage() { {"s3 w/ error", ProviderS3, testConfig{"configVal", assert.AnError}, assert.Error}, } for _, test := range table { - suite.T().Run(test.name, func(t *testing.T) { + suite.Run(test.name, func() { + t := suite.T() + s, err := NewStorage(test.p, test.c) test.errCheck(t, err, clues.ToCore(err))