diff options
| -rw-r--r-- | cmd/golangorg/godev.go | 21 | ||||
| -rw-r--r-- | cmd/golangorg/godev_test.go | 48 | ||||
| -rw-r--r-- | cmd/golangorg/server.go | 14 | ||||
| -rw-r--r-- | cmd/golangorg/testdata/godev.txt | 7 |
4 files changed, 18 insertions, 72 deletions
diff --git a/cmd/golangorg/godev.go b/cmd/golangorg/godev.go index 135cd755..4bb06d5e 100644 --- a/cmd/golangorg/godev.go +++ b/cmd/golangorg/godev.go @@ -5,34 +5,13 @@ package main import ( - "io/fs" - "net/http" "sort" "strings" "time" - "golang.org/x/website/internal/backport/html/template" - "golang.org/x/website/internal/blog" "golang.org/x/website/internal/web" ) -func godevHandler(fsys fs.FS) (http.Handler, error) { - godev := web.NewSite(fsys) - godev.Funcs(template.FuncMap{ - "newest": newest, - "section": section, - }) - mux := http.NewServeMux() - mux.Handle("/", addCSP(godev)) - mux.Handle("/explore/", http.StripPrefix("/explore/", redirectPrefix("https://pkg.go.dev/"))) - - if err := blog.RegisterFeeds(mux, "", godev); err != nil { - return nil, err - } - - return mux, nil -} - // newest returns the pages sorted newest first, // breaking ties by .linkTitle or else .title. func newest(pages []web.Page) []web.Page { diff --git a/cmd/golangorg/godev_test.go b/cmd/golangorg/godev_test.go deleted file mode 100644 index 913d444c..00000000 --- a/cmd/golangorg/godev_test.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019 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 ( - "bytes" - "net/http/httptest" - "strings" - "testing" - - "golang.org/x/website" -) - -var siteTests = []struct { - target string - want []string -}{ - {"/", []string{"Go is an open source programming language supported by Google"}}, - {"/solutions/", []string{"Using Go at Google"}}, - {"/solutions/dropbox", []string{"About Dropbox"}}, -} - -func TestSite(t *testing.T) { - h, err := godevHandler(website.Godev) - if err != nil { - t.Fatal(err) - } - - for _, tt := range siteTests { - t.Run(tt.target, func(t *testing.T) { - r := httptest.NewRequest("GET", tt.target, nil) - resp := httptest.NewRecorder() - resp.Body = new(bytes.Buffer) - h.ServeHTTP(resp, r) - if resp.Code != 200 { - t.Fatalf("Code = %d, want 200", resp.Code) - } - body := resp.Body.String() - for _, str := range tt.want { - if !strings.Contains(body, str) { - t.Fatalf("Body does not contain %q:\n%s", str, body) - } - } - }) - } -} diff --git a/cmd/golangorg/server.go b/cmd/golangorg/server.go index e79e9db8..5dfe069b 100644 --- a/cmd/golangorg/server.go +++ b/cmd/golangorg/server.go @@ -34,6 +34,7 @@ import ( "golang.org/x/tools/playground" "golang.org/x/website" "golang.org/x/website/internal/backport/html/template" + "golang.org/x/website/internal/blog" "golang.org/x/website/internal/codewalk" "golang.org/x/website/internal/dl" "golang.org/x/website/internal/gitfs" @@ -197,11 +198,16 @@ func NewHandler(contentDir, goroot string) http.Handler { // (golang.org/dl and golang.google.cn/dl are registered separately.) mux.Handle("tip.golang.org/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound)) - godev, err := godevHandler(godevFS) + godevMux := http.NewServeMux() + godevSite, err := newSite(godevMux, "go.dev", godevFS, gorootFS) if err != nil { - log.Fatalf("godevHandler: %v", err) + log.Fatalf("newSite go.dev: %v", err) } - mux.Handle("go.dev/", godev) + godevMux.Handle("/explore/", http.StripPrefix("/explore/", redirectPrefix("https://pkg.go.dev/"))) + if err := blog.RegisterFeeds(godevMux, "", godevSite); err != nil { + log.Fatalf("blog: %v", err) + } + mux.Handle("go.dev/", addCSP(godevMux)) mux.Handle("blog.golang.org/", redirectPrefix("https://go.dev/blog/")) mux.Handle("learn.go.dev/", redirectPrefix("https://go.dev/learn/")) @@ -227,7 +233,9 @@ func newSite(mux *http.ServeMux, host string, content, goroot fs.FS) (*web.Site, site.Funcs(template.FuncMap{ "googleAnalytics": func() string { return googleAnalytics }, "googleCN": func() bool { return host == "golang.google.cn" }, + "newest": newest, "releases": func() []*history.Major { return history.Majors }, + "section": section, "version": func() string { return runtime.Version() }, }) docs, err := pkgdoc.NewServer(fsys, site, googleCN) diff --git a/cmd/golangorg/testdata/godev.txt b/cmd/golangorg/testdata/godev.txt index d220c2cd..651abfd9 100644 --- a/cmd/golangorg/testdata/godev.txt +++ b/cmd/golangorg/testdata/godev.txt @@ -1,6 +1,13 @@ GET https://go.dev/ +body contains Go is an open source programming language supported by Google body contains <h2 class="WhoUses-headerH2">Companies using Go</h2> +GET https://go.dev/solutions/ +body contains Using Go at Google + +GET https://go.dev/solutions/dropbox +body contains About Dropbox + GET https://go.dev/solutions/google/ body ~ it\s+has\s+powered\s+many\s+projects\s+at\s+Google. |
