diff options
-rw-r--r-- | modules/test/utils.go | 5 | ||||
-rw-r--r-- | options/locale/locale_en-US.ini | 2 | ||||
-rw-r--r-- | routers/common/errpage.go | 2 | ||||
-rw-r--r-- | routers/common/errpage_test.go | 41 | ||||
-rw-r--r-- | templates/admin/config.tmpl | 10 | ||||
-rw-r--r-- | tests/integration/admin_config_test.go | 23 |
6 files changed, 70 insertions, 13 deletions
diff --git a/modules/test/utils.go b/modules/test/utils.go index 7686d3f289..282895eaa9 100644 --- a/modules/test/utils.go +++ b/modules/test/utils.go @@ -5,9 +5,14 @@ package test import ( "net/http" + "strings" ) // RedirectURL returns the redirect URL of a http response. func RedirectURL(resp http.ResponseWriter) string { return resp.Header().Get("Location") } + +func IsNormalPageCompleted(s string) bool { + return strings.Contains(s, `<footer class="page-footer"`) && strings.Contains(s, `</html>`) +} diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 2399410287..e4fb50bbcb 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -3039,8 +3039,6 @@ config.git_disable_diff_highlight = Disable Diff Syntax Highlight config.git_max_diff_lines = Max Diff Lines (for a single file) config.git_max_diff_line_characters = Max Diff Characters (for a single line) config.git_max_diff_files = Max Diff Files (to be shown) -config.git_enable_reflogs = Enable Reflogs -config.git_reflog_expiry_time = Expiry Time config.git_gc_args = GC Arguments config.git_migrate_timeout = Migration Timeout config.git_mirror_timeout = Mirror Update Timeout diff --git a/routers/common/errpage.go b/routers/common/errpage.go index 4cf3bf8357..3d82c96deb 100644 --- a/routers/common/errpage.go +++ b/routers/common/errpage.go @@ -26,7 +26,7 @@ func RenderPanicErrorPage(w http.ResponseWriter, req *http.Request, err any) { defer func() { if err := recover(); err != nil { - log.Error("Panic occurs again when rendering error page: %v", err) + log.Error("Panic occurs again when rendering error page: %v. Stack:\n%s", err, log.Stack(2)) } }() diff --git a/routers/common/errpage_test.go b/routers/common/errpage_test.go new file mode 100644 index 0000000000..ea9a9e745c --- /dev/null +++ b/routers/common/errpage_test.go @@ -0,0 +1,41 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package common + +import ( + "context" + "errors" + "net/http" + "net/http/httptest" + "net/url" + "path/filepath" + "testing" + + "code.gitea.io/gitea/models/unittest" + "code.gitea.io/gitea/modules/test" + "code.gitea.io/gitea/modules/web/middleware" + + "github.com/stretchr/testify/assert" +) + +func TestRenderPanicErrorPage(t *testing.T) { + w := httptest.NewRecorder() + req := &http.Request{URL: &url.URL{}} + req = req.WithContext(middleware.WithContextData(context.Background())) + RenderPanicErrorPage(w, req, errors.New("fake panic error (for test only)")) + respContent := w.Body.String() + assert.Contains(t, respContent, `class="page-content status-page-500"`) + assert.Contains(t, respContent, `</html>`) + + // the 500 page doesn't have normal pages footer, it makes it easier to distinguish a normal page and a failed page. + // especially when a sub-template causes page error, the HTTP response code is still 200, + // the different "footer" is the only way to know whether a page is fully rendered without error. + assert.False(t, test.IsNormalPageCompleted(respContent)) +} + +func TestMain(m *testing.M) { + unittest.MainTest(m, &unittest.TestOptions{ + GiteaRootPath: filepath.Join("..", ".."), + }) +} diff --git a/templates/admin/config.tmpl b/templates/admin/config.tmpl index 629632a718..0c52830ab0 100644 --- a/templates/admin/config.tmpl +++ b/templates/admin/config.tmpl @@ -333,16 +333,6 @@ <div class="ui divider"></div> - <dt>{{.locale.Tr "admin.config.git_enable_reflogs"}}</dt> - <dd>{{if .Git.Reflog.Enabled}}{{svg "octicon-check"}}{{else}}{{svg "octicon-x"}}{{end}}</dd> - - {{if .Git.Reflog.Enabled}} - <dt>{{.locale.Tr "admin.config.git_reflog_expiry_time"}}</dt> - <dd>{{.locale.Tr "tool.days" .Git.Reflog.Expiration}}</dd> - {{end}} - - <div class="ui divider"></div> - <dt>{{.locale.Tr "admin.config.git_migrate_timeout"}}</dt> <dd>{{.Git.Timeout.Migrate}} {{.locale.Tr "tool.raw_seconds"}}</dd> <dt>{{.locale.Tr "admin.config.git_mirror_timeout"}}</dt> diff --git a/tests/integration/admin_config_test.go b/tests/integration/admin_config_test.go new file mode 100644 index 0000000000..860a92d6a3 --- /dev/null +++ b/tests/integration/admin_config_test.go @@ -0,0 +1,23 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package integration + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/modules/test" + "code.gitea.io/gitea/tests" + + "github.com/stretchr/testify/assert" +) + +func TestAdminConfig(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + session := loginUser(t, "user1") + req := NewRequest(t, "GET", "/admin/config") + resp := session.MakeRequest(t, req, http.StatusOK) + assert.True(t, test.IsNormalPageCompleted(resp.Body.String())) +} |