use of com.google.devtools.build.lib.actions.RunfilesSupplier in project bazel by bazelbuild.
the class SkylarkRuleImplementationFunctionsTest method testResolveCommandInputs.
@Test
public void testResolveCommandInputs() throws Exception {
evalRuleContextCode(createRuleContext("//foo:resolve_me"), "inputs, argv, input_manifests = ruleContext.resolve_command(", " tools=ruleContext.attr.tools)");
@SuppressWarnings("unchecked") List<Artifact> inputs = (List<Artifact>) (List<?>) (MutableList) lookup("inputs");
assertArtifactFilenames(inputs, "mytool.sh", "mytool", "foo_Smytool-runfiles", "t.exe");
@SuppressWarnings("unchecked") CompositeRunfilesSupplier runfilesSupplier = new CompositeRunfilesSupplier((List<RunfilesSupplier>) lookup("input_manifests"));
assertThat(runfilesSupplier.getMappings()).hasSize(1);
}
use of com.google.devtools.build.lib.actions.RunfilesSupplier in project bazel by bazelbuild.
the class RunfilesSupplierImplTest method testGetArtifactsFilterMiddlemen.
@Test
public void testGetArtifactsFilterMiddlemen() {
List<Artifact> artifacts = mkArtifacts(rootDir, "thing1", "thing2");
Artifact middleman = new Artifact(new PathFragment("middleman"), middlemanRoot);
Runfiles runfiles = mkRunfiles(Iterables.concat(artifacts, ImmutableList.of(middleman)));
RunfilesSupplier underTest = new RunfilesSupplierImpl(new PathFragment("notimportant"), runfiles);
assertThat(underTest.getArtifacts()).containsExactlyElementsIn(artifacts);
}
use of com.google.devtools.build.lib.actions.RunfilesSupplier in project bazel by bazelbuild.
the class SpawnInputExpanderTest method testRunfilesSymlink.
@Test
public void testRunfilesSymlink() throws Exception {
Artifact artifact = new Artifact(fs.getPath("/root/dir/file"), Root.asSourceRoot(fs.getPath("/root")));
Runfiles runfiles = new Runfiles.Builder("workspace").addSymlink(new PathFragment("symlink"), artifact).build();
RunfilesSupplier supplier = new RunfilesSupplierImpl(new PathFragment("runfiles"), runfiles);
ActionInputFileCache mockCache = Mockito.mock(ActionInputFileCache.class);
Mockito.when(mockCache.isFile(artifact)).thenReturn(true);
expander.addRunfilesToInputs(inputMappings, supplier, mockCache);
assertThat(inputMappings).hasSize(1);
assertThat(inputMappings).containsEntry(new PathFragment("runfiles/workspace/symlink"), artifact);
}
use of com.google.devtools.build.lib.actions.RunfilesSupplier in project bazel by bazelbuild.
the class SpawnInputExpanderTest method testRunfilesRootSymlink.
@Test
public void testRunfilesRootSymlink() throws Exception {
Artifact artifact = new Artifact(fs.getPath("/root/dir/file"), Root.asSourceRoot(fs.getPath("/root")));
Runfiles runfiles = new Runfiles.Builder("workspace").addRootSymlink(new PathFragment("symlink"), artifact).build();
RunfilesSupplier supplier = new RunfilesSupplierImpl(new PathFragment("runfiles"), runfiles);
ActionInputFileCache mockCache = Mockito.mock(ActionInputFileCache.class);
Mockito.when(mockCache.isFile(artifact)).thenReturn(true);
expander.addRunfilesToInputs(inputMappings, supplier, mockCache);
assertThat(inputMappings).hasSize(2);
assertThat(inputMappings).containsEntry(new PathFragment("runfiles/symlink"), artifact);
// If there's no other entry, Runfiles adds an empty file in the workspace to make sure the
// directory gets created.
assertThat(inputMappings).containsEntry(new PathFragment("runfiles/workspace/.runfile"), SpawnInputExpander.EMPTY_FILE);
}
use of com.google.devtools.build.lib.actions.RunfilesSupplier in project bazel by bazelbuild.
the class SpawnInputExpanderTest method testRunfilesDirectoryNonStrict.
@Test
public void testRunfilesDirectoryNonStrict() throws Exception {
Artifact artifact = new Artifact(fs.getPath("/root/dir/file"), Root.asSourceRoot(fs.getPath("/root")));
Runfiles runfiles = new Runfiles.Builder("workspace").addArtifact(artifact).build();
RunfilesSupplier supplier = new RunfilesSupplierImpl(new PathFragment("runfiles"), runfiles);
ActionInputFileCache mockCache = Mockito.mock(ActionInputFileCache.class);
Mockito.when(mockCache.isFile(artifact)).thenReturn(false);
expander = new SpawnInputExpander(/*strict=*/
false);
expander.addRunfilesToInputs(inputMappings, supplier, mockCache);
assertThat(inputMappings).hasSize(1);
assertThat(inputMappings).containsEntry(new PathFragment("runfiles/workspace/dir/file"), artifact);
}
Aggregations