summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/db/iterate_test.go2
-rw-r--r--models/fixtures/repo_unit.yml6
-rw-r--r--models/fixtures/repository.yml27
-rw-r--r--models/fixtures/user.yml2
-rw-r--r--models/repo/repo_list_test.go6
-rw-r--r--routers/web/user/home_test.go2
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/HEAD1
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/config6
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/description1
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive15
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive.d/gitea2
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive15
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive.d/gitea2
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/update14
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/hooks/update.d/gitea2
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/info/exclude6
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/objects/06/0d5c2acd8bf4b6f14010acd1a73d73392ec46ebin0 -> 56 bytes
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/objects/45/14a93050edb2c3165bdd0a3c03be063e879e68bin0 -> 50 bytes
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/objects/c9/61cc4d1ba6b7ee1ba228a9a02b00b7746d8033bin0 -> 789 bytes
-rw-r--r--tests/gitea-repositories-meta/user30/renderer.git/packed-refs2
-rw-r--r--tests/integration/api_repo_test.go6
-rw-r--r--tests/integration/markup_external_test.go40
-rw-r--r--tests/sqlite.ini.tmpl7
-rw-r--r--tools/external_renderer.go23
24 files changed, 178 insertions, 9 deletions
diff --git a/models/db/iterate_test.go b/models/db/iterate_test.go
index b0ea8b53ef..57b1bd3cd1 100644
--- a/models/db/iterate_test.go
+++ b/models/db/iterate_test.go
@@ -25,7 +25,7 @@ func TestIterate(t *testing.T) {
return nil
})
assert.NoError(t, err)
- assert.EqualValues(t, 79, repoCnt)
+ assert.EqualValues(t, 80, repoCnt)
err = db.Iterate(db.DefaultContext, nil, func(ctx context.Context, repoUnit *repo_model.RepoUnit) error {
reopUnit2 := repo_model.RepoUnit{ID: repoUnit.ID}
diff --git a/models/fixtures/repo_unit.yml b/models/fixtures/repo_unit.yml
index 59ab618340..73db47218b 100644
--- a/models/fixtures/repo_unit.yml
+++ b/models/fixtures/repo_unit.yml
@@ -544,3 +544,9 @@
repo_id: 51
type: 2
created_unix: 946684810
+
+-
+ id: 80
+ repo_id: 53
+ type: 1
+ created_unix: 946684810
diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml
index f09953be7e..a5a3dd0601 100644
--- a/models/fixtures/repository.yml
+++ b/models/fixtures/repository.yml
@@ -1558,3 +1558,30 @@
size: 0
is_fsck_enabled: true
close_issues_via_commit_in_any_branch: false
+
+-
+ id: 53
+ owner_id: 30
+ owner_name: user30
+ lower_name: renderer
+ name: renderer
+ is_archived: false
+ is_empty: false
+ is_private: false
+ num_issues: 0
+ num_closed_issues: 0
+ num_pulls: 0
+ num_closed_pulls: 0
+ num_milestones: 0
+ num_closed_milestones: 0
+ num_watches: 0
+ num_projects: 0
+ num_closed_projects: 0
+ status: 0
+ is_fork: false
+ fork_id: 0
+ is_template: false
+ template_id: 0
+ size: 0
+ is_fsck_enabled: true
+ close_issues_via_commit_in_any_branch: false
diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml
index 0e3348e146..1b870e8999 100644
--- a/models/fixtures/user.yml
+++ b/models/fixtures/user.yml
@@ -1102,7 +1102,7 @@
num_followers: 0
num_following: 0
num_stars: 0
- num_repos: 3
+ num_repos: 4
num_teams: 0
num_members: 0
visibility: 0
diff --git a/models/repo/repo_list_test.go b/models/repo/repo_list_test.go
index bfbceb7e2e..d87d70c189 100644
--- a/models/repo/repo_list_test.go
+++ b/models/repo/repo_list_test.go
@@ -235,12 +235,12 @@ func TestSearchRepository(t *testing.T) {
{
name: "AllPublic/PublicRepositoriesOfUserIncludingCollaborative",
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 15, AllPublic: true, Template: util.OptionalBoolFalse},
- count: 28,
+ count: 29,
},
{
name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative",
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 15, Private: true, AllPublic: true, AllLimited: true, Template: util.OptionalBoolFalse},
- count: 33,
+ count: 34,
},
{
name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName",
@@ -255,7 +255,7 @@ func TestSearchRepository(t *testing.T) {
{
name: "AllPublic/PublicRepositoriesOfOrganization",
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 17, AllPublic: true, Collaborate: util.OptionalBoolFalse, Template: util.OptionalBoolFalse},
- count: 28,
+ count: 29,
},
{
name: "AllTemplates",
diff --git a/routers/web/user/home_test.go b/routers/web/user/home_test.go
index a75b3573a0..534b0b2620 100644
--- a/routers/web/user/home_test.go
+++ b/routers/web/user/home_test.go
@@ -26,7 +26,7 @@ func TestArchivedIssues(t *testing.T) {
// Assume: User 30 has access to two Repos with Issues, one of the Repos being archived.
repos, _, _ := repo_model.GetUserRepositories(&repo_model.SearchRepoOptions{Actor: ctx.Doer})
- assert.Len(t, repos, 2)
+ assert.Len(t, repos, 3)
IsArchived := make(map[int64]bool)
NumIssues := make(map[int64]int)
for _, repo := range repos {
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/HEAD b/tests/gitea-repositories-meta/user30/renderer.git/HEAD
new file mode 100644
index 0000000000..cb089cd89a
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/config b/tests/gitea-repositories-meta/user30/renderer.git/config
new file mode 100644
index 0000000000..e6da231579
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/config
@@ -0,0 +1,6 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = true
+ ignorecase = true
+ precomposeunicode = true
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/description b/tests/gitea-repositories-meta/user30/renderer.git/description
new file mode 100644
index 0000000000..04c23973b8
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/description
@@ -0,0 +1 @@
+The repository will be used to test third-party renderer in TestExternalMarkupRenderer
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive b/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive
new file mode 100644
index 0000000000..f1f2709ddd
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+data=$(cat)
+exitcodes=""
+hookname=$(basename $0)
+GIT_DIR=${GIT_DIR:-$(dirname $0)}
+
+for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
+test -x "${hook}" && test -f "${hook}" || continue
+echo "${data}" | "${hook}"
+exitcodes="${exitcodes} $?"
+done
+
+for i in ${exitcodes}; do
+[ ${i} -eq 0 ] || exit ${i}
+done
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive.d/gitea b/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive.d/gitea
new file mode 100644
index 0000000000..43a948da3a
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive.d/gitea
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" post-receive
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive b/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive
new file mode 100644
index 0000000000..f1f2709ddd
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+data=$(cat)
+exitcodes=""
+hookname=$(basename $0)
+GIT_DIR=${GIT_DIR:-$(dirname $0)}
+
+for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
+test -x "${hook}" && test -f "${hook}" || continue
+echo "${data}" | "${hook}"
+exitcodes="${exitcodes} $?"
+done
+
+for i in ${exitcodes}; do
+[ ${i} -eq 0 ] || exit ${i}
+done
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive.d/gitea b/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive.d/gitea
new file mode 100644
index 0000000000..49d0940636
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive.d/gitea
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/update b/tests/gitea-repositories-meta/user30/renderer.git/hooks/update
new file mode 100644
index 0000000000..df5bd27f10
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/update
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+exitcodes=""
+hookname=$(basename $0)
+GIT_DIR=${GIT_DIR:-$(dirname $0)}
+
+for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
+test -x "${hook}" && test -f "${hook}" || continue
+"${hook}" $1 $2 $3
+exitcodes="${exitcodes} $?"
+done
+
+for i in ${exitcodes}; do
+[ ${i} -eq 0 ] || exit ${i}
+done
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/hooks/update.d/gitea b/tests/gitea-repositories-meta/user30/renderer.git/hooks/update.d/gitea
new file mode 100644
index 0000000000..38101c2426
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/hooks/update.d/gitea
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/info/exclude b/tests/gitea-repositories-meta/user30/renderer.git/info/exclude
new file mode 100644
index 0000000000..a5196d1be8
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/info/exclude
@@ -0,0 +1,6 @@
+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/objects/06/0d5c2acd8bf4b6f14010acd1a73d73392ec46e b/tests/gitea-repositories-meta/user30/renderer.git/objects/06/0d5c2acd8bf4b6f14010acd1a73d73392ec46e
new file mode 100644
index 0000000000..994f25602c
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/objects/06/0d5c2acd8bf4b6f14010acd1a73d73392ec46e
Binary files differ
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/objects/45/14a93050edb2c3165bdd0a3c03be063e879e68 b/tests/gitea-repositories-meta/user30/renderer.git/objects/45/14a93050edb2c3165bdd0a3c03be063e879e68
new file mode 100644
index 0000000000..b1fff27753
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/objects/45/14a93050edb2c3165bdd0a3c03be063e879e68
Binary files differ
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/objects/c9/61cc4d1ba6b7ee1ba228a9a02b00b7746d8033 b/tests/gitea-repositories-meta/user30/renderer.git/objects/c9/61cc4d1ba6b7ee1ba228a9a02b00b7746d8033
new file mode 100644
index 0000000000..66488767ae
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/objects/c9/61cc4d1ba6b7ee1ba228a9a02b00b7746d8033
Binary files differ
diff --git a/tests/gitea-repositories-meta/user30/renderer.git/packed-refs b/tests/gitea-repositories-meta/user30/renderer.git/packed-refs
new file mode 100644
index 0000000000..63f8af0f12
--- /dev/null
+++ b/tests/gitea-repositories-meta/user30/renderer.git/packed-refs
@@ -0,0 +1,2 @@
+# pack-refs with: peeled fully-peeled sorted
+c961cc4d1ba6b7ee1ba228a9a02b00b7746d8033 refs/heads/master
diff --git a/tests/integration/api_repo_test.go b/tests/integration/api_repo_test.go
index c84416104c..76850fb827 100644
--- a/tests/integration/api_repo_test.go
+++ b/tests/integration/api_repo_test.go
@@ -81,9 +81,9 @@ func TestAPISearchRepo(t *testing.T) {
}{
{
name: "RepositoriesMax50", requestURL: "/api/v1/repos/search?limit=50&private=false", expectedResults: expectedResults{
- nil: {count: 30},
- user: {count: 30},
- user2: {count: 30},
+ nil: {count: 31},
+ user: {count: 31},
+ user2: {count: 31},
},
},
{
diff --git a/tests/integration/markup_external_test.go b/tests/integration/markup_external_test.go
new file mode 100644
index 0000000000..6ea0226ec6
--- /dev/null
+++ b/tests/integration/markup_external_test.go
@@ -0,0 +1,40 @@
+// Copyright 2022 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package integration
+
+import (
+ "bytes"
+ "io"
+ "net/http"
+ "strings"
+ "testing"
+
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestExternalMarkupRenderer(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+ if !setting.Database.UseSQLite3 {
+ t.Skip()
+ return
+ }
+
+ const repoURL = "user30/renderer"
+ req := NewRequest(t, "GET", repoURL+"/src/branch/master/README.html")
+ resp := MakeRequest(t, req, http.StatusOK)
+ assert.EqualValues(t, "text/html; charset=UTF-8", resp.Header()["Content-Type"][0])
+
+ bs, err := io.ReadAll(resp.Body)
+ assert.NoError(t, err)
+
+ doc := NewHTMLParser(t, bytes.NewBuffer(bs))
+ div := doc.Find("div.file-view")
+ data, err := div.Html()
+ assert.NoError(t, err)
+ assert.EqualValues(t, "<div>\n\ttest external renderer\n</div>", strings.TrimSpace(data))
+}
diff --git a/tests/sqlite.ini.tmpl b/tests/sqlite.ini.tmpl
index f5e8895e06..f6f8c70ed9 100644
--- a/tests/sqlite.ini.tmpl
+++ b/tests/sqlite.ini.tmpl
@@ -107,3 +107,10 @@ PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/lfs
[packages]
ENABLED = true
+
+[markup.html]
+ENABLED = true
+FILE_EXTENSIONS = .html
+RENDER_COMMAND = `go run tools/external_renderer.go`
+IS_INPUT_FILE = false
+RENDER_CONTENT_MODE=sanitized
diff --git a/tools/external_renderer.go b/tools/external_renderer.go
new file mode 100644
index 0000000000..c1fcc78f50
--- /dev/null
+++ b/tools/external_renderer.go
@@ -0,0 +1,23 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+// gobuild: external_renderer
+
+package main
+
+import (
+ "fmt"
+ "io"
+ "os"
+)
+
+func main() {
+ if len(os.Args) > 1 {
+ fmt.Print(os.Args[1])
+ } else {
+ _, err := io.Copy(os.Stdout, os.Stdin)
+ if err != nil {
+ fmt.Println(err)
+ }
+ }
+}