// Copyright 2017 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.exec; import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.ActionExecutionMetadata; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ExecutionRequirements; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.exec.util.FakeOwner; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** Unit tests for {@link SymlinkTreeHelper}. */ @RunWith(JUnit4.class) public final class SymlinkTreeHelperTest { private final FileSystem fs = new InMemoryFileSystem(); @Test public void checkCreatedSpawn() { ActionExecutionMetadata owner = new FakeOwner("SymlinkTree", "Creating it"); Path execRoot = fs.getPath("/my/workspace"); Path inputManifestPath = execRoot.getRelative("input_manifest"); ActionInput inputManifest = ActionInputHelper.fromPath(inputManifestPath.asFragment()); BinTools binTools = BinTools.forUnitTesting(execRoot, ImmutableList.of(SymlinkTreeHelper.BUILD_RUNFILES)); Spawn spawn = new SymlinkTreeHelper( inputManifestPath, fs.getPath("/my/workspace/output/MANIFEST"), false) .createSpawn( owner, execRoot, binTools, ImmutableMap.of(), inputManifest); assertThat(spawn.getResourceOwner()).isSameAs(owner); assertThat(spawn.getEnvironment()).isEmpty(); assertThat(spawn.getExecutionInfo()).containsExactly( ExecutionRequirements.LOCAL, "", ExecutionRequirements.NO_CACHE, "", ExecutionRequirements.NO_SANDBOX, ""); assertThat(spawn.getInputFiles()) .containsExactly(inputManifest, binTools.getActionInput(SymlinkTreeHelper.BUILD_RUNFILES)); // At this time, the spawn does not declare any output files. assertThat(spawn.getOutputFiles()).isEmpty(); } }