Skip to content

Commit 65307e7

Browse files
committed
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>
1 parent e830650 commit 65307e7

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-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

+28
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
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"
1316
"github.com/stretchr/testify/assert"
1417
)
1518

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

0 commit comments

Comments
 (0)