Add a simple test for external renderer (#20033)

Fix #16402
pull/22110/head^2
Lunny Xiao 2 years ago committed by GitHub
parent 6398ca745a
commit 36a2d2f919
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      models/db/iterate_test.go
  2. 6
      models/fixtures/repo_unit.yml
  3. 27
      models/fixtures/repository.yml
  4. 2
      models/fixtures/user.yml
  5. 6
      models/repo/repo_list_test.go
  6. 2
      routers/web/user/home_test.go
  7. 1
      tests/gitea-repositories-meta/user30/renderer.git/HEAD
  8. 6
      tests/gitea-repositories-meta/user30/renderer.git/config
  9. 1
      tests/gitea-repositories-meta/user30/renderer.git/description
  10. 15
      tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive
  11. 2
      tests/gitea-repositories-meta/user30/renderer.git/hooks/post-receive.d/gitea
  12. 15
      tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive
  13. 2
      tests/gitea-repositories-meta/user30/renderer.git/hooks/pre-receive.d/gitea
  14. 14
      tests/gitea-repositories-meta/user30/renderer.git/hooks/update
  15. 2
      tests/gitea-repositories-meta/user30/renderer.git/hooks/update.d/gitea
  16. 6
      tests/gitea-repositories-meta/user30/renderer.git/info/exclude
  17. BIN
      tests/gitea-repositories-meta/user30/renderer.git/objects/06/0d5c2acd8bf4b6f14010acd1a73d73392ec46e
  18. BIN
      tests/gitea-repositories-meta/user30/renderer.git/objects/45/14a93050edb2c3165bdd0a3c03be063e879e68
  19. BIN
      tests/gitea-repositories-meta/user30/renderer.git/objects/c9/61cc4d1ba6b7ee1ba228a9a02b00b7746d8033
  20. 2
      tests/gitea-repositories-meta/user30/renderer.git/packed-refs
  21. 6
      tests/integration/api_repo_test.go
  22. 40
      tests/integration/markup_external_test.go
  23. 7
      tests/sqlite.ini.tmpl
  24. 23
      tools/external_renderer.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}

@ -544,3 +544,9 @@
repo_id: 51
type: 2
created_unix: 946684810
-
id: 80
repo_id: 53
type: 1
created_unix: 946684810

@ -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

@ -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

@ -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",

@ -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 {

@ -0,0 +1,6 @@
[core]
repositoryformatversion = 0
filemode = true
bare = true
ignorecase = true
precomposeunicode = true

@ -0,0 +1 @@
The repository will be used to test third-party renderer in TestExternalMarkupRenderer

@ -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

@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" 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

@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" pre-receive

@ -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

@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$GITEA_ROOT/gitea" hook --config="$GITEA_ROOT/$GITEA_CONF" update $1 $2 $3

@ -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]
# *~

@ -0,0 +1,2 @@
# pack-refs with: peeled fully-peeled sorted
c961cc4d1ba6b7ee1ba228a9a02b00b7746d8033 refs/heads/master

@ -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},
},
},
{

@ -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))
}

@ -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

@ -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)
}
}
}
Loading…
Cancel
Save