Skip to content

Commit c9c5180

Browse files
zeripathAbdulrhmnGhanem
authored andcommitted
Fix 500 on first wiki page (go-gitea#16586)
* Fix 500 on first wiki page There is a mistake in go-gitea#16319 and go-gitea#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 go-gitea#16584 Signed-off-by: Andrew Thornton <[email protected]>
1 parent 92ef772 commit c9c5180

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

services/wiki/wiki.go

+3
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ func prepareWikiFileName(gitRepo *git.Repository, wikiName string) (bool, string
9090
// Look for both files
9191
filesInIndex, err := gitRepo.LsTree("master", unescaped, escaped)
9292
if err != nil {
93+
if strings.Contains(err.Error(), "Not a valid object name master") {
94+
return false, escaped, nil
95+
}
9396
log.Error("%v", err)
9497
return false, escaped, err
9598
}

services/wiki/wiki_test.go

+29
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
package wiki
66

77
import (
8+
"io/ioutil"
9+
"os"
810
"path/filepath"
911
"testing"
1012

1113
"code.gitea.io/gitea/models"
1214
"code.gitea.io/gitea/modules/git"
15+
"code.gitea.io/gitea/modules/util"
16+
1317
"github.com/stretchr/testify/assert"
1418
)
1519

@@ -261,3 +265,28 @@ func TestPrepareWikiFileName(t *testing.T) {
261265
})
262266
}
263267
}
268+
269+
func TestPrepareWikiFileName_FirstPage(t *testing.T) {
270+
models.PrepareTestEnv(t)
271+
272+
// Now create a temporaryDirectory
273+
tmpDir, err := ioutil.TempDir("", "empty-wiki")
274+
assert.NoError(t, err)
275+
defer func() {
276+
if _, err := os.Stat(tmpDir); !os.IsNotExist(err) {
277+
_ = util.RemoveAll(tmpDir)
278+
}
279+
}()
280+
281+
err = git.InitRepository(tmpDir, true)
282+
assert.NoError(t, err)
283+
284+
gitRepo, err := git.OpenRepository(tmpDir)
285+
defer gitRepo.Close()
286+
assert.NoError(t, err)
287+
288+
existence, newWikiPath, err := prepareWikiFileName(gitRepo, "Home")
289+
assert.False(t, existence)
290+
assert.NoError(t, err)
291+
assert.Equal(t, "Home.md", newWikiPath)
292+
}

0 commit comments

Comments
 (0)