Simplify and enable outputfilter tests

For OutputFilter a whole bunch of fake java code, tweaking flags, and
reconstructing error messages seems like a bit of overkill to test an
interface that just converts a string to a boolean. Remove all of that and
focus on the basic functionality - we have shell tests elsewhere that should
verify enough of the end-to-end functionality.

For AutoOutputFilter creating BUILD files was superfluous and the only thing
pulling in BuildIntegrationTestCase, so remove it. I avoided going too deep
on that test, just did bare minimum to cut BuildIntegrationTestCase out.

PiperOrigin-RevId: 379723974
diff --git a/src/main/java/com/google/devtools/build/lib/events/OutputFilter.java b/src/main/java/com/google/devtools/build/lib/events/OutputFilter.java
index b5fe412..bea4ddf 100644
--- a/src/main/java/com/google/devtools/build/lib/events/OutputFilter.java
+++ b/src/main/java/com/google/devtools/build/lib/events/OutputFilter.java
@@ -42,10 +42,8 @@
    */
   boolean showOutput(String tag);
 
-  /**
-   * An output filter using regular expression matching.
-   */
-  public static final class RegexOutputFilter implements OutputFilter {
+  /** An output filter using regular expression matching. */
+  final class RegexOutputFilter implements OutputFilter {
     /** Returns an output filter for the given regex (by compiling it). */
     public static OutputFilter forRegex(String regex) {
       return new RegexOutputFilter(Pattern.compile(regex));
diff --git a/src/test/java/com/google/devtools/build/lib/outputfilter/AutoOutputFilterTest.java b/src/test/java/com/google/devtools/build/lib/outputfilter/AutoOutputFilterTest.java
index db45197..00b2603 100644
--- a/src/test/java/com/google/devtools/build/lib/outputfilter/AutoOutputFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/outputfilter/AutoOutputFilterTest.java
@@ -25,7 +25,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ListMultimap;
-import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.events.OutputFilter;
 import java.util.List;
@@ -33,11 +32,9 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/**
- * Tests for the {@link AutoOutputFilter} class.
- */
+/** Tests for the {@link AutoOutputFilter} class. */
 @RunWith(JUnit4.class)
-public class AutoOutputFilterTest extends BuildViewTestCase {
+public class AutoOutputFilterTest {
   @Test
   public void testNoneAOF() throws Exception {
     assertThat(NONE.getFilter(targets())).isEqualTo(OutputFilter.OUTPUT_EVERYTHING);
@@ -109,17 +106,6 @@
       targetsPerPackage.put(label.getPackageName(), label.getName());
     }
 
-    // Create BUILD file for each package
-    for (String pkg : targetsPerPackage.keySet()) {
-      StringBuilder contents = new StringBuilder();
-      for (String target : targetsPerPackage.get(pkg)) {
-        contents.append("sh_library(name='" + target + "');");
-      }
-      scratch.overwriteFile(pkg + "/BUILD", contents.toString());
-    }
-
-    invalidatePackages();
-
     // Collect targets
     ImmutableList.Builder<Label> targets = ImmutableList.builder();
     for (String targetName : targetLabels) {
diff --git a/src/test/java/com/google/devtools/build/lib/outputfilter/BUILD b/src/test/java/com/google/devtools/build/lib/outputfilter/BUILD
index aa48f6f..49708fd 100644
--- a/src/test/java/com/google/devtools/build/lib/outputfilter/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/outputfilter/BUILD
@@ -5,31 +5,24 @@
     default_visibility = ["//src:__subpackages__"],
 )
 
-licenses(["notice"])  # Apache 2.0
-
 filegroup(
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
     name = "OutputFilterTests",
     srcs = glob(["*.java"]),
-    # TODO(bazel-team) The test is currently broken due to BazelAnalysisMock not supporting integration tests.
-    tags = ["manual"],
     test_class = "com.google.devtools.build.lib.AllTests",
-    runtime_deps = ["//src/test/java/com/google/devtools/build/lib:test_runner"],
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/events",
         "//src/main/java/com/google/devtools/build/lib/outputfilter",
-        "//src/main/java/com/google/devtools/build/lib/unix",
-        "//src/main/java/com/google/devtools/build/lib/vfs",
-        "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//src/test/java/com/google/devtools/build/lib/buildtool/util",
         "//third_party:guava",
         "//third_party:junit4",
         "//third_party:truth",
diff --git a/src/test/java/com/google/devtools/build/lib/outputfilter/OutputFilterTest.java b/src/test/java/com/google/devtools/build/lib/outputfilter/OutputFilterTest.java
index cf5e6ac..52d0a20 100644
--- a/src/test/java/com/google/devtools/build/lib/outputfilter/OutputFilterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/outputfilter/OutputFilterTest.java
@@ -14,359 +14,45 @@
 
 package com.google.devtools.build.lib.outputfilter;
 
-import static org.junit.Assert.fail;
+import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Joiner;
-import com.google.devtools.build.lib.buildtool.util.BuildIntegrationTestCase;
-import com.google.devtools.build.lib.events.Event;
-import com.google.devtools.build.lib.events.EventCollector;
-import com.google.devtools.build.lib.events.EventKind;
-import com.google.devtools.build.lib.runtime.BlazeRuntime;
-import com.google.devtools.build.lib.runtime.CommandEnvironment;
-import org.junit.Before;
+import com.google.devtools.build.lib.events.OutputFilter;
+import java.util.regex.Pattern;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
 /** Tests for the {@code --output_filter} option. */
 @RunWith(JUnit4.class)
-public class OutputFilterTest extends BuildIntegrationTestCase {
-  private EventCollector stderr = new EventCollector(EventKind.STDERR);
+public class OutputFilterTest {
 
-  // Cast warnings are silenced by default.
-  private void enableCastWarnings() throws Exception {
-    addOptions("--javacopt=\"-Xlint:cast\"");
-  }
-
-  // Deprecation warnings are silenced by default.
-  private void enableDeprecationWarnings() throws Exception {
-    addOptions("--javacopt=\"-Xlint:deprecation\"");
-  }
-
-  @Override
-  protected BlazeRuntime.Builder getRuntimeBuilder() throws Exception {
-    return super.getRuntimeBuilder().addBlazeModule(new OutputFilteringModule());
-  }
-
-  @Before
-  public final void writeFiles() throws Exception  {
-    write("java/a/BUILD",
-        "java_library(name = 'a',",
-        "            srcs = ['A.java']," +
-        "            deps = ['//java/b'])");
-    write("java/a/A.java",
-        "package a;",
-        "public class A {",
-        "  public static void a() { b.B.b(); }",
-        "}");
-    write("java/b/BUILD",
-        "java_library(name = 'b',",
-        "             srcs = ['B.java']," +
-        "             deps = ['//java/c'])");
-    write("java/b/B.java",
-        "package b;",
-        "public class B {",
-        "  @Deprecated public static void b() {}",
-        "  public static void x() { c.C.c(); }",
-        "}");
-    write("java/c/BUILD",
-        "java_library(name = 'c',",
-        "             srcs = ['C.java'])");
-    write("java/c/C.java",
-        "package c;",
-        "public class C {",
-        "  @Deprecated public static void c() {}",
-        "}");
-    write("java/d/BUILD",
-        "java_library(name = 'd',",
-        "             srcs = ['D.java'],",
-        "             deps = ['//java/e'])");
-    write(
-        "java/d/D.java",
-        "package d;",
-        "import java.lang.Integer;",
-        "import java.util.ArrayList;",
-        "public class D {",
-        "  public static void d() {",
-        "    int i = (int) 0;",
-        "    e.E.e();",
-        "  }",
-        "}");
-    write("java/e/BUILD",
-        "java_library(name = 'e',",
-        "             srcs = ['E.java'])");
-    write(
-        "java/e/E.java",
-        "package e;",
-        "import java.lang.Integer;",
-        "import java.util.LinkedList;",
-        "public class E {",
-        "  public static void e() {",
-        "    int i = (int) 0;",
-        "  }",
-        "}");
-    write("javatests/a/BUILD",
-        "java_library(name = 'a',",
-        "             srcs = ['ATest.java']," +
-        "             deps = ['//java/a', '//javatests/b'])");
-    write("javatests/a/ATest.java",
-        "package a;",
-        "public class ATest {",
-        "  public static void aTest() { a.A.a(); }",
-        "}");
-    write("javatests/b/BUILD",
-        "java_library(name = 'b',",
-        "             srcs = ['BTest.java']," +
-        "             deps = ['//java/b', '//javatests/c'])");
-    write("javatests/b/BTest.java",
-        "package b;",
-        "public class BTest {",
-        "  public static void bTest() { c.CTest.c(); }",
-        "}");
-    write("javatests/c/BUILD",
-        "java_library(name = 'c',",
-        "             srcs = ['CTest.java'])");
-    write("javatests/c/CTest.java",
-        "package c;",
-        "public class CTest {",
-        "  @Deprecated public static void c() {}",
-        "}");
-    write("javatests/d/BUILD",
-        "java_library(name = 'd',",
-        "             srcs = ['DTest.java'],",
-        "             deps = ['//java/d', '//javatests/e'])");
-    write("javatests/d/DTest.java",
-        "package d;",
-        "public class DTest {",
-        "  public static void dTest() { d.D.d(); }",
-        "}");
-    write("javatests/e/BUILD",
-        "java_library(name = 'e',",
-        "             srcs = ['ETest.java'])");
-    write(
-        "javatests/e/ETest.java",
-        "package e;",
-        "import java.lang.Integer;",
-        "import java.util.LinkedList;",
-        "public class ETest {",
-        "  public static void eTest() {",
-        "    int i = (int) 0;",
-        "  }",
-        "}");
-
-    // Always enable cast warnings.
-    enableCastWarnings();
+  @Test
+  public void testOutputEverythingAlwaysTrue() {
+    assertThat(OutputFilter.OUTPUT_EVERYTHING.showOutput("some tag")).isTrue();
+    assertThat(OutputFilter.OUTPUT_EVERYTHING.showOutput("literally anything")).isTrue();
+    assertThat(OutputFilter.OUTPUT_EVERYTHING.showOutput("even empty")).isTrue();
+    assertThat(OutputFilter.OUTPUT_EVERYTHING.showOutput("")).isTrue();
   }
 
   @Test
-  public void testExplicitFilter() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--output_filter=^//java/a");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
+  public void testOutputNothingAlwaysTrue() {
+    assertThat(OutputFilter.OUTPUT_NOTHING.showOutput("some tag")).isFalse();
+    assertThat(OutputFilter.OUTPUT_NOTHING.showOutput("literally anything")).isFalse();
+    assertThat(OutputFilter.OUTPUT_NOTHING.showOutput("even empty")).isFalse();
+    assertThat(OutputFilter.OUTPUT_NOTHING.showOutput("")).isFalse();
   }
 
   @Test
-  public void testExplicitFilterNoJavacoptOverride() throws Exception {
-    addOptions("--output_filter=^//java/d");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/d");
-
-    assertEvent("D.java:6: warning: [cast] redundant cast to int");
-    assertNoEvent("E.java:6: warning: [cast] redundant cast to int");
+  public void testRegexpFilterShowOutputMatchTagReturnsTrue() {
+    OutputFilter underTest =
+        OutputFilter.RegexOutputFilter.forPattern(Pattern.compile("^//some/target"));
+    assertThat(underTest.showOutput("//some/target")).isTrue();
   }
 
   @Test
-  public void testPackagesAOF_A() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_B() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/b");
-
-    assertNoEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_C() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/c");
-
-    assertNoEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_D() throws Exception {
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/d");
-
-    assertEvent("D.java:6: warning: [cast] redundant cast to int");
-    assertNoEvent("E.java:6: warning: [cast] redundant cast to int");
-  }
-
-  @Test
-  public void testPackagesAOF_AB() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a", "//java/b");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_AC() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a", "//java/c");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_BC() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/b", "//java/c");
-
-    assertNoEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_ABC() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a", "//java/b", "//java/c");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_javaTestsA() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//javatests/a");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
-    assertNoEvent(deprecationMessages("c", "CTest", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_javaTestsAB() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//javatests/a", "//java/b");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-    assertEvent(deprecationMessages("c", "CTest", "c"));
-  }
-
-  @Test
-  public void testPackagesAOF_javaTestsD() throws Exception {
-    addOptions("--auto_output_filter=packages");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//javatests/d");
-
-    assertEvent("D.java:6: warning: [cast] redundant cast to int");
-    assertNoEvent("E.java:6: warning: [cast] redundant cast to int");
-    assertNoEvent("ETest.java:6: warning: [cast] redundant cast to int");
-  }
-
-  @Test
-  public void testEmptyFilter() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--output_filter=");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a");
-
-    assertEvent(deprecationMessages("b", "B", "b"));
-    assertEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  @Test
-  public void testNoMatchFilter() throws Exception {
-    enableDeprecationWarnings();
-    addOptions("--output_filter=DONT_MATCH");
-    CommandEnvironment env = runtimeWrapper.newCommand();
-    env.getReporter().addHandler(stderr);
-    buildTarget("//java/a");
-
-    assertNoEvent(deprecationMessages("b", "B", "b"));
-    assertNoEvent(deprecationMessages("c", "C", "c"));
-  }
-
-  private void assertEvent(String... choices) {
-    for (Event event : stderr) {
-      for (String msg : choices) {
-        if (event.getMessage().contains(msg)) {
-          return;
-        }
-      }
-    }
-
-    fail(String.format("Expected one of [%s] in output: %s",
-        Joiner.on(',').join(choices),
-        Joiner.on('\n').join(stderr)
-        ));
-  }
-
-  private void assertNoEvent(String... choices) {
-    for (Event event : stderr) {
-      for (String msg : choices) {
-        if (event.getMessage().contains(msg)) {
-          fail("Event '" + msg + "' was found in output: \n" + Joiner.on('\n').join(stderr));
-        }
-      }
-    }
-  }
-
-  private String[] deprecationMessages(String pkg, String clazz, String method) {
-    return new String[] {
-        String.format("%s() in %s.%s has been deprecated", method, pkg, clazz), // javac6
-        String.format("%s() in %s has been deprecated", method, clazz) // javac7
-    };
+  public void testRegexpFilterShowOutputNonMatchTagReturnsFalse() {
+    OutputFilter underTest =
+        OutputFilter.RegexOutputFilter.forPattern(Pattern.compile("^//some/target"));
+    assertThat(underTest.showOutput("//not/some/target")).isFalse();
   }
 }