Remove some justExitCode calls in tests
Contributes to the elimination of non-detailed ExitCode use.
RELNOTES: None.
PiperOrigin-RevId: 314463838
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 a0b4989..6aabf63 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
@@ -76,7 +76,6 @@
"//src/main/java/com/google/devtools/build/lib/util",
"//src/main/java/com/google/devtools/build/lib/util:command",
"//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
- "//src/main/java/com/google/devtools/build/lib/util:exit_code",
"//src/main/java/com/google/devtools/build/lib/util/io",
"//src/main/java/com/google/devtools/build/lib/util/io:out-err",
"//src/main/java/com/google/devtools/build/lib/vfs",
@@ -84,6 +83,7 @@
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/common/options",
"//src/main/java/com/google/devtools/common/options:invocation_policy",
+ "//src/main/protobuf:failure_details_java_proto",
"//src/main/protobuf:invocation_policy_java_proto",
"//src/test/java/com/google/devtools/build/lib/actions/util",
"//src/test/java/com/google/devtools/build/lib/analysis/util",
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BlazeRuntimeWrapper.java b/src/test/java/com/google/devtools/build/lib/buildtool/util/BlazeRuntimeWrapper.java
index fe515c5..826e3e3 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BlazeRuntimeWrapper.java
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BlazeRuntimeWrapper.java
@@ -56,9 +56,11 @@
import com.google.devtools.build.lib.runtime.commands.BuildCommand;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.sandbox.SandboxOptions;
+import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn.Code;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import com.google.devtools.build.lib.util.DetailedExitCode;
-import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.io.OutErr;
import com.google.devtools.build.lib.vfs.OutputService;
import com.google.devtools.common.options.InvocationPolicyEnforcer;
@@ -367,7 +369,7 @@
null,
success
? DetailedExitCode.success()
- : DetailedExitCode.justExitCode(ExitCode.BUILD_FAILURE),
+ : DetailedExitCode.of(createGenericDetailedFailure()),
/*startSuspendCount=*/ 0);
getSkyframeExecutor().notifyCommandComplete(env.getReporter());
}
@@ -378,6 +380,12 @@
}
}
+ private static FailureDetail createGenericDetailedFailure() {
+ return FailureDetail.newBuilder()
+ .setSpawn(Spawn.newBuilder().setCode(Code.NON_ZERO_EXIT))
+ .build();
+ }
+
public BuildRequest createRequest(String commandName, List<String> targets) {
return BuildRequest.create(
commandName,
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index 2922b69..12e29b7 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -68,9 +68,11 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.NestedSetView;
+import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn.Code;
import com.google.devtools.build.lib.testutil.FoundationTestCase;
import com.google.devtools.build.lib.util.DetailedExitCode;
-import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -1222,7 +1224,7 @@
ProgressEvent.INITIAL_PROGRESS_UPDATE,
BuildEventIdUtil.buildFinished()));
BuildCompleteEvent buildCompleteEvent =
- buildCompleteEvent(ExitCode.BUILD_FAILURE, true, null, false);
+ buildCompleteEvent(createGenericDetailedExitCode(), true, null, false);
streamer.buildEvent(startEvent);
streamer.buildEvent(buildCompleteEvent);
@@ -1246,7 +1248,7 @@
ProgressEvent.INITIAL_PROGRESS_UPDATE,
BuildEventIdUtil.buildFinished()));
BuildCompleteEvent buildCompleteEvent =
- buildCompleteEvent(ExitCode.BUILD_FAILURE, true, new RuntimeException(), false);
+ buildCompleteEvent(createGenericDetailedExitCode(), true, new RuntimeException(), false);
streamer.buildEvent(startEvent);
streamer.buildEvent(buildCompleteEvent);
@@ -1270,7 +1272,7 @@
ProgressEvent.INITIAL_PROGRESS_UPDATE,
BuildEventIdUtil.buildFinished()));
BuildCompleteEvent buildCompleteEvent =
- buildCompleteEvent(ExitCode.BUILD_FAILURE, true, null, true);
+ buildCompleteEvent(createGenericDetailedExitCode(), true, null, true);
streamer.buildEvent(startEvent);
streamer.buildEvent(buildCompleteEvent);
@@ -1321,7 +1323,7 @@
ProgressEvent.INITIAL_PROGRESS_UPDATE,
BuildEventIdUtil.buildFinished()));
BuildCompleteEvent buildCompleteEvent =
- buildCompleteEvent(ExitCode.BUILD_FAILURE, false, new RuntimeException(), false);
+ buildCompleteEvent(createGenericDetailedExitCode(), false, new RuntimeException(), false);
streamer.buildEvent(startEvent);
streamer.noAnalyze(new NoAnalyzeEvent());
@@ -1345,9 +1347,12 @@
}
private BuildCompleteEvent buildCompleteEvent(
- ExitCode exitCode, boolean stopOnFailure, Throwable crash, boolean catastrophe) {
+ DetailedExitCode detailedExitCode,
+ boolean stopOnFailure,
+ Throwable crash,
+ boolean catastrophe) {
BuildResult result = new BuildResult(0);
- result.setDetailedExitCode(DetailedExitCode.justExitCode(exitCode));
+ result.setDetailedExitCode(detailedExitCode);
result.setStopOnFirstFailure(stopOnFailure);
if (catastrophe) {
result.setCatastrophe();
@@ -1423,4 +1428,11 @@
.collect(ImmutableList.toImmutableList()))
.containsExactly(testPath1.toString(), testPath2.toString());
}
+
+ private static DetailedExitCode createGenericDetailedExitCode() {
+ return DetailedExitCode.of(
+ FailureDetail.newBuilder()
+ .setSpawn(Spawn.newBuilder().setCode(Code.NON_ZERO_EXIT))
+ .build());
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
index 6d32070..67a7cd7 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -235,7 +235,6 @@
"//src/main/java/com/google/devtools/build/lib/util",
"//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
"//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
- "//src/main/java/com/google/devtools/build/lib/util:exit_code",
"//src/main/java/com/google/devtools/build/lib/util:filetype",
"//src/main/java/com/google/devtools/build/lib/util/io",
"//src/main/java/com/google/devtools/build/lib/util/io:out-err",
@@ -247,6 +246,7 @@
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:action_cache_java_proto",
"//src/main/protobuf:analysis_java_proto",
+ "//src/main/protobuf:failure_details_java_proto",
"//src/test/java/com/google/devtools/build/lib/actions/util",
"//src/test/java/com/google/devtools/build/lib/analysis/testing",
"//src/test/java/com/google/devtools/build/lib/analysis/util",
@@ -260,7 +260,6 @@
"//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
"//src/test/java/com/google/devtools/build/lib/testutil:TestPackageFactoryBuilderFactory",
"//src/test/java/com/google/devtools/build/lib/testutil:TestUtils",
- "//src/test/java/com/google/devtools/build/lib/util/subjects",
"//src/test/java/com/google/devtools/build/lib/vfs/util",
"//src/test/java/com/google/devtools/build/skyframe:testutil",
"//third_party:auto_value",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java
index 2a22426..d9b8ad5 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java
@@ -21,7 +21,6 @@
import static com.google.devtools.build.lib.testutil.MoreAsserts.assertContainsEventRegex;
import static com.google.devtools.build.lib.testutil.MoreAsserts.assertEventCount;
import static com.google.devtools.build.lib.testutil.MoreAsserts.assertNotContainsEventRegex;
-import static com.google.devtools.build.lib.util.subjects.DetailedExitCodeSubjectFactory.assertThatDetailedExitCode;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.fail;
@@ -105,6 +104,10 @@
import com.google.devtools.build.lib.pkgcache.TransitivePackageLoader;
import com.google.devtools.build.lib.remote.options.RemoteOutputsMode;
import com.google.devtools.build.lib.runtime.KeepGoingOption;
+import com.google.devtools.build.lib.server.FailureDetails.Crash;
+import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn;
+import com.google.devtools.build.lib.server.FailureDetails.Spawn.Code;
import com.google.devtools.build.lib.skyframe.AspectValueKey.AspectKey;
import com.google.devtools.build.lib.skyframe.DirtinessCheckerUtils.BasicFilesystemDirtinessChecker;
import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ActionCompletedReceiver;
@@ -119,7 +122,6 @@
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.testutil.TestUtils;
import com.google.devtools.build.lib.util.DetailedExitCode;
-import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -167,6 +169,18 @@
/** Tests for {@link SequencedSkyframeExecutor}. */
@RunWith(JUnit4.class)
public final class SequencedSkyframeExecutorTest extends BuildViewTestCase {
+
+ private static final DetailedExitCode USER_DETAILED_EXIT_CODE =
+ DetailedExitCode.of(
+ FailureDetail.newBuilder()
+ .setSpawn(Spawn.newBuilder().setCode(Code.NON_ZERO_EXIT))
+ .build());
+ private static final DetailedExitCode INFRA_DETAILED_EXIT_CODE =
+ DetailedExitCode.of(
+ FailureDetail.newBuilder()
+ .setCrash(Crash.newBuilder().setCode(Crash.Code.CRASH_UNKNOWN))
+ .build());
+
private TransitivePackageLoader visitor;
private OptionsParser options;
@@ -1453,7 +1467,11 @@
/** Dummy action that throws a catastrophic error when it runs. */
private static class CatastrophicAction extends DummyAction {
- public static final ExitCode expectedExitCode = ExitCode.RESERVED;
+ public static final DetailedExitCode expectedDetailedExitCode =
+ DetailedExitCode.of(
+ FailureDetail.newBuilder()
+ .setCrash(Crash.newBuilder().setCode(Crash.Code.CRASH_UNKNOWN))
+ .build());
CatastrophicAction(Artifact output) {
super(NestedSetBuilder.emptySet(Order.STABLE_ORDER), output, MiddlemanType.NORMAL);
@@ -1467,7 +1485,7 @@
new Exception("just cause"),
this,
/*catastrophe=*/ true,
- DetailedExitCode.justExitCode(expectedExitCode));
+ expectedDetailedExitCode);
}
}
@@ -1565,8 +1583,7 @@
/* trustRemoteArtifacts= */ false));
// The catastrophic exception should be propagated into the BuildFailedException whether or not
// --keep_going is set.
- assertThatDetailedExitCode(e.getDetailedExitCode())
- .hasExitCode(CatastrophicAction.expectedExitCode);
+ assertThat(e.getDetailedExitCode()).isEqualTo(CatastrophicAction.expectedDetailedExitCode);
assertThat(builtTargets).isEmpty();
assertThat(markerRan.get()).isFalse();
}
@@ -1624,7 +1641,7 @@
Artifact failureArtifact =
new Artifact.DerivedArtifact(
ArtifactRoot.asDerivedRoot(root, "out"), execPath.getRelative("fail"), failureCTK);
- Action failureAction = new FailedExecAction(failureArtifact, ExitCode.RESERVED);
+ Action failureAction = new FailedExecAction(failureArtifact, USER_DETAILED_EXIT_CODE);
ConfiguredTargetValue failureCTV = createConfiguredTargetValue(failureAction, failureCTK);
ActionLookupValue.ActionLookupKey topCTK = new InjectedActionLookupKey("top");
Artifact topArtifact =
@@ -1696,8 +1713,7 @@
/* trustRemoteArtifacts= */ false));
// The catastrophic exception should be propagated into the BuildFailedException whether or not
// --keep_going is set.
- assertThatDetailedExitCode(e.getDetailedExitCode())
- .hasExitCode(CatastrophicAction.expectedExitCode);
+ assertThat(e.getDetailedExitCode()).isEqualTo(CatastrophicAction.expectedDetailedExitCode);
assertThat(builtTargets).isEmpty();
}
@@ -1742,7 +1758,7 @@
execPath.getRelative(failString),
configuredTargetKey);
failedArtifacts.add(failureArtifact);
- failedActions.add(new FailedExecAction(failureArtifact, ExitCode.BUILD_FAILURE));
+ failedActions.add(new FailedExecAction(failureArtifact, USER_DETAILED_EXIT_CODE));
}
NonRuleConfiguredTargetValue nonRuleConfiguredTargetValue =
new NonRuleConfiguredTargetValue(
@@ -1828,8 +1844,7 @@
/* trustRemoteArtifacts= */ false));
// The catastrophic exception should be propagated into the BuildFailedException whether or not
// --keep_going is set.
- assertThatDetailedExitCode(e.getDetailedExitCode())
- .hasExitCode(CatastrophicAction.expectedExitCode);
+ assertThat(e.getDetailedExitCode()).isEqualTo(CatastrophicAction.expectedDetailedExitCode);
assertThat(builtTargets).isEmpty();
}
@@ -1935,36 +1950,27 @@
/* trustRemoteArtifacts= */ false));
// The catastrophic exception should be propagated into the BuildFailedException whether or not
// --keep_going is set.
- assertThatDetailedExitCode(e.getDetailedExitCode())
- .hasExitCode(CatastrophicAction.expectedExitCode);
+ assertThat(e.getDetailedExitCode()).isEqualTo(CatastrophicAction.expectedDetailedExitCode);
assertThat(builtTargets).isEmpty();
}
/** Dummy action that throws a ActionExecution error when it runs. */
private static class FailedExecAction extends DummyAction {
- private final ExitCode exitCode;
+ private final DetailedExitCode detailedExitCode;
- FailedExecAction(Artifact output, ExitCode exitCode) {
+ FailedExecAction(Artifact output, DetailedExitCode detailedExitCode) {
super(NestedSetBuilder.emptySet(Order.STABLE_ORDER), output, MiddlemanType.NORMAL);
- this.exitCode = exitCode;
+ this.detailedExitCode = detailedExitCode;
}
@Override
public ActionResult execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException {
throw new ActionExecutionException(
- "foo",
- new Exception("bar"),
- this,
- /*catastrophe=*/ false,
- DetailedExitCode.justExitCode(exitCode));
+ "foo", new Exception("bar"), this, /*catastrophe=*/ false, detailedExitCode);
}
}
- private static final ExitCode USER_EXIT_CODE = ExitCode.create(Integer.MAX_VALUE, "user_error");
- private static final ExitCode INFRA_EXIT_CODE =
- ExitCode.createInfrastructureFailure(Integer.MAX_VALUE - 1, "infra_error");
-
/**
* Verify SkyframeBuilder returns correct user error code as global error code when:
* 1. keepGoing mode is true.
@@ -1994,7 +2000,7 @@
new DummyAction(NestedSetBuilder.emptySet(Order.STABLE_ORDER), succeededOutput);
ConfiguredTargetValue succeededTarget =
createConfiguredTargetValue(succeededAction, succeededKey);
- Action failedAction = new FailedExecAction(failedOutput, USER_EXIT_CODE);
+ Action failedAction = new FailedExecAction(failedOutput, USER_DETAILED_EXIT_CODE);
ConfiguredTargetValue failedTarget = createConfiguredTargetValue(failedAction, failedKey);
// Inject the targets into the graph,
@@ -2047,7 +2053,7 @@
/* trustRemoteArtifacts= */ false));
// The exit code should be propagated into the BuildFailedException whether or not --keep_going
// is set.
- assertThatDetailedExitCode(e.getDetailedExitCode()).hasExitCode(USER_EXIT_CODE);
+ assertThat(e.getDetailedExitCode()).isEqualTo(USER_DETAILED_EXIT_CODE);
}
/**
@@ -2085,9 +2091,9 @@
new DummyAction(NestedSetBuilder.emptySet(Order.STABLE_ORDER), succeededOutput);
ConfiguredTargetValue succeededTarget =
createConfiguredTargetValue(succeededAction, succeededKey);
- Action failedAction1 = new FailedExecAction(failedOutput1, USER_EXIT_CODE);
+ Action failedAction1 = new FailedExecAction(failedOutput1, USER_DETAILED_EXIT_CODE);
ConfiguredTargetValue failedTarget1 = createConfiguredTargetValue(failedAction1, failedKey1);
- Action failedAction2 = new FailedExecAction(failedOutput2, INFRA_EXIT_CODE);
+ Action failedAction2 = new FailedExecAction(failedOutput2, INFRA_DETAILED_EXIT_CODE);
ConfiguredTargetValue failedTarget2 = createConfiguredTargetValue(failedAction2, failedKey2);
// Inject the targets into the graph,
@@ -2141,7 +2147,7 @@
/* trustRemoteArtifacts= */ false));
// The exit code should be propagated into the BuildFailedException whether or not --keep_going
// is set.
- assertThatDetailedExitCode(e.getDetailedExitCode()).hasExitCode(INFRA_EXIT_CODE);
+ assertThat(e.getDetailedExitCode()).isEqualTo(INFRA_DETAILED_EXIT_CODE);
}
/**