Skip to content

Commit 32e841d

Browse files
joelebacopybara-github
authored andcommitted
Add a test to document the fact the local actions fail with Skymeld.
PiperOrigin-RevId: 440318640
1 parent 3636aaf commit 32e841d

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/test/java/com/google/devtools/build/lib/buildtool/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,8 @@ java_test(
640640
"//src/main/java/com/google/devtools/build/lib:runtime",
641641
"//src/main/java/com/google/devtools/build/lib/actions",
642642
"//src/main/java/com/google/devtools/build/lib/analysis:view_creation_failed_exception",
643+
"//src/main/java/com/google/devtools/build/lib/util/io",
644+
"//src/main/protobuf:failure_details_java_proto",
643645
"//src/test/java/com/google/devtools/build/lib/buildtool/util",
644646
"//third_party:guava",
645647
"//third_party:junit4",

src/test/java/com/google/devtools/build/lib/buildtool/SkymeldBuildIntegrationTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414
package com.google.devtools.build.lib.buildtool;
1515

1616
import static com.google.common.truth.Truth.assertThat;
17+
import static com.google.devtools.build.lib.server.FailureDetails.Spawn.Code.NON_ZERO_EXIT;
1718
import static org.junit.Assert.assertThrows;
1819

1920
import com.google.common.collect.Iterables;
2021
import com.google.devtools.build.lib.actions.BuildFailedException;
2122
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
2223
import com.google.devtools.build.lib.buildtool.util.BuildIntegrationTestCase;
24+
import com.google.devtools.build.lib.util.io.RecordingOutErr;
2325
import com.google.testing.junit.testparameterinjector.TestParameter;
2426
import com.google.testing.junit.testparameterinjector.TestParameterInjector;
2527
import java.io.IOException;
@@ -149,4 +151,31 @@ public void analysisAndExecutionFailure_keepGoing_bothReported() throws Exceptio
149151
"Action foo/execution_failure.out failed: missing input file '//foo:missing'");
150152
events.assertContainsError("rule '//foo:missing' does not exist");
151153
}
154+
155+
@Test
156+
public void noSymlinkPlantedLocalAction_failureNoSuchFileOrDirectory() throws Exception {
157+
addOptions("--spawn_strategy=standalone");
158+
write(
159+
"foo/BUILD",
160+
"genrule(",
161+
" name = 'foo',",
162+
" srcs = ['foo.in'],",
163+
" outs = ['foo.out'],",
164+
" cmd = 'cp foo.in $(location foo.out)'",
165+
")");
166+
write("foo/foo.in");
167+
168+
outErr = new RecordingOutErr();
169+
BuildFailedException e =
170+
assertThrows(BuildFailedException.class, () -> buildTarget("//foo:foo"));
171+
String err = ((RecordingOutErr) outErr).errAsLatin1();
172+
173+
assertThat(e.getDetailedExitCode().getFailureDetail().getSpawn().getCode())
174+
.isEqualTo(NON_ZERO_EXIT);
175+
assertThat(err)
176+
.contains(
177+
"Executing genrule //foo:foo failed: (Exit 1): bash failed: error executing command"
178+
+ " (from target //foo:foo)");
179+
assertThat(err).contains("No such file or directory");
180+
}
152181
}

0 commit comments

Comments
 (0)