@@ -23,6 +23,7 @@ import (
2323	"code.gitea.io/gitea/modules/setting" 
2424	api "code.gitea.io/gitea/modules/structs" 
2525	"code.gitea.io/gitea/modules/test" 
26+ 	"code.gitea.io/gitea/modules/util" 
2627	"code.gitea.io/gitea/tests" 
2728
2829	"github.com/stretchr/testify/assert" 
@@ -100,22 +101,29 @@ func TestEmptyRepoAddFile(t *testing.T) {
100101	assert .Contains (t , resp .Body .String (), "test-file.md" )
101102
102103	// if the repo is in incorrect state, it should be able to self-heal (recover to correct state) 
103- 	user30EmptyRepo  :=  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : 30 , Name : "empty" })
104- 	user30EmptyRepo .IsEmpty  =  true 
105- 	user30EmptyRepo .DefaultBranch  =  "no-such" 
106- 	_ , err  :=  db .GetEngine (db .DefaultContext ).ID (user30EmptyRepo .ID ).Cols ("is_empty" , "default_branch" ).Update (user30EmptyRepo )
107- 	require .NoError (t , err )
108- 	user30EmptyRepo  =  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : 30 , Name : "empty" })
109- 	assert .True (t , user30EmptyRepo .IsEmpty )
110- 
111- 	req  =  NewRequest (t , "GET" , "/user30/empty" )
112- 	resp  =  session .MakeRequest (t , req , http .StatusSeeOther )
113- 	redirect  =  test .RedirectURL (resp )
114- 	assert .Equal (t , "/user30/empty" , redirect )
115- 
116- 	req  =  NewRequest (t , "GET" , "/user30/empty" )
117- 	resp  =  session .MakeRequest (t , req , http .StatusOK )
118- 	assert .Contains (t , resp .Body .String (), "test-file.md" )
104+ 	testEmptyOrBrokenRecover  :=  func (t  * testing.T , isEmpty , isBroken  bool ) {
105+ 		user30EmptyRepo  :=  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : 30 , Name : "empty" })
106+ 		user30EmptyRepo .IsEmpty  =  isEmpty 
107+ 		user30EmptyRepo .Status  =  util .Iif (isBroken , repo_model .RepositoryBroken , repo_model .RepositoryReady )
108+ 		user30EmptyRepo .DefaultBranch  =  "no-such" 
109+ 		_ , err  :=  db .GetEngine (db .DefaultContext ).ID (user30EmptyRepo .ID ).Cols ("is_empty" , "status" , "default_branch" ).Update (user30EmptyRepo )
110+ 		require .NoError (t , err )
111+ 		user30EmptyRepo  =  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : 30 , Name : "empty" })
112+ 		assert .Equal (t , isEmpty , user30EmptyRepo .IsEmpty )
113+ 		assert .Equal (t , isBroken , user30EmptyRepo .Status  ==  repo_model .RepositoryBroken )
114+ 
115+ 		req  =  NewRequest (t , "GET" , "/user30/empty" )
116+ 		resp  =  session .MakeRequest (t , req , http .StatusSeeOther )
117+ 		redirect  =  test .RedirectURL (resp )
118+ 		assert .Equal (t , "/user30/empty" , redirect )
119+ 
120+ 		req  =  NewRequest (t , "GET" , "/user30/empty" )
121+ 		resp  =  session .MakeRequest (t , req , http .StatusOK )
122+ 		assert .Contains (t , resp .Body .String (), "test-file.md" )
123+ 	}
124+ 	testEmptyOrBrokenRecover (t , true , false )
125+ 	testEmptyOrBrokenRecover (t , false , true )
126+ 	testEmptyOrBrokenRecover (t , true , true )
119127}
120128
121129func  TestEmptyRepoUploadFile (t  * testing.T ) {
0 commit comments