From 178e0bfc2d8709ae4d3abd7519b260df09b2d3b5 Mon Sep 17 00:00:00 2001 From: Marc Pervaz Boocha Date: Sat, 2 Aug 2025 22:23:13 +0530 Subject: Switched to go.sudomsg.com/kit --- repo/repo.go | 7 +-- repo/repo_test.go | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 repo/repo_test.go (limited to 'repo') diff --git a/repo/repo.go b/repo/repo.go index 2c052d6..b3eeef0 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -6,7 +6,7 @@ import ( "fmt" "html/template" "net/http" - "strings" + "path" ) //go:embed meta.html @@ -45,8 +45,9 @@ func New(repo map[string]Repo) (*RepoHandler, error) { } func (h *RepoHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - key := fmt.Sprintf("%s%s", r.Host, r.URL.Path) - key = strings.TrimSuffix(key, "/") + host := r.Host + path := path.Clean(r.URL.Path) + key := host + path page, ok := h.Pages[key] if !ok { diff --git a/repo/repo_test.go b/repo/repo_test.go new file mode 100644 index 0000000..57f249c --- /dev/null +++ b/repo/repo_test.go @@ -0,0 +1,137 @@ +package repo_test + +import ( + "bytes" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "go.sudomsg.com/gopkgserver/repo" +) + +func TestMetaExec(t *testing.T) { + t.Parallel() + + meta, err := repo.NewMeta() + if err != nil { + t.Fatalf("failed to create Meta: %v", err) + } + + pkg := "example.com/foo" + r := repo.Repo{ + VCS: "git", + Repository: "https://github.com/user/foo", + Home: "https://github.com/user/foo", + Directory: "https://github.com/user/foo/tree/master{/dir}", + File: "https://github.com/user/foo/blob/master{/dir}/{file}#L{line}", + } + + html, err := meta.Exec(pkg, r) + if err != nil { + t.Fatalf("Exec failed: %v", err) + } + + htmlStr := string(html) + if !strings.Contains(htmlStr, `