|  | // Copyright 2018 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 static | 
|  |  | 
|  | import ( | 
|  | "bytes" | 
|  | "io/ioutil" | 
|  | "runtime" | 
|  | "strconv" | 
|  | "testing" | 
|  | "unicode" | 
|  | ) | 
|  |  | 
|  | func TestStaticIsUpToDate(t *testing.T) { | 
|  | if runtime.GOOS == "android" { | 
|  | t.Skip("files not available on android") | 
|  | } | 
|  | oldBuf, err := ioutil.ReadFile("static.go") | 
|  | if err != nil { | 
|  | t.Errorf("error while reading static.go: %v\n", err) | 
|  | } | 
|  |  | 
|  | newBuf, err := Generate() | 
|  | if err != nil { | 
|  | t.Errorf("error while generating static.go: %v\n", err) | 
|  | } | 
|  |  | 
|  | if !bytes.Equal(oldBuf, newBuf) { | 
|  | t.Error(`static.go is stale.  Run: | 
|  | $ go generate golang.org/x/tools/godoc/static | 
|  | $ git diff | 
|  | to see the differences.`) | 
|  |  | 
|  | } | 
|  | } | 
|  |  | 
|  | // TestAppendQuote ensures that AppendQuote produces a valid literal. | 
|  | func TestAppendQuote(t *testing.T) { | 
|  | var in, out bytes.Buffer | 
|  | for r := rune(0); r < unicode.MaxRune; r++ { | 
|  | in.WriteRune(r) | 
|  | } | 
|  | appendQuote(&out, in.Bytes()) | 
|  | in2, err := strconv.Unquote(out.String()) | 
|  | if err != nil { | 
|  | t.Fatalf("AppendQuote produced invalid string literal: %v", err) | 
|  | } | 
|  | if got, want := in2, in.String(); got != want { | 
|  | t.Fatal("AppendQuote modified string") // no point printing got/want: huge | 
|  | } | 
|  | } |