| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- // Copyright 2025 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package gitdiff
-
- import (
- "strings"
- "testing"
-
- "code.gitea.io/gitea/modules/git"
- "code.gitea.io/gitea/modules/setting"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestParseSubmoduleInfo(t *testing.T) {
- type testcase struct {
- name string
- gitdiff string
- infos map[int]SubmoduleDiffInfo
- }
-
- tests := []testcase{
- {
- name: "added",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- new file mode 100644
- index 0000000..4ac13c1
- --- /dev/null
- +++ b/.gitmodules
- @@ -0,0 +1,3 @@
- +[submodule "gitea-mirror"]
- + path = gitea-mirror
- + url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea-mirror b/gitea-mirror
- new file mode 160000
- index 0000000..68972a9
- --- /dev/null
- +++ b/gitea-mirror
- @@ -0,0 +1 @@
- +Subproject commit 68972a994719ae5c74e28d8fa82fa27c23399bc8
- `,
- infos: map[int]SubmoduleDiffInfo{
- 1: {NewRefID: "68972a994719ae5c74e28d8fa82fa27c23399bc8"},
- },
- },
- {
- name: "updated",
- gitdiff: `diff --git a/gitea-mirror b/gitea-mirror
- index 68972a9..c8ffe77 160000
- --- a/gitea-mirror
- +++ b/gitea-mirror
- @@ -1 +1 @@
- -Subproject commit 68972a994719ae5c74e28d8fa82fa27c23399bc8
- +Subproject commit c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d
- `,
- infos: map[int]SubmoduleDiffInfo{
- 0: {
- PreviousRefID: "68972a994719ae5c74e28d8fa82fa27c23399bc8",
- NewRefID: "c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d",
- },
- },
- },
- {
- name: "rename",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- index 4ac13c1..0510edd 100644
- --- a/.gitmodules
- +++ b/.gitmodules
- @@ -1,3 +1,3 @@
- [submodule "gitea-mirror"]
- - path = gitea-mirror
- + path = gitea
- url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea-mirror b/gitea
- similarity index 100%
- rename from gitea-mirror
- rename to gitea
- `,
- },
- {
- name: "deleted",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- index 0510edd..e69de29 100644
- --- a/.gitmodules
- +++ b/.gitmodules
- @@ -1,3 +0,0 @@
- -[submodule "gitea-mirror"]
- - path = gitea
- - url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea b/gitea
- deleted file mode 160000
- index c8ffe77..0000000
- --- a/gitea
- +++ /dev/null
- @@ -1 +0,0 @@
- -Subproject commit c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d
- `,
- infos: map[int]SubmoduleDiffInfo{
- 1: {
- PreviousRefID: "c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d",
- },
- },
- },
- {
- name: "moved and updated",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- index 0510edd..bced3d8 100644
- --- a/.gitmodules
- +++ b/.gitmodules
- @@ -1,3 +1,3 @@
- [submodule "gitea-mirror"]
- - path = gitea
- + path = gitea-1.22
- url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea b/gitea
- deleted file mode 160000
- index c8ffe77..0000000
- --- a/gitea
- +++ /dev/null
- @@ -1 +0,0 @@
- -Subproject commit c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d
- diff --git a/gitea-1.22 b/gitea-1.22
- new file mode 160000
- index 0000000..8eefa1f
- --- /dev/null
- +++ b/gitea-1.22
- @@ -0,0 +1 @@
- +Subproject commit 8eefa1f6dedf2488db2c9e12c916e8e51f673160
- `,
- infos: map[int]SubmoduleDiffInfo{
- 1: {
- PreviousRefID: "c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d",
- },
- 2: {
- NewRefID: "8eefa1f6dedf2488db2c9e12c916e8e51f673160",
- },
- },
- },
- {
- name: "converted to file",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- index 0510edd..e69de29 100644
- --- a/.gitmodules
- +++ b/.gitmodules
- @@ -1,3 +0,0 @@
- -[submodule "gitea-mirror"]
- - path = gitea
- - url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea b/gitea
- deleted file mode 160000
- index c8ffe77..0000000
- --- a/gitea
- +++ /dev/null
- @@ -1 +0,0 @@
- -Subproject commit c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d
- diff --git a/gitea b/gitea
- new file mode 100644
- index 0000000..33a9488
- --- /dev/null
- +++ b/gitea
- @@ -0,0 +1 @@
- +example
- `,
- infos: map[int]SubmoduleDiffInfo{
- 1: {
- PreviousRefID: "c8ffe777cf9c5bb47a38e3e0b3a3b5de6cd8813d",
- },
- },
- },
- {
- name: "converted to submodule",
- gitdiff: `diff --git a/.gitmodules b/.gitmodules
- index e69de29..14ee267 100644
- --- a/.gitmodules
- +++ b/.gitmodules
- @@ -0,0 +1,3 @@
- +[submodule "gitea"]
- + path = gitea
- + url = https://gitea.com/gitea/gitea-mirror
- diff --git a/gitea b/gitea
- deleted file mode 100644
- index 33a9488..0000000
- --- a/gitea
- +++ /dev/null
- @@ -1 +0,0 @@
- -example
- diff --git a/gitea b/gitea
- new file mode 160000
- index 0000000..68972a9
- --- /dev/null
- +++ b/gitea
- @@ -0,0 +1 @@
- +Subproject commit 68972a994719ae5c74e28d8fa82fa27c23399bc8
- `,
- infos: map[int]SubmoduleDiffInfo{
- 2: {
- NewRefID: "68972a994719ae5c74e28d8fa82fa27c23399bc8",
- },
- },
- },
- }
-
- for _, testcase := range tests {
- t.Run(testcase.name, func(t *testing.T) {
- diff, err := ParsePatch(t.Context(), setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(testcase.gitdiff), "")
- assert.NoError(t, err)
-
- for i, expected := range testcase.infos {
- actual := diff.Files[i]
- assert.NotNil(t, actual)
- assert.Equal(t, expected, *actual.SubmoduleDiffInfo)
- }
- })
- }
- }
-
- func TestSubmoduleInfo(t *testing.T) {
- sdi := &SubmoduleDiffInfo{
- SubmoduleName: "name",
- PreviousRefID: "aaaa",
- NewRefID: "bbbb",
- }
- ctx := t.Context()
- assert.EqualValues(t, "1111", sdi.CommitRefIDLinkHTML(ctx, "1111"))
- assert.EqualValues(t, "aaaa...bbbb", sdi.CompareRefIDLinkHTML(ctx))
- assert.EqualValues(t, "name", sdi.SubmoduleRepoLinkHTML(ctx))
-
- sdi.SubmoduleFile = git.NewCommitSubmoduleFile("/any/repo-link", "fullpath", "https://github.com/owner/repo", "1234")
- assert.EqualValues(t, `<a href="https://github.com/owner/repo/tree/1111">1111</a>`, sdi.CommitRefIDLinkHTML(ctx, "1111"))
- assert.EqualValues(t, `<a href="https://github.com/owner/repo/compare/aaaa...bbbb">aaaa...bbbb</a>`, sdi.CompareRefIDLinkHTML(ctx))
- assert.EqualValues(t, `<a href="https://github.com/owner/repo">name</a>`, sdi.SubmoduleRepoLinkHTML(ctx))
- }
|