99 "net/url"
1010 "strings"
1111 "testing"
12+ "time"
1213
1314 "code.gitea.io/gitea/models/db"
1415 "code.gitea.io/gitea/models/unittest"
@@ -160,7 +161,7 @@ func TestCompareCodeExpand(t *testing.T) {
160161 })
161162}
162163
163- func TestCompareRawDiff (t * testing.T ) {
164+ func TestCompareRawDiffNormal (t * testing.T ) {
164165 onGiteaRun (t , func (t * testing.T , u * url.URL ) {
165166 user1 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
166167 repo , err := repo_service .CreateRepositoryDirectly (db .DefaultContext , user1 , user1 , repo_service.CreateRepoOptions {
@@ -171,16 +172,19 @@ func TestCompareRawDiff(t *testing.T) {
171172 }, true )
172173 assert .NoError (t , err )
173174 session := loginUser (t , user1 .Name )
175+
174176 r , _ := gitrepo .OpenRepository (db .DefaultContext , repo )
177+
175178 oldRef , _ := r .GetBranchCommit (repo .DefaultBranch )
179+ oldBlobRef , _ := r .RevParse (oldRef .ID .String (), "README.md" )
180+
176181 testEditFile (t , session , user1 .Name , repo .Name , "main" , "README.md" , strings .Repeat ("a\n " , 2 ))
182+
177183 newRef , _ := r .GetBranchCommit (repo .DefaultBranch )
178- fmt .Println ("oldRef" , oldRef .ID .String ())
179- fmt .Println ("newRef" , newRef .ID .String ())
184+ newBlobRef , _ := r .RevParse (newRef .ID .String (), "README.md" )
180185
181186 req := NewRequest (t , "GET" , fmt .Sprintf ("/user1/test_raw_diff/compare/%s...%s.diff" , oldRef .ID .String (), newRef .ID .String ()))
182187 resp := session .MakeRequest (t , req , http .StatusOK )
183- fmt .Println ("resp" , resp .Body .String ())
184188
185189 expected := fmt .Sprintf (`diff --git a/README.md b/README.md
186190index %s..%s 100644
@@ -191,9 +195,64 @@ index %s..%s 100644
191195-
192196+a
193197+a
194- ` ,
195- oldRef .ID .String ()[:7 ], newRef .ID .String ()[:7 ])
198+ ` , oldBlobRef [:7 ], newBlobRef [:7 ])
199+ assert .Equal (t , expected , resp .Body .String ())
200+ })
201+ }
202+
203+ func TestCompareRawDiffPatch (t * testing.T ) {
204+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
205+ user1 := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
206+ repo , err := repo_service .CreateRepositoryDirectly (db .DefaultContext , user1 , user1 , repo_service.CreateRepoOptions {
207+ Name : "test_raw_diff" ,
208+ Readme : "Default" ,
209+ AutoInit : true ,
210+ DefaultBranch : "main" ,
211+ }, true )
212+ assert .NoError (t , err )
213+ session := loginUser (t , user1 .Name )
214+
215+ r , _ := gitrepo .OpenRepository (db .DefaultContext , repo )
196216
197- assert .Equal (t , resp .Body .String (), expected )
217+ // Get the old commit and blob reference
218+ oldRef , _ := r .GetBranchCommit (repo .DefaultBranch )
219+ oldBlobRef , _ := r .RevParse (oldRef .ID .String (), "README.md" )
220+
221+ resp := testEditFile (t , session , user1 .Name , repo .Name , "main" , "README.md" , strings .Repeat ("a\n " , 2 ))
222+
223+ newRef , _ := r .GetBranchCommit (repo .DefaultBranch )
224+ newBlobRef , _ := r .RevParse (newRef .ID .String (), "README.md" )
225+
226+ // Get the last modified time from the response header
227+ respTs , _ := time .Parse (time .RFC1123 , resp .Result ().Header .Get ("Last-Modified" ))
228+ respTs = respTs .In (time .Local )
229+
230+ // Format the timestamp to match the expected format in the patch
231+ customFormat := "Mon, 02 Jan 2006 15:04:05"
232+ respTsStr := respTs .Format (customFormat )
233+
234+ req := NewRequest (t , "GET" , fmt .Sprintf ("/user1/test_raw_diff/compare/%s...%s.patch" , oldRef .ID .String (), newRef .ID .String ()))
235+ resp = session .MakeRequest (t , req , http .StatusOK )
236+
237+ expected := fmt .Sprintf (`From %s Mon Sep 17 00:00:00 2001
238+ From: User One <[email protected] > 239+ Date: %s +0300
240+ Subject: [PATCH] Update README.md
241+
242+ ---
243+ README.md | 4 ++--
244+ 1 file changed, 2 insertions(+), 2 deletions(-)
245+
246+ diff --git a/README.md b/README.md
247+ index %s..%s 100644
248+ --- a/README.md
249+ +++ b/README.md
250+ @@ -1,2 +1,2 @@
251+ -# test_raw_diff
252+ -
253+ +a
254+ +a
255+ ` , newRef .ID .String (), respTsStr , oldBlobRef [:7 ], newBlobRef [:7 ])
256+ assert .Equal (t , expected , resp .Body .String ())
198257 })
199258}
0 commit comments