Move OutputFilterTest#testStatusCmdPrinted to a shell test
Trade-off of extra overhead of shell test seems worth it to get rid of the
reflection hoops in the java test
PiperOrigin-RevId: 302730909
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
index 49c06ce..791c0dc 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
@@ -13,8 +13,7 @@
)
# Redirection for util lib to allow exporting both ":util_internal" and the
-# implementation of RulesModule, StrategyModule and WorkspaceStatuusModule
-# as named in
+# implementation of RulesModule and WorkspaceStatuusModule as named in
# src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
java_library(
name = "util",
@@ -70,7 +69,6 @@
"//src/test/java/com/google/devtools/build/lib/testutil",
"//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
"//src/test/java/com/google/devtools/build/lib/testutil:TestUtils",
- "//src/test/java/com/google/devtools/build/lib/vfs:testutil",
"//src/test/java/com/google/devtools/build/lib/vfs/util",
"//third_party:guava",
"//third_party:junit4",
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/TestWorkspaceStatusModule.java b/src/test/java/com/google/devtools/build/lib/buildtool/util/TestWorkspaceStatusModule.java
deleted file mode 100644
index 734e4a5..0000000
--- a/src/test/java/com/google/devtools/build/lib/buildtool/util/TestWorkspaceStatusModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.buildtool.util;
-
-import com.google.devtools.build.lib.runtime.BlazeModule;
-import com.google.devtools.build.lib.testutil.TestConstants;
-
-/** Get the workspace status module for tests. */
-public class TestWorkspaceStatusModule {
- public static BlazeModule getModule() {
- try {
- Class<?> moduleClass = Class.forName(TestConstants.TEST_WORKSPACE_STATUS_MODULE);
- return (BlazeModule) moduleClass.getConstructor().newInstance();
- } catch (Exception e) {
- throw new IllegalStateException(e);
- }
- }
-}
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 a7b4acd..fffd6b4 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
@@ -18,16 +18,13 @@
import com.google.common.base.Joiner;
import com.google.devtools.build.lib.buildtool.util.BuildIntegrationTestCase;
-import com.google.devtools.build.lib.buildtool.util.TestWorkspaceStatusModule;
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.BlazeModule;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.testutil.Suite;
import com.google.devtools.build.lib.testutil.TestSpec;
-import com.google.devtools.build.lib.vfs.Path;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -38,7 +35,6 @@
@RunWith(JUnit4.class)
public class OutputFilterTest extends BuildIntegrationTestCase {
private EventCollector stderr = new EventCollector(EventKind.STDERR);
- private Path workspaceScript;
// Cast warnings are silenced by default.
private void enableCastWarnings() throws Exception {
@@ -51,11 +47,6 @@
}
@Override
- protected BlazeModule getBuildInfoModule() {
- return TestWorkspaceStatusModule.getModule();
- }
-
- @Override
protected BlazeRuntime.Builder getRuntimeBuilder() throws Exception {
return super.getRuntimeBuilder().addBlazeModule(new OutputFilteringModule());
}
@@ -165,8 +156,6 @@
" int i = (int) 0;",
" }",
"}");
- workspaceScript = write("wrk", "echo STATUS_CMD_HAS_RUN >&2");
- workspaceScript.setExecutable(true);
// Always enable cast warnings.
enableCastWarnings();
@@ -329,23 +318,6 @@
}
@Test
- public void testStatusCmdPrinted() throws Exception {
- addOptions("--auto_output_filter=packages",
- "--workspace_status_command=" + workspaceScript.getPathString());
- CommandEnvironment env = runtimeWrapper.newCommand();
- env.getReporter().addHandler(stderr);
- buildTarget("//javatests/a", "//java/b");
- assertEvent("STATUS_CMD_HAS_RUN");
-
- addOptions("--auto_output_filter=subpackages",
- "--workspace_status_command=" + workspaceScript.getPathString());
- env = runtimeWrapper.newCommand();
- env.getReporter().addHandler(stderr);
- buildTarget("//javatests/a", "//java/b");
- assertEvent("STATUS_CMD_HAS_RUN");
- }
-
- @Test
public void testEmptyFilter() throws Exception {
enableDeprecationWarnings();
addOptions("--output_filter=");
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
index af0322c..73d752d 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
@@ -88,8 +88,6 @@
"com.google.devtools.build.lib.bazel.rules.BazelStrategyModule";
public static final String TEST_REAL_UNIX_FILE_SYSTEM =
"com.google.devtools.build.lib.unix.UnixFileSystem";
- public static final String TEST_WORKSPACE_STATUS_MODULE =
- "com.google.devtools.build.lib.bazel.BazelWorkspaceStatusModule";
public static void processSkyframeExecutorForTesting(SkyframeExecutor skyframeExecutor) {}
diff --git a/src/test/shell/integration/output_filter_test.sh b/src/test/shell/integration/output_filter_test.sh
index abac72b..249611f 100755
--- a/src/test/shell/integration/output_filter_test.sh
+++ b/src/test/shell/integration/output_filter_test.sh
@@ -318,4 +318,47 @@
deprecated target '//$pkg/ether:ether': Disproven"
}
+function test_workspace_status_command_error_output_printed() {
+ if type try_with_timeout >&/dev/null; then
+ # TODO(bazel-team): Hack to disable test since Bazel's
+ # workspace_status_cmd's stderr isn't reported. Determine if this a bug or
+ # a feature.
+ return
+ fi
+
+ local -r pkg="$FUNCNAME"
+
+ mkdir -p "$pkg"
+ cat >"$pkg/BUILD" <<EOF
+genrule(name = 'foo', outs = ['foo.txt'], cmd = 'touch \$@')
+EOF
+
+ local status_cmd="$TEST_TMPDIR/status_cmd.sh"
+
+ cat >"$status_cmd" <<EOF
+#!/bin/bash
+
+echo 'STATUS_COMMAND_RAN' >&2
+EOF
+ chmod +x "$status_cmd" || fail "Failed to mark $status_cmd executable"
+
+ bazel build --workspace_status_command="$status_cmd" \
+ --auto_output_filter=packages \
+ "//$pkg:foo" >&"$TEST_log" \
+ || fail "Expected success"
+ expect_log STATUS_COMMAND_RAN
+
+ bazel build --workspace_status_command="$status_cmd" \
+ --auto_output_filter=subpackages \
+ "//$pkg:foo" >&"$TEST_log" \
+ || fail "Expected success"
+ expect_log STATUS_COMMAND_RAN
+
+ bazel build --workspace_status_command="$status_cmd" \
+ --auto_output_filter=all \
+ "//$pkg:foo" >&"$TEST_log" \
+ || fail "Expected success"
+ expect_not_log STATUS_COMMAND_RAN
+}
+
run_suite "Warning Filter tests"