mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Fix 500 on first wiki page (#16586)
* Fix 500 on first wiki page There is a mistake in #16319 and #16487 which means that the first time a wiki page is created a 500 is reported because the `master` branch is not in existence in that wiki yet. This PR simply checks for this error and returns not found. Fix #16584 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		| @@ -90,6 +90,9 @@ func prepareWikiFileName(gitRepo *git.Repository, wikiName string) (bool, string | ||||
| 	// Look for both files | ||||
| 	filesInIndex, err := gitRepo.LsTree("master", unescaped, escaped) | ||||
| 	if err != nil { | ||||
| 		if strings.Contains(err.Error(), "Not a valid object name master") { | ||||
| 			return false, escaped, nil | ||||
| 		} | ||||
| 		log.Error("%v", err) | ||||
| 		return false, escaped, err | ||||
| 	} | ||||
|   | ||||
| @@ -5,11 +5,15 @@ | ||||
| package wiki | ||||
|  | ||||
| import ( | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"testing" | ||||
|  | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	"code.gitea.io/gitea/modules/git" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
|  | ||||
| @@ -261,3 +265,28 @@ func TestPrepareWikiFileName(t *testing.T) { | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestPrepareWikiFileName_FirstPage(t *testing.T) { | ||||
| 	models.PrepareTestEnv(t) | ||||
|  | ||||
| 	// Now create a temporaryDirectory | ||||
| 	tmpDir, err := ioutil.TempDir("", "empty-wiki") | ||||
| 	assert.NoError(t, err) | ||||
| 	defer func() { | ||||
| 		if _, err := os.Stat(tmpDir); !os.IsNotExist(err) { | ||||
| 			_ = util.RemoveAll(tmpDir) | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	err = git.InitRepository(tmpDir, true) | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	gitRepo, err := git.OpenRepository(tmpDir) | ||||
| 	defer gitRepo.Close() | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	existence, newWikiPath, err := prepareWikiFileName(gitRepo, "Home") | ||||
| 	assert.False(t, existence) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, "Home.md", newWikiPath) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user