Merge pull request 'Fix expand diff in pull requests being 404 (port of gitea#31013)' (#3885) from algernon/forgejo:gitea/port/31013 into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3885 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
This commit is contained in:
		
				commit
				
					
						5fa2d8f5ca
					
				
			
		
					 3 changed files with 44 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
{{$file := .file}}
 | 
			
		||||
{{$blobExcerptRepoLink := or $.root.CommitRepoLink $.root.RepoLink}}
 | 
			
		||||
<colgroup>
 | 
			
		||||
	<col width="50">
 | 
			
		||||
	<col width="10">
 | 
			
		||||
| 
						 | 
				
			
			@ -18,17 +19,17 @@
 | 
			
		|||
					<td class="lines-num lines-num-old">
 | 
			
		||||
						<div class="tw-flex">
 | 
			
		||||
						{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 5)}}
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=down&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=down&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								{{svg "octicon-fold-down"}}
 | 
			
		||||
							</button>
 | 
			
		||||
						{{end}}
 | 
			
		||||
						{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 4)}}
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=up&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=up&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								{{svg "octicon-fold-up"}}
 | 
			
		||||
							</button>
 | 
			
		||||
						{{end}}
 | 
			
		||||
						{{if eq $line.GetExpandDirection 2}}
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
							<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=split&direction=&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								{{svg "octicon-fold"}}
 | 
			
		||||
							</button>
 | 
			
		||||
						{{end}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
{{$file := .file}}
 | 
			
		||||
{{$blobExcerptRepoLink := or $.root.CommitRepoLink $.root.RepoLink}}
 | 
			
		||||
<colgroup>
 | 
			
		||||
	<col width="50">
 | 
			
		||||
	<col width="50">
 | 
			
		||||
| 
						 | 
				
			
			@ -14,17 +15,17 @@
 | 
			
		|||
					<td colspan="2" class="lines-num">
 | 
			
		||||
						<div class="tw-flex">
 | 
			
		||||
							{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 5)}}
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=down&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=down&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
									{{svg "octicon-fold-down"}}
 | 
			
		||||
								</button>
 | 
			
		||||
							{{end}}
 | 
			
		||||
							{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 4)}}
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=up&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=up&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
									{{svg "octicon-fold-up"}}
 | 
			
		||||
								</button>
 | 
			
		||||
							{{end}}
 | 
			
		||||
							{{if eq $line.GetExpandDirection 2}}
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$.root.CommitRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
								<button class="code-expander-button" hx-target="closest tr" hx-get="{{$blobExcerptRepoLink}}/blob_excerpt/{{PathEscape $.root.AfterCommitID}}?{{$line.GetBlobExcerptQuery}}&style=unified&direction=&wiki={{$.root.PageIsWiki}}&anchor=diff-{{$file.NameHash}}K{{$line.SectionInfo.RightIdx}}">
 | 
			
		||||
									{{svg "octicon-fold"}}
 | 
			
		||||
								</button>
 | 
			
		||||
							{{end}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ import (
 | 
			
		|||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/gitrepo"
 | 
			
		||||
	"code.gitea.io/gitea/modules/optional"
 | 
			
		||||
	"code.gitea.io/gitea/modules/test"
 | 
			
		||||
	repo_service "code.gitea.io/gitea/services/repository"
 | 
			
		||||
	files_service "code.gitea.io/gitea/services/repository/files"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
| 
						 | 
				
			
			@ -251,8 +252,41 @@ func TestCompareCodeExpand(t *testing.T) {
 | 
			
		|||
				owner.Name, repo.Name, forker.Name, repo.Name+"-copy")
 | 
			
		||||
			resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
			htmlDoc := NewHTMLParser(t, resp.Body)
 | 
			
		||||
			htmlDoc.AssertElement(t, fmt.Sprintf("button.code-expander-button[hx-get^='/%s/%s/blob_excerpt/'] svg.octicon-fold-up", forker.Name, repo.Name+"-copy"), true)
 | 
			
		||||
			htmlDoc.AssertElement(t, fmt.Sprintf("button.code-expander-button[hx-get^='/%s/%s/blob_excerpt/'] svg.octicon-fold-down", forker.Name, repo.Name+"-copy"), true)
 | 
			
		||||
 | 
			
		||||
			els := htmlDoc.Find(`button.code-expander-button[hx-get]`)
 | 
			
		||||
 | 
			
		||||
			// all the links in the comparison should be to the forked repo&branch
 | 
			
		||||
			assert.NotZero(t, els.Length())
 | 
			
		||||
			expectedPrefix := fmt.Sprintf("/%s/%s/blob_excerpt/", forker.Name, repo.Name+"-copy")
 | 
			
		||||
			for i := 0; i < els.Length(); i++ {
 | 
			
		||||
				link := els.Eq(i).AttrOr("hx-get", "")
 | 
			
		||||
				assert.True(t, strings.HasPrefix(link, expectedPrefix))
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		t.Run("code expander targets the repo in a PR", func(t *testing.T) {
 | 
			
		||||
			defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
			// Create a pullrequest
 | 
			
		||||
			resp := testPullCreate(t, session, forker.Name, repo.Name+"-copy", false, "main", "code-expand", "This is a pull title")
 | 
			
		||||
 | 
			
		||||
			// Grab the URL for the PR
 | 
			
		||||
			url := test.RedirectURL(resp) + "/files"
 | 
			
		||||
 | 
			
		||||
			// Visit the PR's diff
 | 
			
		||||
			req := NewRequest(t, "GET", url)
 | 
			
		||||
			resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
			htmlDoc := NewHTMLParser(t, resp.Body)
 | 
			
		||||
 | 
			
		||||
			els := htmlDoc.Find(`button.code-expander-button[hx-get]`)
 | 
			
		||||
 | 
			
		||||
			// all the links in the comparison should be to the original repo&branch
 | 
			
		||||
			assert.NotZero(t, els.Length())
 | 
			
		||||
			expectedPrefix := fmt.Sprintf("/%s/%s/blob_excerpt/", owner.Name, repo.Name)
 | 
			
		||||
			for i := 0; i < els.Length(); i++ {
 | 
			
		||||
				link := els.Eq(i).AttrOr("hx-get", "")
 | 
			
		||||
				assert.True(t, strings.HasPrefix(link, expectedPrefix))
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue