chore(lint): Add exceptions for dbfs_model and unittest (#10275)

Thanks a lot to @floss4good who pointed this out in the comments of
#10253!

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10275
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: floss4good <floss4good@noreply.codeberg.org>
Co-authored-by: nachtjasmin <nachtjasmin@posteo.de>
Co-committed-by: nachtjasmin <nachtjasmin@posteo.de>
This commit is contained in:
nachtjasmin 2025-12-09 14:34:06 +01:00 committed by Gusted
parent f43d48d5c8
commit 70166de15a
11 changed files with 38 additions and 54 deletions

View file

@ -50,36 +50,20 @@ linters:
importas:
alias:
# Specific overrides that would violate the default rules further below.
- pkg: forgejo.org/models/actions
alias: actions_model
- pkg: forgejo.org/models/activities
alias: activities_model
- pkg: forgejo.org/models/db
alias: ""
- pkg: forgejo.org/models/issues
alias: issues_model
- pkg: forgejo.org/models/organization
alias: org_model
- pkg: forgejo.org/models/packages
alias: packages_model
- pkg: forgejo.org/services/actions
alias: actions_service
- pkg: forgejo.org/services/context
alias: app_context
- pkg: forgejo.org/services/doctor
alias: doctor
- pkg: forgejo.org/services/packages
alias: packages_service
- pkg: forgejo.org/services/repository
alias: repo_service
# Make sure that we follow a consistent naming for model and service aliases.
# The \w+? syntax is the RE2 syntax for: one or more \w, prefer fewer
#
# It's used to make sure that if the model has a plural name, e.g. "issues", it's imported with the singular
# name (e.g. "issue") nonetheless.
- pkg: 'forgejo.org/(model|service)s/(\w+?)s?'
- pkg: 'forgejo.org/(model|service)s/(\w+)'
alias: '${2}_${1}'
revive:

View file

@ -6,7 +6,7 @@ package avatars_test
import (
"testing"
avatar_model "forgejo.org/models/avatars"
avatars_model "forgejo.org/models/avatars"
"forgejo.org/models/db"
system_model "forgejo.org/models/system"
"forgejo.org/modules/setting"
@ -34,11 +34,11 @@ func enableGravatar(t *testing.T) {
func TestHashEmail(t *testing.T) {
assert.Equal(t,
"d41d8cd98f00b204e9800998ecf8427e",
avatar_model.HashEmail(""),
avatars_model.HashEmail(""),
)
assert.Equal(t,
"353cbad9b58e69c96154ad99f92bedc7",
avatar_model.HashEmail("gitea@example.com"),
avatars_model.HashEmail("gitea@example.com"),
)
}
@ -48,12 +48,12 @@ func TestSizedAvatarLink(t *testing.T) {
disableGravatar(t)
config.GetDynGetter().InvalidateCache()
assert.Equal(t, "/testsuburl/assets/img/avatar_default.png",
avatar_model.GenerateEmailAvatarFastLink(db.DefaultContext, "gitea@example.com", 100))
avatars_model.GenerateEmailAvatarFastLink(db.DefaultContext, "gitea@example.com", 100))
enableGravatar(t)
config.GetDynGetter().InvalidateCache()
assert.Equal(t,
"https://secure.gravatar.com/avatar/353cbad9b58e69c96154ad99f92bedc7?d=identicon&s=100",
avatar_model.GenerateEmailAvatarFastLink(db.DefaultContext, "gitea@example.com", 100),
avatars_model.GenerateEmailAvatarFastLink(db.DefaultContext, "gitea@example.com", 100),
)
}

View file

@ -17,7 +17,7 @@ import (
"forgejo.org/routers/api/v1/utils"
actions_service "forgejo.org/services/actions"
"forgejo.org/services/context"
secret_service "forgejo.org/services/secrets"
secrets_service "forgejo.org/services/secrets"
)
// ListActionsSecrets lists actions secrets of an organization
@ -106,7 +106,7 @@ func (Action) CreateOrUpdateSecret(ctx *context.APIContext) {
opt := web.GetForm(ctx).(*api.CreateOrUpdateSecretOption)
_, created, err := secret_service.CreateOrUpdateSecret(ctx, ctx.Org.Organization.ID, 0, ctx.Params("secretname"), opt.Data)
_, created, err := secrets_service.CreateOrUpdateSecret(ctx, ctx.Org.Organization.ID, 0, ctx.Params("secretname"), opt.Data)
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "CreateOrUpdateSecret", err)
@ -153,7 +153,7 @@ func (Action) DeleteSecret(ctx *context.APIContext) {
// "404":
// "$ref": "#/responses/notFound"
err := secret_service.DeleteSecretByName(ctx, ctx.Org.Organization.ID, 0, ctx.Params("secretname"))
err := secrets_service.DeleteSecretByName(ctx, ctx.Org.Organization.ID, 0, ctx.Params("secretname"))
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "DeleteSecret", err)

View file

@ -19,7 +19,7 @@ import (
actions_service "forgejo.org/services/actions"
"forgejo.org/services/context"
"forgejo.org/services/convert"
secret_service "forgejo.org/services/secrets"
secrets_service "forgejo.org/services/secrets"
)
// ListActionsSecrets list an repo's actions secrets
@ -122,7 +122,7 @@ func (Action) CreateOrUpdateSecret(ctx *context.APIContext) {
opt := web.GetForm(ctx).(*api.CreateOrUpdateSecretOption)
_, created, err := secret_service.CreateOrUpdateSecret(ctx, 0, repo.ID, ctx.Params("secretname"), opt.Data)
_, created, err := secrets_service.CreateOrUpdateSecret(ctx, 0, repo.ID, ctx.Params("secretname"), opt.Data)
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "CreateOrUpdateSecret", err)
@ -176,7 +176,7 @@ func (Action) DeleteSecret(ctx *context.APIContext) {
repo := ctx.Repo.Repository
err := secret_service.DeleteSecretByName(ctx, 0, repo.ID, ctx.Params("secretname"))
err := secrets_service.DeleteSecretByName(ctx, 0, repo.ID, ctx.Params("secretname"))
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "DeleteSecret", err)

View file

@ -15,7 +15,7 @@ import (
"forgejo.org/routers/api/v1/utils"
actions_service "forgejo.org/services/actions"
"forgejo.org/services/context"
secret_service "forgejo.org/services/secrets"
secrets_service "forgejo.org/services/secrets"
)
// create or update one secret of the user scope
@ -53,7 +53,7 @@ func CreateOrUpdateSecret(ctx *context.APIContext) {
opt := web.GetForm(ctx).(*api.CreateOrUpdateSecretOption)
_, created, err := secret_service.CreateOrUpdateSecret(ctx, ctx.Doer.ID, 0, ctx.Params("secretname"), opt.Data)
_, created, err := secrets_service.CreateOrUpdateSecret(ctx, ctx.Doer.ID, 0, ctx.Params("secretname"), opt.Data)
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "CreateOrUpdateSecret", err)
@ -99,7 +99,7 @@ func DeleteSecret(ctx *context.APIContext) {
// "404":
// "$ref": "#/responses/notFound"
err := secret_service.DeleteSecretByName(ctx, ctx.Doer.ID, 0, ctx.Params("secretname"))
err := secrets_service.DeleteSecretByName(ctx, ctx.Doer.ID, 0, ctx.Params("secretname"))
if err != nil {
if errors.Is(err, util.ErrInvalidArgument) {
ctx.Error(http.StatusBadRequest, "DeleteSecret", err)

View file

@ -44,7 +44,7 @@ import (
"forgejo.org/services/mailer"
mailer_incoming "forgejo.org/services/mailer/incoming"
markup_service "forgejo.org/services/markup"
migration_service "forgejo.org/services/migrations"
migrations_service "forgejo.org/services/migrations"
mirror_service "forgejo.org/services/mirror"
pull_service "forgejo.org/services/pull"
release_service "forgejo.org/services/release"
@ -157,7 +157,7 @@ func InitWebInstalled(ctx context.Context) {
mustInit(pull_service.Init)
mustInit(automerge.Init)
mustInit(task.Init)
mustInit(migration_service.Init)
mustInit(migrations_service.Init)
eventsource.GetManager().Init()
mustInitCtx(ctx, mailer_incoming.Init)

View file

@ -8,14 +8,14 @@ import (
actions_model "forgejo.org/models/actions"
"forgejo.org/models/db"
unittest_model "forgejo.org/models/unittest"
"forgejo.org/models/unittest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func Test_loadIsRefDeleted(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
runs, total, err := db.FindAndCount[actions_model.ActionRun](db.DefaultContext,
actions_model.FindRunOptions{RepoID: 4, Ref: "refs/heads/test"})

View file

@ -11,7 +11,7 @@ import (
actions_model "forgejo.org/models/actions"
repo_model "forgejo.org/models/repo"
unittest_model "forgejo.org/models/unittest"
"forgejo.org/models/unittest"
"forgejo.org/modules/json"
"forgejo.org/modules/translation"
"forgejo.org/modules/web"
@ -22,9 +22,9 @@ import (
)
func TestActionsViewGetRunByID(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
repo := unittest_model.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerID: 5, ID: 4})
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerID: 5, ID: 4})
for _, testCase := range []struct {
name string
@ -63,7 +63,7 @@ func TestActionsViewGetRunByID(t *testing.T) {
}
func TestActionsViewArtifactsFind(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
for _, testCase := range []struct {
name string
@ -95,7 +95,7 @@ func TestActionsViewArtifactsFind(t *testing.T) {
}
func TestActionsViewArtifactsFindByNameOrID(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
for _, testCase := range []struct {
name string
@ -223,7 +223,7 @@ func baseExpectedViewResponse() *ViewResponse {
}
func TestActionsViewViewPost(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
tests := []struct {
name string
@ -383,7 +383,7 @@ func TestActionsViewViewPost(t *testing.T) {
}
func TestActionsViewRedirectToLatestAttempt(t *testing.T) {
unittest_model.PrepareTestEnv(t)
unittest.PrepareTestEnv(t)
tests := []struct {
name string

View file

@ -11,7 +11,7 @@ import (
"forgejo.org/modules/web"
"forgejo.org/services/context"
"forgejo.org/services/forms"
secret_service "forgejo.org/services/secrets"
secrets_service "forgejo.org/services/secrets"
)
func SetSecretsContext(ctx *context.Context, ownerID, repoID int64) {
@ -27,7 +27,7 @@ func SetSecretsContext(ctx *context.Context, ownerID, repoID int64) {
func PerformSecretsPost(ctx *context.Context, ownerID, repoID int64, redirectURL string) {
form := web.GetForm(ctx).(*forms.AddSecretForm)
s, _, err := secret_service.CreateOrUpdateSecret(ctx, ownerID, repoID, form.Name, util.ReserveLineBreakForTextarea(form.Data))
s, _, err := secrets_service.CreateOrUpdateSecret(ctx, ownerID, repoID, form.Name, util.ReserveLineBreakForTextarea(form.Data))
if err != nil {
log.Error("CreateOrUpdateSecret failed: %v", err)
ctx.JSONError(ctx.Tr("secrets.creation.failed"))
@ -41,7 +41,7 @@ func PerformSecretsPost(ctx *context.Context, ownerID, repoID int64, redirectURL
func PerformSecretsDelete(ctx *context.Context, ownerID, repoID int64, redirectURL string) {
id := ctx.FormInt64("id")
err := secret_service.DeleteSecretByID(ctx, ownerID, repoID, id)
err := secrets_service.DeleteSecretByID(ctx, ownerID, repoID, id)
if err != nil {
log.Error("DeleteSecretByID(%d) failed: %v", id, err)
ctx.JSONError(ctx.Tr("secrets.deletion.failed"))

View file

@ -8,7 +8,7 @@ import (
"time"
actions_model "forgejo.org/models/actions"
dbf_model "forgejo.org/models/dbfs"
dbfs_model "forgejo.org/models/dbfs"
"forgejo.org/models/unittest"
"forgejo.org/modules/test"
"forgejo.org/modules/timeutil"
@ -50,19 +50,19 @@ func TestServicesActions_transferLingeringLogs(t *testing.T) {
}
lingeringLogIDs := []int64{1, 4, 5}
assert.True(t, unittest.BeanExists(t, &dbf_model.DbfsMeta{}, builder.In("id", []any{lingeringLogIDs}...)))
assert.True(t, unittest.BeanExists(t, &dbfs_model.DbfsMeta{}, builder.In("id", []any{lingeringLogIDs}...)))
// first pass transfer logs for transferLingeringLogsMax tasks
require.NoError(t, transferLingeringLogs(t.Context(), transferLingeringLogsOpts(now)))
assert.True(t, unittest.BeanExists(t, &dbf_model.DbfsMeta{}, builder.In("id", []any{lingeringLogIDs[transferLingeringLogsMax:]}...)))
assert.True(t, unittest.BeanExists(t, &dbfs_model.DbfsMeta{}, builder.In("id", []any{lingeringLogIDs[transferLingeringLogsMax:]}...)))
for _, lingeringLogID := range lingeringLogIDs[:transferLingeringLogsMax] {
unittest.AssertNotExistsBean(t, &dbf_model.DbfsMeta{ID: lingeringLogID})
unittest.AssertNotExistsBean(t, &dbfs_model.DbfsMeta{ID: lingeringLogID})
}
// second pass transfer logs for the remainder tasks and there are none left
require.NoError(t, transferLingeringLogs(t.Context(), transferLingeringLogsOpts(now)))
for _, lingeringLogID := range lingeringLogIDs {
unittest.AssertNotExistsBean(t, &dbf_model.DbfsMeta{ID: lingeringLogID})
unittest.AssertNotExistsBean(t, &dbfs_model.DbfsMeta{ID: lingeringLogID})
}
// third pass is happilly doing nothing

View file

@ -11,11 +11,11 @@ import (
actions_model "forgejo.org/models/actions"
"forgejo.org/modules/log"
"forgejo.org/modules/util"
secret_service "forgejo.org/services/secrets"
secrets_service "forgejo.org/services/secrets"
)
func CreateVariable(ctx context.Context, ownerID, repoID int64, name, data string) (*actions_model.ActionVariable, error) {
if err := secret_service.ValidateName(name); err != nil {
if err := secrets_service.ValidateName(name); err != nil {
return nil, err
}
@ -32,7 +32,7 @@ func CreateVariable(ctx context.Context, ownerID, repoID int64, name, data strin
}
func UpdateVariable(ctx context.Context, variableID, ownerID, repoID int64, name, data string) (bool, error) {
if err := secret_service.ValidateName(name); err != nil {
if err := secrets_service.ValidateName(name); err != nil {
return false, err
}
@ -50,7 +50,7 @@ func UpdateVariable(ctx context.Context, variableID, ownerID, repoID int64, name
}
func DeleteVariableByName(ctx context.Context, ownerID, repoID int64, name string) error {
if err := secret_service.ValidateName(name); err != nil {
if err := secrets_service.ValidateName(name); err != nil {
return err
}