diff --git a/BUILD.bazel b/BUILD.bazel index ea7f297a9..da9488d5c 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -6,6 +6,12 @@ config_setting( values = {"cpu": "x64_windows"}, ) +filegroup( + name = "warnings", + srcs = ["WARNINGS.md"], + visibility = ["//warn:__pkg__"] +) + test_suite( name = "tests", tests = [ @@ -18,6 +24,7 @@ test_suite( "//extra_actions_base_proto:extra_actions_base.gen.pb.go_checkshtest", "//lang:tables.gen.go_checkshtest", "//tables:go_default_test", + "//warn:go_default_test", "//wspace:go_default_test", ], ) diff --git a/warn/BUILD.bazel b/warn/BUILD.bazel index f1b7553aa..e2fe90f62 100644 --- a/warn/BUILD.bazel +++ b/warn/BUILD.bazel @@ -25,9 +25,10 @@ go_library( ) go_test( - name = "warn_test", + name = "go_default_test", size = "small", srcs = [ + "documentation_test.go", "types_test.go", "warn_bazel_api_test.go", "warn_bazel_operation_test.go", @@ -40,6 +41,9 @@ go_test( "warn_test.go", ], embed = [":go_default_library"], + data = [ + "//:warnings", + ], deps = [ "//testutils", ], diff --git a/warn/documentation_test.go b/warn/documentation_test.go new file mode 100644 index 000000000..ee1bc01f4 --- /dev/null +++ b/warn/documentation_test.go @@ -0,0 +1,37 @@ +package warn + +import ( + "fmt" + "io/ioutil" + "strings" + "testing" + + "github.com/bazelbuild/buildtools/testutils" +) + +func TestWarningsDocumentation(t *testing.T) { + files, chdir := testutils.FindTests(t, "", "WARNINGS.md") + defer chdir() + + if len(files) != 1 { + t.Fatalf("Expected to find exactly one WARNINGS.md file, got %d instead", len(files)) + } + data, err := ioutil.ReadFile(files[0]) + if err != nil { + t.Fatal(err) + return + } + + contents := string(data) + for _, warning := range AllWarnings { + link := fmt.Sprintf(" * [%s](#%s)", warning, warning) + if !strings.Contains(contents, link) { + t.Errorf("No link (%q) found for the warning %q in WARNINGS.md, is it documented?", link, warning) + } + + anchor := fmt.Sprintf(``, warning) + if !strings.Contains(contents, anchor) { + t.Errorf("No anchor (%q) found for the warning %q in WARNINGS.md, is it documented?", anchor, warning) + } + } +}