修复路径回退的问题
This commit is contained in:
@@ -52,19 +52,22 @@ func (p *PageDomain) ParseDomainMeta(domain, path, branch string) (*PageDomainCo
|
||||
}
|
||||
owner := strings.TrimSuffix(domain, "."+p.baseDomain)
|
||||
repo := pathArr[0]
|
||||
var returnMeta *PageDomainContent
|
||||
var err error
|
||||
if repo == "" {
|
||||
// 回退到默认仓库
|
||||
repo = p.baseDomain
|
||||
zap.L().Debug("fail back to default repo", zap.String("repo", repo))
|
||||
// 回退到默认仓库 (路径未包含仓库)
|
||||
zap.L().Debug("fail back to default repo", zap.String("repo", domain))
|
||||
returnMeta, err = p.ReturnMeta(owner, domain, branch, pathArr)
|
||||
} else {
|
||||
returnMeta, err = p.ReturnMeta(owner, repo, branch, pathArr[1:])
|
||||
}
|
||||
returnMeta, err := p.ReturnMeta(owner, repo, branch, pathArr[1:])
|
||||
if err != nil && !errors.Is(err, os.ErrNotExist) {
|
||||
return nil, err
|
||||
} else if err == nil {
|
||||
return returnMeta, nil
|
||||
}
|
||||
// 回退到默认页面
|
||||
return p.ReturnMeta(owner, repo, domain, pathArr)
|
||||
// 发现 repo 的情况下回退到默认页面
|
||||
return p.ReturnMeta(owner, domain, branch, pathArr)
|
||||
}
|
||||
|
||||
func (p *PageDomain) ReturnMeta(owner string, repo string, branch string, path []string) (*PageDomainContent, error) {
|
||||
|
||||
@@ -54,6 +54,48 @@ alias:
|
||||
assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/index.html")
|
||||
}
|
||||
|
||||
func Test_fail_back(t *testing.T) {
|
||||
t.Run("default", func(t *testing.T) {
|
||||
server := core.NewDefaultTestServer()
|
||||
defer server.Close()
|
||||
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world")
|
||||
data, _, err := server.OpenFile("https://org1.example.com/")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "hello world", string(data))
|
||||
})
|
||||
t.Run("child_default", func(t *testing.T) {
|
||||
server := core.NewDefaultTestServer()
|
||||
defer server.Close()
|
||||
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
|
||||
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
|
||||
data, _, err := server.OpenFile("https://org1.example.com/child/")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "hello world 2", string(data))
|
||||
})
|
||||
|
||||
t.Run("child_exist", func(t *testing.T) {
|
||||
server := core.NewDefaultTestServer()
|
||||
defer server.Close()
|
||||
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
|
||||
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
|
||||
server.AddFile("org1/child/gh-pages/index.html", "hello world 3")
|
||||
data, _, err := server.OpenFile("https://org1.example.com/child/")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "hello world 3", string(data))
|
||||
})
|
||||
|
||||
t.Run("child_exist_failback", func(t *testing.T) {
|
||||
server := core.NewDefaultTestServer()
|
||||
defer server.Close()
|
||||
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
|
||||
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
|
||||
server.AddFile("org1/child/gh-pages/no.html", "hello world 3")
|
||||
data, _, err := server.OpenFile("https://org1.example.com/child/")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "hello world 2", string(data))
|
||||
})
|
||||
}
|
||||
|
||||
func Test_get_v_route(t *testing.T) {
|
||||
server := core.NewDefaultTestServer()
|
||||
defer server.Close()
|
||||
|
||||
Reference in New Issue
Block a user