diff options
| author | Jonathan Amsterdam <jba@google.com> | 2021-08-19 12:13:13 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2021-08-20 16:42:48 +0000 |
| commit | a0baa6d6bb2c7d0c1cfb04560562f30de19c2645 (patch) | |
| tree | 89a483b5c6c199eef127af30c02621fc56d103a3 /cmd/pkgsite | |
| parent | a4db1818e75a1b092428626d2d1dd11146d5ed29 (diff) | |
| download | go-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.go | 33 | ||||
| -rw-r--r-- | cmd/pkgsite/main_test.go | 29 |
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) + } +} |
