重构项目

This commit is contained in:
dragon
2025-11-13 17:32:49 +08:00
parent c7c6180272
commit 54bbef0205
24 changed files with 559 additions and 305 deletions

View File

@@ -11,6 +11,8 @@ import (
"github.com/pkg/errors"
"go.uber.org/zap"
"gopkg.d7z.net/gitea-pages/pkg"
"gopkg.d7z.net/middleware/kv"
"gopkg.d7z.net/middleware/tools"
)
type TestServer struct {
@@ -18,31 +20,39 @@ type TestServer struct {
dummy *ProviderDummy
}
type SvcOpts func(options *pkg.ServerOptions)
func NewDefaultTestServer() *TestServer {
return NewTestServer("example.com", func(options *pkg.ServerOptions) {
options.CacheMetaTTL = 0
})
return NewTestServer("example.com")
}
func NewTestServer(domain string, opts ...SvcOpts) *TestServer {
func NewTestServer(domain string) *TestServer {
atom := zap.NewAtomicLevel()
atom.SetLevel(zap.DebugLevel)
cfg := zap.NewProductionConfig()
cfg.Level = atom
logger, _ := cfg.Build()
zap.ReplaceGlobals(logger)
options := pkg.DefaultOptions(domain)
for _, opt := range opts {
opt(&options)
}
dummy, err := NewDummy()
if err != nil {
zap.S().Fatal(err)
}
server := pkg.NewPageServer(dummy, options)
memoryKV, _ := kv.NewMemory("")
server := pkg.NewPageServer(
http.DefaultClient,
dummy,
domain,
"gh-pages",
memoryKV,
tools.NewPrefixKV(memoryKV, "cache"),
0,
func(w http.ResponseWriter, r *http.Request, err error) {
if errors.Is(err, os.ErrNotExist) {
http.Error(w, "page not found.", http.StatusNotFound)
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
},
)
return &TestServer{
dummy: dummy,
@@ -77,5 +87,5 @@ func (t *TestServer) OpenFile(url string) ([]byte, *http.Response, error) {
}
func (t *TestServer) Close() error {
return t.server.Close()
return nil
}

34
tests/filter_qjs_test.go Normal file
View File

@@ -0,0 +1,34 @@
package tests
import (
"testing"
"github.com/stretchr/testify/assert"
"gopkg.d7z.net/gitea-pages/tests/core"
)
func Test_JS(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/index.js", `
function get(a,b) {
return a + b;
}
request.Write()
`)
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: "api/v1/**"
qjs:
exec: "index.js"
`)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/api/v1/get")
assert.NoError(t, err)
assert.Equal(t, "512 + 512 = 1024", string(data))
}

View File

@@ -5,8 +5,6 @@ import (
"github.com/stretchr/testify/assert"
"gopkg.d7z.net/gitea-pages/tests/core"
_ "gopkg.d7z.net/gitea-pages/pkg/renders"
)
func Test_Filter_Template(t *testing.T) {
@@ -15,9 +13,12 @@ func Test_Filter_Template(t *testing.T) {
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/tmpl/index.html", "hello world,{{ .Request.Host }}")
server.AddFile("org1/repo1/gh-pages/tmpl/ignore.html", "hello world, No Template")
server.AddFile("org1/repo1/gh-pages/tmpl/include.txt", "master")
server.AddFile("org1/repo1/gh-pages/tmpl/include.html", `hello world, {{ load "tmpl/include.txt" }}`)
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: tmpl/index.html
- path: tmpl/index.html,tmpl/include.html
template:
`)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
@@ -31,4 +32,7 @@ routes:
data, _, err = server.OpenFile("https://org1.example.com/repo1/tmpl/ignore.html")
assert.NoError(t, err)
assert.Equal(t, "hello world, No Template", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/tmpl/include.html")
assert.NoError(t, err)
assert.Equal(t, "hello world, master", string(data))
}