Skip to content

Commit 36a2d2f

Browse files
authored
Add a simple test for external renderer (#20033)
Fix #16402
1 parent 6398ca7 commit 36a2d2f

24 files changed

+178
-9
lines changed

models/db/iterate_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func TestIterate(t *testing.T) {
2525
return nil
2626
})
2727
assert.NoError(t, err)
28-
assert.EqualValues(t, 79, repoCnt)
28+
assert.EqualValues(t, 80, repoCnt)
2929

3030
err = db.Iterate(db.DefaultContext, nil, func(ctx context.Context, repoUnit *repo_model.RepoUnit) error {
3131
reopUnit2 := repo_model.RepoUnit{ID: repoUnit.ID}

models/fixtures/repo_unit.yml

+6
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,9 @@
544544
repo_id: 51
545545
type: 2
546546
created_unix: 946684810
547+
548+
-
549+
id: 80
550+
repo_id: 53
551+
type: 1
552+
created_unix: 946684810

models/fixtures/repository.yml

+27
Original file line numberDiff line numberDiff line change
@@ -1558,3 +1558,30 @@
15581558
size: 0
15591559
is_fsck_enabled: true
15601560
close_issues_via_commit_in_any_branch: false
1561+
1562+
-
1563+
id: 53
1564+
owner_id: 30
1565+
owner_name: user30
1566+
lower_name: renderer
1567+
name: renderer
1568+
is_archived: false
1569+
is_empty: false
1570+
is_private: false
1571+
num_issues: 0
1572+
num_closed_issues: 0
1573+
num_pulls: 0
1574+
num_closed_pulls: 0
1575+
num_milestones: 0
1576+
num_closed_milestones: 0
1577+
num_watches: 0
1578+
num_projects: 0
1579+
num_closed_projects: 0
1580+
status: 0
1581+
is_fork: false
1582+
fork_id: 0
1583+
is_template: false
1584+
template_id: 0
1585+
size: 0
1586+
is_fsck_enabled: true
1587+
close_issues_via_commit_in_any_branch: false

models/fixtures/user.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@
11021102
num_followers: 0
11031103
num_following: 0
11041104
num_stars: 0
1105-
num_repos: 3
1105+
num_repos: 4
11061106
num_teams: 0
11071107
num_members: 0
11081108
visibility: 0

models/repo/repo_list_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,12 @@ func TestSearchRepository(t *testing.T) {
235235
{
236236
name: "AllPublic/PublicRepositoriesOfUserIncludingCollaborative",
237237
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 15, AllPublic: true, Template: util.OptionalBoolFalse},
238-
count: 28,
238+
count: 29,
239239
},
240240
{
241241
name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative",
242242
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 15, Private: true, AllPublic: true, AllLimited: true, Template: util.OptionalBoolFalse},
243-
count: 33,
243+
count: 34,
244244
},
245245
{
246246
name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName",
@@ -255,7 +255,7 @@ func TestSearchRepository(t *testing.T) {
255255
{
256256
name: "AllPublic/PublicRepositoriesOfOrganization",
257257
opts: &repo_model.SearchRepoOptions{ListOptions: db.ListOptions{Page: 1, PageSize: 10}, OwnerID: 17, AllPublic: true, Collaborate: util.OptionalBoolFalse, Template: util.OptionalBoolFalse},
258-
count: 28,
258+
count: 29,
259259
},
260260
{
261261
name: "AllTemplates",

routers/web/user/home_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestArchivedIssues(t *testing.T) {
2626

2727
// Assume: User 30 has access to two Repos with Issues, one of the Repos being archived.
2828
repos, _, _ := repo_model.GetUserRepositories(&repo_model.SearchRepoOptions{Actor: ctx.Doer})
29-
assert.Len(t, repos, 2)
29+
assert.Len(t, repos, 3)
3030
IsArchived := make(map[int64]bool)
3131
NumIssues := make(map[int64]int)
3232
for _, repo := range repos {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ref: refs/heads/master
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[core]
2+
repositoryformatversion = 0
3+
filemode = true
4+
bare = true
5+
ignorecase = true
6+
precomposeunicode = true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The repository will be used to test third-party renderer in TestExternalMarkupRenderer
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env bash
2+
data=$(cat)
3+
exitcodes=""
4+
hookname=$(basename $0)
5+
GIT_DIR=${GIT_DIR:-$(dirname $0)}
6+
7+
for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
8+
test -x "${hook}" && test -f "${hook}" || continue
9+
echo "${data}" | "${hook}"
10+
exitcodes="${exitcodes} $?"
11+
done
12+
13+
for i in ${exitcodes}; do
14+
[ ${i} -eq 0 ] || exit ${i}
15+
done
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env bash
2+
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" post-receive
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env bash
2+
data=$(cat)
3+
exitcodes=""
4+
hookname=$(basename $0)
5+
GIT_DIR=${GIT_DIR:-$(dirname $0)}
6+
7+
for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
8+
test -x "${hook}" && test -f "${hook}" || continue
9+
echo "${data}" | "${hook}"
10+
exitcodes="${exitcodes} $?"
11+
done
12+
13+
for i in ${exitcodes}; do
14+
[ ${i} -eq 0 ] || exit ${i}
15+
done
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env bash
2+
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
exitcodes=""
3+
hookname=$(basename $0)
4+
GIT_DIR=${GIT_DIR:-$(dirname $0)}
5+
6+
for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do
7+
test -x "${hook}" && test -f "${hook}" || continue
8+
"${hook}" $1 $2 $3
9+
exitcodes="${exitcodes} $?"
10+
done
11+
12+
for i in ${exitcodes}; do
13+
[ ${i} -eq 0 ] || exit ${i}
14+
done
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env bash
2+
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# git ls-files --others --exclude-from=.git/info/exclude
2+
# Lines that start with '#' are comments.
3+
# For a project mostly in C, the following would be a good set of
4+
# exclude patterns (uncomment them if you want to use them):
5+
# *.[oa]
6+
# *~
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# pack-refs with: peeled fully-peeled sorted
2+
c961cc4d1ba6b7ee1ba228a9a02b00b7746d8033 refs/heads/master

tests/integration/api_repo_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ func TestAPISearchRepo(t *testing.T) {
8181
}{
8282
{
8383
name: "RepositoriesMax50", requestURL: "/api/v1/repos/search?limit=50&private=false", expectedResults: expectedResults{
84-
nil: {count: 30},
85-
user: {count: 30},
86-
user2: {count: 30},
84+
nil: {count: 31},
85+
user: {count: 31},
86+
user2: {count: 31},
8787
},
8888
},
8989
{
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright 2022 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package integration
6+
7+
import (
8+
"bytes"
9+
"io"
10+
"net/http"
11+
"strings"
12+
"testing"
13+
14+
"code.gitea.io/gitea/modules/setting"
15+
"code.gitea.io/gitea/tests"
16+
17+
"github.com/stretchr/testify/assert"
18+
)
19+
20+
func TestExternalMarkupRenderer(t *testing.T) {
21+
defer tests.PrepareTestEnv(t)()
22+
if !setting.Database.UseSQLite3 {
23+
t.Skip()
24+
return
25+
}
26+
27+
const repoURL = "user30/renderer"
28+
req := NewRequest(t, "GET", repoURL+"/src/branch/master/README.html")
29+
resp := MakeRequest(t, req, http.StatusOK)
30+
assert.EqualValues(t, "text/html; charset=UTF-8", resp.Header()["Content-Type"][0])
31+
32+
bs, err := io.ReadAll(resp.Body)
33+
assert.NoError(t, err)
34+
35+
doc := NewHTMLParser(t, bytes.NewBuffer(bs))
36+
div := doc.Find("div.file-view")
37+
data, err := div.Html()
38+
assert.NoError(t, err)
39+
assert.EqualValues(t, "<div>\n\ttest external renderer\n</div>", strings.TrimSpace(data))
40+
}

tests/sqlite.ini.tmpl

+7
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,10 @@ PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/lfs
107107

108108
[packages]
109109
ENABLED = true
110+
111+
[markup.html]
112+
ENABLED = true
113+
FILE_EXTENSIONS = .html
114+
RENDER_COMMAND = `go run tools/external_renderer.go`
115+
IS_INPUT_FILE = false
116+
RENDER_CONTENT_MODE=sanitized

tools/external_renderer.go

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright 2017 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
// gobuild: external_renderer
5+
6+
package main
7+
8+
import (
9+
"fmt"
10+
"io"
11+
"os"
12+
)
13+
14+
func main() {
15+
if len(os.Args) > 1 {
16+
fmt.Print(os.Args[1])
17+
} else {
18+
_, err := io.Copy(os.Stdout, os.Stdin)
19+
if err != nil {
20+
fmt.Println(err)
21+
}
22+
}
23+
}

0 commit comments

Comments
 (0)