Introduce interface for BugReport to facilitate tests which intentionally send bug reports.

PiperOrigin-RevId: 256213266
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 6949316..0e53bf6 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -1262,7 +1262,7 @@
 
 java_library(
     name = "bug-report",
-    srcs = ["bugreport/BugReport.java"],
+    srcs = glob(["bugreport/*.java"]),
     deps = [
         ":blaze-version-info",
         ":custom-exit-code-publisher",
diff --git a/src/main/java/com/google/devtools/build/lib/bugreport/BugReport.java b/src/main/java/com/google/devtools/build/lib/bugreport/BugReport.java
index 714ca3d..8448a77 100644
--- a/src/main/java/com/google/devtools/build/lib/bugreport/BugReport.java
+++ b/src/main/java/com/google/devtools/build/lib/bugreport/BugReport.java
@@ -40,6 +40,8 @@
  */
 public abstract class BugReport {
 
+  static final BugReporter REPORTER_INSTANCE = BugReport::sendBugReport;
+
   private BugReport() {}
 
   private static final Logger logger = Logger.getLogger(BugReport.class.getName());
diff --git a/src/main/java/com/google/devtools/build/lib/bugreport/BugReporter.java b/src/main/java/com/google/devtools/build/lib/bugreport/BugReporter.java
new file mode 100644
index 0000000..3a6c96e1
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/bugreport/BugReporter.java
@@ -0,0 +1,30 @@
+// Copyright 2019 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.bugreport;
+
+/**
+ * Logs bug reports.
+ *
+ * <p>This interface is generally fulfilled by {@link #defaultInstance}. It exists to facilitate
+ * alternate implementations in tests that intentionally send bug reports, since the default
+ * instance throws if invoked during a test case.
+ */
+public interface BugReporter {
+
+  static BugReporter defaultInstance() {
+    return BugReport.REPORTER_INSTANCE;
+  }
+
+  void sendBugReport(Throwable exception);
+}