aboutsummaryrefslogtreecommitdiff
path: root/cmd/pkgsite
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2021-08-19 12:13:13 -0400
committerJonathan Amsterdam <jba@google.com>2021-08-20 16:42:48 +0000
commita0baa6d6bb2c7d0c1cfb04560562f30de19c2645 (patch)
tree89a483b5c6c199eef127af30c02621fc56d103a3 /cmd/pkgsite
parenta4db1818e75a1b092428626d2d1dd11146d5ed29 (diff)
downloadgo-x-pkgsite-a0baa6d6bb2c7d0c1cfb04560562f30de19c2645.tar.xz
cmd/pkgsite: add a test
Add a small test to the pkgsite command to make sure it's working. For golang/go#47780 Change-Id: I276feeacbc11b18ceb054902fe6b0c1c2c2ab923 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/343630 Trust: Jonathan Amsterdam <jba@google.com> Run-TryBot: Jonathan Amsterdam <jba@google.com> TryBot-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'cmd/pkgsite')
-rw-r--r--cmd/pkgsite/main.go33
-rw-r--r--cmd/pkgsite/main_test.go29
2 files changed, 47 insertions, 15 deletions
diff --git a/cmd/pkgsite/main.go b/cmd/pkgsite/main.go
index ed031919..6d3cb581 100644
--- a/cmd/pkgsite/main.go
+++ b/cmd/pkgsite/main.go
@@ -55,36 +55,39 @@ func main() {
paths = "."
}
- lds := localdatasource.New(source.NewClient(time.Second))
- dsg := func(context.Context) internal.DataSource { return lds }
- server, err := frontend.NewServer(frontend.ServerConfig{
- DataSourceGetter: dsg,
- StaticPath: template.TrustedSourceFromFlag(flag.Lookup("static").Value),
- })
+ server, err := newServer(ctx, strings.Split(paths, ","), *gopathMode)
if err != nil {
- log.Fatalf(ctx, "frontend.NewServer: %v", err)
+ log.Fatalf(ctx, "newServer: %v", err)
}
-
- load(ctx, lds, paths)
-
router := dcensus.NewRouter(frontend.TagRoute)
server.Install(router.Handle, nil, nil)
-
mw := middleware.Timeout(54 * time.Second)
log.Infof(ctx, "Listening on addr %s", *httpAddr)
log.Fatal(ctx, http.ListenAndServe(*httpAddr, mw(router)))
}
+func newServer(ctx context.Context, paths []string, gopathMode bool) (*frontend.Server, error) {
+ lds := localdatasource.New(source.NewClient(time.Second))
+ server, err := frontend.NewServer(frontend.ServerConfig{
+ DataSourceGetter: func(context.Context) internal.DataSource { return lds },
+ StaticPath: template.TrustedSourceFromFlag(flag.Lookup("static").Value),
+ })
+ if err != nil {
+ return nil, err
+ }
+ addGetters(ctx, lds, paths, gopathMode)
+ return server, nil
+}
+
// load loads local modules from pathList.
-func load(ctx context.Context, ds *localdatasource.DataSource, pathList string) {
- paths := strings.Split(pathList, ",")
+func addGetters(ctx context.Context, ds *localdatasource.DataSource, paths []string, gopathMode bool) {
loaded := len(paths)
for _, path := range paths {
var (
mg fetch.ModuleGetter
err error
)
- if *gopathMode {
+ if gopathMode {
mg, err = localdatasource.NewGOPATHModuleGetter(path)
} else {
mg, err = fetch.NewDirectoryModuleGetter("", path)
@@ -98,6 +101,6 @@ func load(ctx context.Context, ds *localdatasource.DataSource, pathList string)
}
if loaded == 0 {
- log.Fatalf(ctx, "failed to load module(s) at %s", pathList)
+ log.Fatalf(ctx, "failed to load module(s) at %v", paths)
}
}
diff --git a/cmd/pkgsite/main_test.go b/cmd/pkgsite/main_test.go
new file mode 100644
index 00000000..f0db81d1
--- /dev/null
+++ b/cmd/pkgsite/main_test.go
@@ -0,0 +1,29 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "context"
+ "flag"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+)
+
+func Test(t *testing.T) {
+ flag.Set("static", "../../static")
+ server, err := newServer(context.Background(), []string{"../../internal/fetch/testdata/has_go_mod"}, false)
+ if err != nil {
+ t.Fatal(err)
+ }
+ mux := http.NewServeMux()
+ server.Install(mux.Handle, nil, nil)
+ w := httptest.NewRecorder()
+
+ mux.ServeHTTP(w, httptest.NewRequest("GET", "/example.com/testmod", nil))
+ if w.Code != http.StatusOK {
+ t.Errorf("%q: got status code = %d, want %d", "/testmod", w.Code, http.StatusOK)
+ }
+}