mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Enable scopelint Go linter (#25896)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
@@ -826,7 +826,7 @@ jobs:
|
||||
command: |
|
||||
# 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 \
|
||||
-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 \
|
||||
-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/...
|
||||
|
||||
@@ -42,6 +42,7 @@ func TestGetHomeDashboard(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
dash := dtos.DashboardFullWithMeta{}
|
||||
dash.Meta.IsHome = true
|
||||
@@ -801,6 +802,7 @@ func TestDashboardApiEndpoint(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
mock := &dashboards.FakeDashboardService{
|
||||
SaveDashboardError: tc.SaveError,
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ func TestFoldersApiEndpoint(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
mock := &fakeFolderService{
|
||||
CreateFolderError: tc.Error,
|
||||
}
|
||||
@@ -119,6 +120,7 @@ func TestFoldersApiEndpoint(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
mock := &fakeFolderService{
|
||||
UpdateFolderError: tc.Error,
|
||||
}
|
||||
|
||||
@@ -252,6 +252,7 @@ func TestLoginViewRedirect(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, c := range redirectCases {
|
||||
c := c
|
||||
hs.Cfg.AppUrl = c.appURL
|
||||
hs.Cfg.AppSubUrl = c.appSubURL
|
||||
t.Run(c.desc, func(t *testing.T) {
|
||||
@@ -420,6 +421,7 @@ func TestLoginPostRedirect(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, c := range redirectCases {
|
||||
c := c
|
||||
hs.Cfg.AppUrl = c.appURL
|
||||
hs.Cfg.AppSubUrl = c.appSubURL
|
||||
t.Run(c.desc, func(t *testing.T) {
|
||||
|
||||
@@ -189,6 +189,7 @@ func TestAccessToken(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
testCase := testCase
|
||||
Convey(testCase.desc, func() {
|
||||
clearTokenCache()
|
||||
// reset the httphandler counter
|
||||
|
||||
@@ -617,6 +617,7 @@ func TestNewDataSourceProxy_MSSQL(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
cfg := setting.Cfg{}
|
||||
plugin := plugins.DataSourcePlugin{}
|
||||
|
||||
@@ -21,9 +21,10 @@ func TestVersionComparison(t *testing.T) {
|
||||
}
|
||||
|
||||
for k, v := range upgradeablePlugins {
|
||||
key := k
|
||||
val := v
|
||||
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 {
|
||||
key := k
|
||||
val := v
|
||||
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))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -23,6 +23,7 @@ func TestProfilingDiagnostics(t *testing.T) {
|
||||
}
|
||||
|
||||
for i, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
|
||||
os.Clearenv()
|
||||
if tc.enabledEnv != "" {
|
||||
@@ -55,6 +56,7 @@ func TestTracingDiagnostics(t *testing.T) {
|
||||
}
|
||||
|
||||
for i, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
|
||||
os.Clearenv()
|
||||
if tc.enabledEnv != "" {
|
||||
|
||||
@@ -26,6 +26,7 @@ func TestParseInterval(t *testing.T) {
|
||||
}
|
||||
|
||||
for i, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(fmt.Sprintf("testcase %d", i), func(t *testing.T) {
|
||||
res, err := ParseInterval(tc.interval)
|
||||
if tc.err == "" {
|
||||
|
||||
@@ -221,6 +221,7 @@ func TestSocialAzureAD_UserInfo(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
s := &SocialAzureAD{
|
||||
SocialBase: tt.fields.SocialBase,
|
||||
|
||||
@@ -89,6 +89,7 @@ func TestSearchJSONForEmail(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
test := test
|
||||
provider.emailAttributePath = test.EmailAttributePath
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
actualResult, err := provider.searchJSONForAttr(test.EmailAttributePath, test.UserInfoJSONResponse)
|
||||
@@ -152,6 +153,7 @@ func TestSearchJSONForRole(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
test := test
|
||||
provider.roleAttributePath = test.RoleAttributePath
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
actualResult, err := provider.searchJSONForAttr(test.RoleAttributePath, test.UserInfoJSONResponse)
|
||||
@@ -304,6 +306,7 @@ func TestUserInfoSearchesForEmailAndRole(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
test := test
|
||||
provider.roleAttributePath = test.RoleAttributePath
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
response, err := json.Marshal(test.APIURLResponse)
|
||||
|
||||
@@ -21,6 +21,7 @@ func TestLogWrapper(t *testing.T) {
|
||||
}
|
||||
|
||||
for i, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(fmt.Sprintf("formatArgs testcase %d", i), func(t *testing.T) {
|
||||
res := formatArgs(tc.args...)
|
||||
assert.Exactly(t, tc.expectedResult, res)
|
||||
|
||||
@@ -177,6 +177,7 @@ func TestPluginManager_IsBackendOnlyPlugin(t *testing.T) {
|
||||
{name: "renderer", isBackendOnly: true},
|
||||
{name: "app", isBackendOnly: false},
|
||||
} {
|
||||
c := c
|
||||
t.Run(fmt.Sprintf("Plugin %s", c.name), func(t *testing.T) {
|
||||
result := pluginScanner.IsBackendOnlyPlugin(c.name)
|
||||
|
||||
|
||||
@@ -107,6 +107,7 @@ func TestParsingAlertRuleSettings(t *testing.T) {
|
||||
require.NoError(t, err, "Init should not return an error")
|
||||
|
||||
for _, tc := range tcs {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
content, err := ioutil.ReadFile(tc.file)
|
||||
require.NoError(t, err, "expected to be able to read 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} {
|
||||
p := p
|
||||
tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should be allowed", p.String())
|
||||
|
||||
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} {
|
||||
p := p
|
||||
tc := fmt.Sprintf("When updating dashboard permissions with %s permissions should NOT be allowed", p.String())
|
||||
|
||||
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} {
|
||||
p := p
|
||||
tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should be allowed", p.String())
|
||||
|
||||
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} {
|
||||
p := p
|
||||
tc := fmt.Sprintf("When updating child dashboard permissions with %s permissions should NOT be allowed", p.String())
|
||||
|
||||
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} {
|
||||
p := p
|
||||
// permission to update is higher than parent folder permission
|
||||
if p > parentFolderPermission {
|
||||
continue
|
||||
@@ -631,6 +636,7 @@ func (sc *scenarioContext) verifyUpdateChildDashboardPermissionsWithOverrideShou
|
||||
}
|
||||
|
||||
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
|
||||
if p <= parentFolderPermission {
|
||||
continue
|
||||
|
||||
@@ -78,6 +78,7 @@ func (ns *NotificationService) setFiles(
|
||||
}
|
||||
|
||||
for _, file := range msg.AttachedFiles {
|
||||
file := file
|
||||
m.Attach(file.Name, gomail.SetCopyFunc(func(writer io.Writer) error {
|
||||
_, err := writer.Write(file.Content)
|
||||
return err
|
||||
|
||||
@@ -16,6 +16,7 @@ func TestMigrations(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, testDB := range testDBs {
|
||||
testDB := testDB
|
||||
sql := `select count(*) as count from migration_log`
|
||||
r := struct {
|
||||
Count int64
|
||||
|
||||
@@ -81,6 +81,7 @@ func (mg *Migrator) Start() error {
|
||||
}
|
||||
|
||||
for _, m := range mg.migrations {
|
||||
m := m
|
||||
_, exists := logMap[m.Id()]
|
||||
if exists {
|
||||
mg.Logger.Debug("Skipping migration: Already executed", "id", m.Id())
|
||||
|
||||
@@ -71,6 +71,7 @@ func TestSqlConnectionString(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
for _, testCase := range sqlStoreTestCases {
|
||||
testCase := testCase
|
||||
Convey(testCase.name, func() {
|
||||
sqlstore := &SqlStore{}
|
||||
sqlstore.Cfg = makeSqlStoreTestConfig(testCase.dbType, testCase.dbHost)
|
||||
|
||||
@@ -275,6 +275,7 @@ func TestAppInsightsPluginRoutes(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
route, routeName, err := datasource.getPluginRoute(plugin, tt.cloudName)
|
||||
tt.Err(t, err)
|
||||
|
||||
@@ -69,6 +69,7 @@ func TestBuildingAzureLogAnalyticsQueries(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
queries, err := datasource.buildQueries(tt.queryModel, tt.timeRange)
|
||||
tt.Err(t, err)
|
||||
@@ -141,6 +142,7 @@ func TestPluginRoutes(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
route, proxypass, err := datasource.getPluginRoute(plugin, tt.cloudName)
|
||||
tt.Err(t, err)
|
||||
|
||||
@@ -122,6 +122,7 @@ func TestLogTableToFrame(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
res, err := loadLogAnalyticsTestFileWithNumber(tt.testFile)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -98,6 +98,7 @@ func TestAzureMonitorBuildQueries(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
for k, v := range commonAzureModelProps {
|
||||
tt.azureMonitorVariedProperties[k] = v
|
||||
@@ -363,6 +364,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
||||
datasource := &AzureMonitorDatasource{}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
azData, err := loadTestFile("azuremonitor/" + tt.responseFile)
|
||||
require.NoError(t, err)
|
||||
@@ -420,6 +422,7 @@ func TestFindClosestAllowIntervalMS(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
interval := findClosestAllowedIntervalMS(tt.inputInterval, tt.allowedTimeGrains)
|
||||
require.Equal(t, tt.expectedInterval, interval)
|
||||
|
||||
@@ -139,6 +139,7 @@ func TestAzureLogAnalyticsMacros(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
defaultTimeField := "TimeGenerated"
|
||||
rawQuery, err := KqlInterpolate(tt.query, timeRange, tt.kql, defaultTimeField)
|
||||
|
||||
@@ -89,6 +89,7 @@ func (e *timeSeriesQuery) execute() (*tsdb.Response, error) {
|
||||
}
|
||||
|
||||
for _, m := range q.Metrics {
|
||||
m := m
|
||||
if m.Type == countType {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@ func TestFrameToSeriesSlice(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
seriesSlice, err := FrameToSeriesSlice(tt.frame)
|
||||
tt.Err(t, err)
|
||||
|
||||
@@ -35,6 +35,7 @@ func TestInterpolate(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
query := QueryModel{
|
||||
|
||||
@@ -29,7 +29,7 @@ enable = [
|
||||
# "interfacer",
|
||||
# "misspell",
|
||||
"rowserrcheck",
|
||||
# "scopelint",
|
||||
"scopelint",
|
||||
"staticcheck",
|
||||
"structcheck",
|
||||
# "stylecheck",
|
||||
|
||||
Reference in New Issue
Block a user