diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/actions/SpawnResult.java | 13 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/actions/SpawnResultTest.java | 48 |
2 files changed, 55 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnResult.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnResult.java index 4cfa9aa2f8..10b484305a 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/SpawnResult.java +++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnResult.java @@ -324,12 +324,13 @@ public interface SpawnResult { explanation += ". Note: Remote connection/protocol failed with: " + errorDetail; } if (status() == Status.TIMEOUT) { - Preconditions.checkState( - getWallTime().isPresent(), "SpawnAction timed out but wall time wasn't set"); - explanation += - String.format( - " (failed due to timeout after %.2f seconds.)", - getWallTime().get().toMillis() / 1000.0); + if (getWallTime().isPresent()) { + explanation += String.format( + " (failed due to timeout after %.2f seconds.)", + getWallTime().get().toMillis() / 1000.0); + } else { + explanation += " (failed due to timeout.)"; + } } else if (status() == Status.OUT_OF_MEMORY) { explanation += " (Remote action was terminated due to Out of Memory.)"; } diff --git a/src/test/java/com/google/devtools/build/lib/actions/SpawnResultTest.java b/src/test/java/com/google/devtools/build/lib/actions/SpawnResultTest.java new file mode 100644 index 0000000000..4fedd29cb1 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/actions/SpawnResultTest.java @@ -0,0 +1,48 @@ +// Copyright 2018 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.actions; + +import static com.google.common.truth.Truth.assertThat; + +import java.time.Duration; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Testing common SpawnResult features + */ +@RunWith(JUnit4.class) +public final class SpawnResultTest { + + @Test + public void getTimeoutMessage() { + SpawnResult r = + new SpawnResult.Builder() + .setStatus(SpawnResult.Status.TIMEOUT) + .setWallTime(Duration.ofSeconds(5)) + .setExitCode(1) + .build(); + assertThat(r.getDetailMessage("", "", false, false)) + .contains("(failed due to timeout after 5.00 seconds.)"); + } + + @Test + public void getTimeoutMessageNoTime() { + SpawnResult r = + new SpawnResult.Builder().setStatus(SpawnResult.Status.TIMEOUT).setExitCode(1).build(); + assertThat(r.getDetailMessage("", "", false, false)) + .contains("(failed due to timeout.)"); + } +} |