...
1
16
17 package main
18
19 import (
20 "io/ioutil"
21 "os"
22 "path"
23 "testing"
24
25 "github.com/bazelbuild/buildtools/testutils"
26 "github.com/bazelbuild/buildtools/warn"
27 )
28
29 func TestAllWarningsAreDocumented(t *testing.T) {
30 testdata := path.Join(os.Getenv("TEST_SRCDIR"), os.Getenv("TEST_WORKSPACE"))
31
32 textprotoPath := path.Join(testdata, "warn", "docs", "warnings.textproto")
33 warnings, err := readWarningsFromFile(textprotoPath)
34 if err != nil {
35 t.Fatalf("getWarnings(%q) = %v", textprotoPath, err)
36 }
37
38 names := make(map[string]bool)
39 for _, w := range warnings.Warnings {
40 for _, n := range w.Name {
41 names[n] = true
42 }
43 }
44
45 for _, n := range warn.AllWarnings {
46 if !names[n] {
47 t.Errorf("warning %q is not documented in warn/docs/warnings.textproto", n)
48 }
49 }
50 }
51
52 func TestFilesMatch(t *testing.T) {
53 testdata := path.Join(os.Getenv("TEST_SRCDIR"), os.Getenv("TEST_WORKSPACE"))
54
55 generatedPath := path.Join(testdata, "warn", "docs", "WARNINGS.md")
56 generated, err := ioutil.ReadFile(generatedPath)
57 if err != nil {
58 t.Fatalf("ReadFile(%q) = %v", generatedPath, err)
59 }
60
61 checkedInPath := path.Join(testdata, "WARNINGS.md")
62 checkedIn, err := ioutil.ReadFile(checkedInPath)
63 if err != nil {
64 t.Fatalf("ReadFile(%q) = %v", checkedInPath, err)
65 }
66
67 d, err := testutils.Diff(generated, checkedIn)
68 if err != nil {
69 t.Fatalf("diff(generated, checkedIn) returns error:", err)
70 }
71 if len(d) != 0 {
72 t.Errorf("diff(generated, checkedIn) = %v\n", string(d))
73 t.Errorf("To update the documentation, run `bazel build //warn/docs:warnings_docs && cp bazel-bin/warn/docs/WARNINGS.md .`")
74 }
75 }
76
View as plain text