切换存储方式

This commit is contained in:
dragon
2025-11-11 10:13:53 +08:00
parent a0e6bb668e
commit aa5d6b0f10
21 changed files with 388 additions and 165 deletions

View File

@@ -3,6 +3,7 @@ package core
import (
"bytes"
"context"
"errors"
"io"
"mime"
"net/http"
@@ -60,13 +61,16 @@ func (p *ProviderDummy) Branches(ctx context.Context, owner, repo string) (map[s
return branches, nil
}
func (p *ProviderDummy) Open(ctx context.Context, _ *http.Client, owner, repo, commit, path string, _ http.Header) (*http.Response, error) {
func (p *ProviderDummy) Open(_ context.Context, _ *http.Client, owner, repo, commit, path string, _ http.Header) (*http.Response, error) {
open, err := os.Open(filepath.Join(p.BaseDir, owner, repo, commit, path))
if err != nil {
return nil, err
return nil, errors.Join(err, os.ErrNotExist)
}
all, err := io.ReadAll(open)
defer open.Close()
all, err := io.ReadAll(open)
if err != nil {
return nil, errors.Join(err, os.ErrNotExist)
}
recorder := httptest.NewRecorder()
recorder.Body = bytes.NewBuffer(all)
recorder.Header().Add("Content-Type", mime.TypeByExtension(filepath.Ext(path)))

View File

@@ -64,7 +64,7 @@ func (t *TestServer) AddFile(path, data string, args ...interface{}) {
func (t *TestServer) OpenFile(url string) ([]byte, *http.Response, error) {
recorder := httptest.NewRecorder()
t.server.ServeHTTP(recorder, httptest.NewRequest("GET", url, nil))
t.server.ServeHTTP(recorder, httptest.NewRequest(http.MethodGet, url, nil))
response := recorder.Result()
if response.Body != nil {
defer response.Body.Close()

View File

@@ -15,9 +15,9 @@ func Test_get_simple_html(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
_, resp, err := server.OpenFile("https://org1.example.com/repo1/404")
_, resp, _ := server.OpenFile("https://org1.example.com/repo1/404")
assert.NotNil(t, resp)
assert.Equal(t, resp.StatusCode, 404)
assert.Equal(t, 404, resp.StatusCode)
}
func Test_get_alias(t *testing.T) {
@@ -28,13 +28,13 @@ func Test_get_alias(t *testing.T) {
alias:
- www.example.org
`)
data, resp, err := server.OpenFile("https://www.example.org")
assert.Equal(t, resp.StatusCode, 404)
_, resp, _ := server.OpenFile("https://www.example.org")
assert.Equal(t, 404, resp.StatusCode)
data, resp, err = server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://www.example.org/")
data, resp, err = server.OpenFile("https://www.example.org")
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://www.example.org/", resp.Header.Get("Location"))
data, _, err := server.OpenFile("https://www.example.org")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
@@ -42,20 +42,20 @@ alias:
alias:
- zzz.example.top
`)
data, resp, err = server.OpenFile("https://www.example.org")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/")
_, resp, _ = server.OpenFile("https://www.example.org")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://zzz.example.top/", resp.Header.Get("Location"))
data, resp, err = server.OpenFile("https://www.example.org")
assert.Equal(t, resp.StatusCode, 404)
_, resp, _ = server.OpenFile("https://www.example.org")
assert.Equal(t, 404, resp.StatusCode)
data, resp, err = server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/")
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://zzz.example.top/", resp.Header.Get("Location"))
data, resp, err = server.OpenFile("https://org1.example.com/repo1/get/some")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/get/some")
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/get/some")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://zzz.example.top/get/some", resp.Header.Get("Location"))
}
func Test_fail_back(t *testing.T) {

View File

@@ -32,8 +32,8 @@ proxy:
assert.NoError(t, err)
assert.Equal(t, "hello data", string(data))
_, resp, err := server.OpenFile("https://org1.example.com/repo1/abi/data")
assert.Equal(t, resp.StatusCode, 404)
_, resp, _ := server.OpenFile("https://org1.example.com/repo1/abi/data")
assert.Equal(t, 404, resp.StatusCode)
}
func Test_cname_proxy(t *testing.T) {
@@ -50,18 +50,18 @@ alias:
proxy:
/api: %s/test
`, hs.URL)
_, resp, err := server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://www.example.org/")
data, resp, err := server.OpenFile("https://www.example.org")
_, resp, _ := server.OpenFile("https://org1.example.com/repo1/")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://www.example.org/", resp.Header.Get("Location"))
data, _, err := server.OpenFile("https://www.example.org")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
_, resp, err = server.OpenFile("https://org1.example.com/repo1/api")
assert.Equal(t, resp.StatusCode, 302)
assert.Equal(t, resp.Header.Get("Location"), "https://www.example.org/api")
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/api")
assert.Equal(t, 302, resp.StatusCode)
assert.Equal(t, "https://www.example.org/api", resp.Header.Get("Location"))
data, resp, err = server.OpenFile("https://www.example.org/api")
data, _, err = server.OpenFile("https://www.example.org/api")
assert.NoError(t, err)
assert.Equal(t, "hello proxy", string(data))
}

View File

@@ -5,6 +5,8 @@ import (
"github.com/stretchr/testify/assert"
"gopkg.d7z.net/gitea-pages/tests/core"
_ "gopkg.d7z.net/gitea-pages/pkg/renders"
)
func Test_get_render(t *testing.T) {