Skip to content

Commit e631caa

Browse files
committed
fix tests
1 parent 51ae1b7 commit e631caa

File tree

5 files changed

+47
-10
lines changed

5 files changed

+47
-10
lines changed

modules/context/package.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
user_model "code.gitea.io/gitea/models/user"
1515
"code.gitea.io/gitea/modules/setting"
1616
"code.gitea.io/gitea/modules/structs"
17+
"code.gitea.io/gitea/modules/templates"
1718
)
1819

1920
// Package contains owner, access mode and optional the package descriptor
@@ -139,10 +140,14 @@ func determineAccessMode(ctx *Base, pkg *Package, doer *user_model.User) (perm.A
139140

140141
// PackageContexter initializes a package context for a request.
141142
func PackageContexter() func(next http.Handler) http.Handler {
143+
renderer := templates.HTMLRenderer()
142144
return func(next http.Handler) http.Handler {
143145
return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
144146
base, baseCleanUp := NewBaseContext(resp, req)
145-
ctx := &Context{Base: base}
147+
ctx := &Context{
148+
Base: base,
149+
Render: renderer, // it is still needed when rendering 500 page in a package handler
150+
}
146151
defer baseCleanUp()
147152

148153
ctx.Base.AppendContextValue(contextKey, ctx)

modules/test/context_tests.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package test
55

66
import (
77
gocontext "context"
8+
"io"
89
"net/http"
910
"net/http/httptest"
1011
"net/url"
@@ -16,12 +17,27 @@ import (
1617
user_model "code.gitea.io/gitea/models/user"
1718
"code.gitea.io/gitea/modules/context"
1819
"code.gitea.io/gitea/modules/git"
20+
"code.gitea.io/gitea/modules/templates"
21+
"code.gitea.io/gitea/modules/translation"
1922
"code.gitea.io/gitea/modules/web/middleware"
2023

2124
chi "github.com/go-chi/chi/v5"
2225
"github.com/stretchr/testify/assert"
2326
)
2427

28+
type mockRender struct{}
29+
30+
func (tr *mockRender) TemplateLookup(tmpl string) (templates.TemplateExecutor, error) {
31+
return nil, nil
32+
}
33+
34+
func (tr *mockRender) HTML(w io.Writer, status int, _ string, _ interface{}) error {
35+
if resp, ok := w.(http.ResponseWriter); ok {
36+
resp.WriteHeader(status)
37+
}
38+
return nil
39+
}
40+
2541
// MockContext mock context for unit tests
2642
// TODO: move this function to other packages, because it depends on "models" package
2743
func MockContext(t *testing.T, path string) *context.Context {
@@ -34,9 +50,12 @@ func MockContext(t *testing.T, path string) *context.Context {
3450
}
3551

3652
base, baseCleanUp := context.NewBaseContext(resp, req)
53+
base.Data = middleware.ContextData{}
54+
base.Locale = &translation.MockLocale{}
3755
ctx := &context.Context{
38-
Base: base,
39-
Flash: &middleware.Flash{Values: url.Values{}},
56+
Base: base,
57+
Render: &mockRender{},
58+
Flash: &middleware.Flash{Values: url.Values{}},
4059
}
4160
_ = baseCleanUp // during test, it doesn't need to do clean up. TODO: this can be improved later
4261

@@ -57,6 +76,8 @@ func MockAPIContext(t *testing.T, path string) *context.APIContext {
5776
}
5877

5978
base, baseCleanUp := context.NewBaseContext(resp, req)
79+
base.Data = middleware.ContextData{}
80+
base.Locale = &translation.MockLocale{}
6081
ctx := &context.APIContext{Base: base}
6182
_ = baseCleanUp // during test, it doesn't need to do clean up. TODO: this can be improved later
6283

modules/translation/translation.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@ type LangType struct {
3838
}
3939

4040
var (
41-
lock *sync.RWMutex
41+
lock *sync.RWMutex
42+
43+
allLangs []*LangType
44+
allLangMap map[string]*LangType
45+
4246
matcher language.Matcher
43-
allLangs []*LangType
44-
allLangMap map[string]*LangType
4547
supportedTags []language.Tag
4648
)
4749

@@ -251,3 +253,9 @@ func (l *locale) PrettyNumber(v any) string {
251253
}
252254
return l.msgPrinter.Sprintf("%v", number.Decimal(v))
253255
}
256+
257+
func init() {
258+
// prepare a default matcher, especially for tests
259+
supportedTags = []language.Tag{language.English}
260+
matcher = language.NewMatcher(supportedTags)
261+
}

routers/api/v1/misc/markup_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
api "code.gitea.io/gitea/modules/structs"
1919
"code.gitea.io/gitea/modules/util"
2020
"code.gitea.io/gitea/modules/web"
21+
"code.gitea.io/gitea/modules/web/middleware"
2122

2223
"github.com/stretchr/testify/assert"
2324
)
@@ -31,6 +32,7 @@ const (
3132
func createAPIContext(req *http.Request) (*context.APIContext, *httptest.ResponseRecorder) {
3233
resp := httptest.NewRecorder()
3334
base, baseCleanUp := context.NewBaseContext(resp, req)
35+
base.Data = middleware.ContextData{}
3436
c := &context.APIContext{Base: base}
3537
_ = baseCleanUp // during test, it doesn't need to do clean up. TODO: this can be improved later
3638

services/markup/processorhelper_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package markup
66
import (
77
"context"
88
"net/http"
9+
"net/http/httptest"
910
"testing"
1011

1112
"code.gitea.io/gitea/models/db"
@@ -36,12 +37,12 @@ func TestProcessorHelper(t *testing.T) {
3637
assert.False(t, ProcessorHelper().IsUsernameMentionable(context.Background(), userNoSuch))
3738

3839
// when using web context, use user.IsUserVisibleToViewer to check
39-
var err error
40-
giteaCtx := &gitea_context.Context{}
41-
giteaCtx.Req, err = http.NewRequest("GET", "/", nil)
40+
req, err := http.NewRequest("GET", "/", nil)
4241
assert.NoError(t, err)
42+
base, baseCleanUp := gitea_context.NewBaseContext(httptest.NewRecorder(), req)
43+
defer baseCleanUp()
44+
giteaCtx := &gitea_context.Context{Base: base}
4345

44-
giteaCtx.Doer = nil
4546
assert.True(t, ProcessorHelper().IsUsernameMentionable(giteaCtx, userPublic))
4647
assert.False(t, ProcessorHelper().IsUsernameMentionable(giteaCtx, userPrivate))
4748

0 commit comments

Comments
 (0)