From 70706fe9694ff778b639bf76a7a624f5fb77e8d7 Mon Sep 17 00:00:00 2001 From: dragon Date: Thu, 15 May 2025 17:29:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E5=BE=84=E5=9B=9E?= =?UTF-8?q?=E9=80=80=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/core/domain.go | 15 ++++++++------ tests/pages_core_test.go | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/pkg/core/domain.go b/pkg/core/domain.go index 6b90d29..26b970a 100644 --- a/pkg/core/domain.go +++ b/pkg/core/domain.go @@ -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) { diff --git a/tests/pages_core_test.go b/tests/pages_core_test.go index bb91ea4..ceff608 100644 --- a/tests/pages_core_test.go +++ b/tests/pages_core_test.go @@ -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()