Chore: Enable scopelint Go linter (#25896)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
Arve Knudsen
2020-06-29 17:04:38 +02:00
committed by GitHub
parent a5fb6bddbe
commit d1e6214a4a
28 changed files with 45 additions and 4 deletions

View File

@@ -826,7 +826,7 @@ jobs:
command: | command: |
# To save memory, run in two batches # To save memory, run in two batches
golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E deadcode -E depguard -E dogsled \ golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E deadcode -E depguard -E dogsled \
-E errcheck -E goconst -E golint -E gosec -E gosimple -E govet ./pkg/... -E errcheck -E goconst -E golint -E gosec -E gosimple -E govet -E scopelint ./pkg/...
golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E ineffassign \ golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E ineffassign \
-E rowserrcheck -E staticcheck -E structcheck -E typecheck -E unconvert -E unused -E varcheck ./pkg/... -E rowserrcheck -E staticcheck -E structcheck -E typecheck -E unconvert -E unused -E varcheck ./pkg/...
./scripts/go/bin/revive -formatter stylish -config ./scripts/go/configs/revive.toml ./pkg/... ./scripts/go/bin/revive -formatter stylish -config ./scripts/go/configs/revive.toml ./pkg/...

View File

@@ -42,6 +42,7 @@ func TestGetHomeDashboard(t *testing.T) {
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
dash := dtos.DashboardFullWithMeta{} dash := dtos.DashboardFullWithMeta{}
dash.Meta.IsHome = true dash.Meta.IsHome = true
@@ -801,6 +802,7 @@ func TestDashboardApiEndpoint(t *testing.T) {
} }
for _, tc := range testCases { for _, tc := range testCases {
tc := tc
mock := &dashboards.FakeDashboardService{ mock := &dashboards.FakeDashboardService{
SaveDashboardError: tc.SaveError, SaveDashboardError: tc.SaveError,
} }

View File

@@ -62,6 +62,7 @@ func TestFoldersApiEndpoint(t *testing.T) {
} }
for _, tc := range testCases { for _, tc := range testCases {
tc := tc
mock := &fakeFolderService{ mock := &fakeFolderService{
CreateFolderError: tc.Error, CreateFolderError: tc.Error,
} }
@@ -119,6 +120,7 @@ func TestFoldersApiEndpoint(t *testing.T) {
} }
for _, tc := range testCases { for _, tc := range testCases {
tc := tc
mock := &fakeFolderService{ mock := &fakeFolderService{
UpdateFolderError: tc.Error, UpdateFolderError: tc.Error,
} }

View File

@@ -252,6 +252,7 @@ func TestLoginViewRedirect(t *testing.T) {
} }
for _, c := range redirectCases { for _, c := range redirectCases {
c := c
hs.Cfg.AppUrl = c.appURL hs.Cfg.AppUrl = c.appURL
hs.Cfg.AppSubUrl = c.appSubURL hs.Cfg.AppSubUrl = c.appSubURL
t.Run(c.desc, func(t *testing.T) { t.Run(c.desc, func(t *testing.T) {
@@ -420,6 +421,7 @@ func TestLoginPostRedirect(t *testing.T) {
} }
for _, c := range redirectCases { for _, c := range redirectCases {
c := c
hs.Cfg.AppUrl = c.appURL hs.Cfg.AppUrl = c.appURL
hs.Cfg.AppSubUrl = c.appSubURL hs.Cfg.AppSubUrl = c.appSubURL
t.Run(c.desc, func(t *testing.T) { t.Run(c.desc, func(t *testing.T) {

View File

@@ -189,6 +189,7 @@ func TestAccessToken(t *testing.T) {
}, },
} }
for _, testCase := range testCases { for _, testCase := range testCases {
testCase := testCase
Convey(testCase.desc, func() { Convey(testCase.desc, func() {
clearTokenCache() clearTokenCache()
// reset the httphandler counter // reset the httphandler counter

View File

@@ -617,6 +617,7 @@ func TestNewDataSourceProxy_MSSQL(t *testing.T) {
}, },
} }
for _, tc := range tcs { for _, tc := range tcs {
tc := tc
t.Run(tc.description, func(t *testing.T) { t.Run(tc.description, func(t *testing.T) {
cfg := setting.Cfg{} cfg := setting.Cfg{}
plugin := plugins.DataSourcePlugin{} plugin := plugins.DataSourcePlugin{}

View File

@@ -21,9 +21,10 @@ func TestVersionComparison(t *testing.T) {
} }
for k, v := range upgradeablePlugins { for k, v := range upgradeablePlugins {
key := k
val := v val := v
t.Run(fmt.Sprintf("for %s should be true", k), func(t *testing.T) { t.Run(fmt.Sprintf("for %s should be true", k), func(t *testing.T) {
assert.True(t, shouldUpgrade(k, &val)) assert.True(t, shouldUpgrade(key, &val))
}) })
} }
}) })
@@ -40,9 +41,10 @@ func TestVersionComparison(t *testing.T) {
} }
for k, v := range shouldNotUpgrade { for k, v := range shouldNotUpgrade {
key := k
val := v val := v
t.Run(fmt.Sprintf("for %s should be false", k), func(t *testing.T) { t.Run(fmt.Sprintf("for %s should be false", k), func(t *testing.T) {
assert.False(t, shouldUpgrade(k, &val)) assert.False(t, shouldUpgrade(key, &val))
}) })
} }
}) })

View File

@@ -23,6 +23,7 @@ func TestProfilingDiagnostics(t *testing.T) {
} }
for i, tc := range tcs { for i, tc := range tcs {
tc := tc
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) { t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
os.Clearenv() os.Clearenv()
if tc.enabledEnv != "" { if tc.enabledEnv != "" {
@@ -55,6 +56,7 @@ func TestTracingDiagnostics(t *testing.T) {
} }
for i, tc := range tcs { for i, tc := range tcs {
tc := tc
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) { t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
os.Clearenv() os.Clearenv()
if tc.enabledEnv != "" { if tc.enabledEnv != "" {

View File

@@ -26,6 +26,7 @@ func TestParseInterval(t *testing.T) {
} }
for i, tc := range tcs { for i, tc := range tcs {
tc := tc
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) { t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
res, err := ParseInterval(tc.interval) res, err := ParseInterval(tc.interval)
if tc.err == "" { if tc.err == "" {

View File

@@ -221,6 +221,7 @@ func TestSocialAzureAD_UserInfo(t *testing.T) {
}, },
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
s := &SocialAzureAD{ s := &SocialAzureAD{
SocialBase: tt.fields.SocialBase, SocialBase: tt.fields.SocialBase,

View File

@@ -89,6 +89,7 @@ func TestSearchJSONForEmail(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
test := test
provider.emailAttributePath = test.EmailAttributePath provider.emailAttributePath = test.EmailAttributePath
t.Run(test.Name, func(t *testing.T) { t.Run(test.Name, func(t *testing.T) {
actualResult, err := provider.searchJSONForAttr(test.EmailAttributePath, test.UserInfoJSONResponse) actualResult, err := provider.searchJSONForAttr(test.EmailAttributePath, test.UserInfoJSONResponse)
@@ -152,6 +153,7 @@ func TestSearchJSONForRole(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
test := test
provider.roleAttributePath = test.RoleAttributePath provider.roleAttributePath = test.RoleAttributePath
t.Run(test.Name, func(t *testing.T) { t.Run(test.Name, func(t *testing.T) {
actualResult, err := provider.searchJSONForAttr(test.RoleAttributePath, test.UserInfoJSONResponse) actualResult, err := provider.searchJSONForAttr(test.RoleAttributePath, test.UserInfoJSONResponse)
@@ -304,6 +306,7 @@ func TestUserInfoSearchesForEmailAndRole(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
test := test
provider.roleAttributePath = test.RoleAttributePath provider.roleAttributePath = test.RoleAttributePath
t.Run(test.Name, func(t *testing.T) { t.Run(test.Name, func(t *testing.T) {
response, err := json.Marshal(test.APIURLResponse) response, err := json.Marshal(test.APIURLResponse)

View File

@@ -21,6 +21,7 @@ func TestLogWrapper(t *testing.T) {
} }
for i, tc := range tcs { for i, tc := range tcs {
tc := tc
t.Run(fmt.Sprintf("formatArgs testcase %d", i), func(t *testing.T) { t.Run(fmt.Sprintf("formatArgs testcase %d", i), func(t *testing.T) {
res := formatArgs(tc.args...) res := formatArgs(tc.args...)
assert.Exactly(t, tc.expectedResult, res) assert.Exactly(t, tc.expectedResult, res)

View File

@@ -177,6 +177,7 @@ func TestPluginManager_IsBackendOnlyPlugin(t *testing.T) {
{name: "renderer", isBackendOnly: true}, {name: "renderer", isBackendOnly: true},
{name: "app", isBackendOnly: false}, {name: "app", isBackendOnly: false},
} { } {
c := c
t.Run(fmt.Sprintf("Plugin %s", c.name), func(t *testing.T) { t.Run(fmt.Sprintf("Plugin %s", c.name), func(t *testing.T) {
result := pluginScanner.IsBackendOnlyPlugin(c.name) result := pluginScanner.IsBackendOnlyPlugin(c.name)

View File

@@ -107,6 +107,7 @@ func TestParsingAlertRuleSettings(t *testing.T) {
require.NoError(t, err, "Init should not return an error") require.NoError(t, err, "Init should not return an error")
for _, tc := range tcs { for _, tc := range tcs {
tc := tc
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
content, err := ioutil.ReadFile(tc.file) content, err := ioutil.ReadFile(tc.file)
require.NoError(t, err, "expected to be able to read file") require.NoError(t, err, "expected to be able to read file")

View File

@@ -372,6 +372,7 @@ func (sc *scenarioContext) verifyUpdateDashboardPermissionsShouldBeAllowed(pt pe
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should be allowed", p.String()) tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should be allowed", p.String())
Convey(tc, func() { Convey(tc, func() {
@@ -420,6 +421,7 @@ func (sc *scenarioContext) verifyUpdateDashboardPermissionsShouldNotBeAllowed(pt
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should NOT be allowed", p.String()) tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should NOT be allowed", p.String())
Convey(tc, func() { Convey(tc, func() {
@@ -460,6 +462,7 @@ func (sc *scenarioContext) verifyUpdateChildDashboardPermissionsShouldBeAllowed(
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should be allowed", p.String()) tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should be allowed", p.String())
Convey(tc, func() { Convey(tc, func() {
@@ -523,6 +526,7 @@ func (sc *scenarioContext) verifyUpdateChildDashboardPermissionsShouldNotBeAllow
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should NOT be allowed", p.String()) tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should NOT be allowed", p.String())
Convey(tc, func() { Convey(tc, func() {
@@ -586,6 +590,7 @@ func (sc *scenarioContext) verifyUpdateChildDashboardPermissionsWithOverrideShou
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
// permission to update is higher than parent folder permission // permission to update is higher than parent folder permission
if p > parentFolderPermission { if p > parentFolderPermission {
continue continue
@@ -631,6 +636,7 @@ func (sc *scenarioContext) verifyUpdateChildDashboardPermissionsWithOverrideShou
} }
for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} { for _, p := range []models.PermissionType{models.PERMISSION_ADMIN, models.PERMISSION_EDIT, models.PERMISSION_VIEW} {
p := p
// permission to update is lower than or equal to parent folder permission // permission to update is lower than or equal to parent folder permission
if p <= parentFolderPermission { if p <= parentFolderPermission {
continue continue

View File

@@ -78,6 +78,7 @@ func (ns *NotificationService) setFiles(
} }
for _, file := range msg.AttachedFiles { for _, file := range msg.AttachedFiles {
file := file
m.Attach(file.Name, gomail.SetCopyFunc(func(writer io.Writer) error { m.Attach(file.Name, gomail.SetCopyFunc(func(writer io.Writer) error {
_, err := writer.Write(file.Content) _, err := writer.Write(file.Content)
return err return err

View File

@@ -16,6 +16,7 @@ func TestMigrations(t *testing.T) {
} }
for _, testDB := range testDBs { for _, testDB := range testDBs {
testDB := testDB
sql := `select count(*) as count from migration_log` sql := `select count(*) as count from migration_log`
r := struct { r := struct {
Count int64 Count int64

View File

@@ -81,6 +81,7 @@ func (mg *Migrator) Start() error {
} }
for _, m := range mg.migrations { for _, m := range mg.migrations {
m := m
_, exists := logMap[m.Id()] _, exists := logMap[m.Id()]
if exists { if exists {
mg.Logger.Debug("Skipping migration: Already executed", "id", m.Id()) mg.Logger.Debug("Skipping migration: Already executed", "id", m.Id())

View File

@@ -71,6 +71,7 @@ func TestSqlConnectionString(t *testing.T) {
t.Helper() t.Helper()
for _, testCase := range sqlStoreTestCases { for _, testCase := range sqlStoreTestCases {
testCase := testCase
Convey(testCase.name, func() { Convey(testCase.name, func() {
sqlstore := &SqlStore{} sqlstore := &SqlStore{}
sqlstore.Cfg = makeSqlStoreTestConfig(testCase.dbType, testCase.dbHost) sqlstore.Cfg = makeSqlStoreTestConfig(testCase.dbType, testCase.dbHost)

View File

@@ -275,6 +275,7 @@ func TestAppInsightsPluginRoutes(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
route, routeName, err := datasource.getPluginRoute(plugin, tt.cloudName) route, routeName, err := datasource.getPluginRoute(plugin, tt.cloudName)
tt.Err(t, err) tt.Err(t, err)

View File

@@ -69,6 +69,7 @@ func TestBuildingAzureLogAnalyticsQueries(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
queries, err := datasource.buildQueries(tt.queryModel, tt.timeRange) queries, err := datasource.buildQueries(tt.queryModel, tt.timeRange)
tt.Err(t, err) tt.Err(t, err)
@@ -141,6 +142,7 @@ func TestPluginRoutes(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
route, proxypass, err := datasource.getPluginRoute(plugin, tt.cloudName) route, proxypass, err := datasource.getPluginRoute(plugin, tt.cloudName)
tt.Err(t, err) tt.Err(t, err)

View File

@@ -122,6 +122,7 @@ func TestLogTableToFrame(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
res, err := loadLogAnalyticsTestFileWithNumber(tt.testFile) res, err := loadLogAnalyticsTestFileWithNumber(tt.testFile)
require.NoError(t, err) require.NoError(t, err)

View File

@@ -98,6 +98,7 @@ func TestAzureMonitorBuildQueries(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
for k, v := range commonAzureModelProps { for k, v := range commonAzureModelProps {
tt.azureMonitorVariedProperties[k] = v tt.azureMonitorVariedProperties[k] = v
@@ -363,6 +364,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
datasource := &AzureMonitorDatasource{} datasource := &AzureMonitorDatasource{}
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
azData, err := loadTestFile("azuremonitor/" + tt.responseFile) azData, err := loadTestFile("azuremonitor/" + tt.responseFile)
require.NoError(t, err) require.NoError(t, err)
@@ -420,6 +422,7 @@ func TestFindClosestAllowIntervalMS(t *testing.T) {
}, },
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
interval := findClosestAllowedIntervalMS(tt.inputInterval, tt.allowedTimeGrains) interval := findClosestAllowedIntervalMS(tt.inputInterval, tt.allowedTimeGrains)
require.Equal(t, tt.expectedInterval, interval) require.Equal(t, tt.expectedInterval, interval)

View File

@@ -139,6 +139,7 @@ func TestAzureLogAnalyticsMacros(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
defaultTimeField := "TimeGenerated" defaultTimeField := "TimeGenerated"
rawQuery, err := KqlInterpolate(tt.query, timeRange, tt.kql, defaultTimeField) rawQuery, err := KqlInterpolate(tt.query, timeRange, tt.kql, defaultTimeField)

View File

@@ -89,6 +89,7 @@ func (e *timeSeriesQuery) execute() (*tsdb.Response, error) {
} }
for _, m := range q.Metrics { for _, m := range q.Metrics {
m := m
if m.Type == countType { if m.Type == countType {
continue continue
} }

View File

@@ -128,6 +128,7 @@ func TestFrameToSeriesSlice(t *testing.T) {
}, },
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
seriesSlice, err := FrameToSeriesSlice(tt.frame) seriesSlice, err := FrameToSeriesSlice(tt.frame)
tt.Err(t, err) tt.Err(t, err)

View File

@@ -35,6 +35,7 @@ func TestInterpolate(t *testing.T) {
}, },
} }
for _, tt := range tests { for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
query := QueryModel{ query := QueryModel{

View File

@@ -29,7 +29,7 @@ enable = [
# "interfacer", # "interfacer",
# "misspell", # "misspell",
"rowserrcheck", "rowserrcheck",
# "scopelint", "scopelint",
"staticcheck", "staticcheck",
"structcheck", "structcheck",
# "stylecheck", # "stylecheck",