blob: 010d97cb5f2751c0f4b88a18322d0feeb31f8d44 [file] [log] [blame]
/*
* Copyright 2014-present Facebook, Inc.
*
* 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.facebook.buck.java;
import static com.facebook.buck.util.BuckConstant.BIN_PATH;
import static org.junit.Assert.assertEquals;
import com.facebook.buck.model.BuildTarget;
import com.facebook.buck.rules.BuildRuleResolver;
import com.facebook.buck.rules.SourcePath;
import com.facebook.buck.rules.SourcePathResolver;
import com.facebook.buck.rules.TestSourcePath;
import com.facebook.buck.step.Step;
import com.facebook.buck.step.fs.MkdirAndSymlinkFileStep;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
import java.nio.file.Paths;
import java.util.List;
public class CopyResourcesStepTest {
@Test
public void testAddResourceCommandsWithBuildFileParentOfSrcDirectory() {
SourcePathResolver resolver = new SourcePathResolver(new BuildRuleResolver());
// Files:
// android/java/BUILD
// android/java/src/com/facebook/base/data.json
// android/java/src/com/facebook/common/util/data.json
BuildTarget buildTarget = BuildTarget.builder("//android/java", "resources").build();
JavaPackageFinder javaPackageFinder = createJavaPackageFinder();
CopyResourcesStep step = new CopyResourcesStep(
resolver,
buildTarget,
ImmutableSet.of(
new TestSourcePath("android/java/src/com/facebook/base/data.json"),
new TestSourcePath("android/java/src/com/facebook/common/util/data.json")),
BIN_PATH.resolve("android/java/lib__resources__classes"),
javaPackageFinder);
List<? extends Step> expected = ImmutableList.of(
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/base/data.json"),
BIN_PATH.resolve("android/java/lib__resources__classes/com/facebook/base/data.json")),
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/common/util/data.json"),
BIN_PATH.resolve(
"android/java/lib__resources__classes/com/facebook/common/util/data.json")));
assertEquals(expected, step.buildSteps());
}
@Test
public void testAddResourceCommandsWithBuildFileParentOfJavaPackage() {
// Files:
// android/java/src/BUILD
// android/java/src/com/facebook/base/data.json
// android/java/src/com/facebook/common/util/data.json
BuildTarget buildTarget = BuildTarget.builder("//android/java/src", "resources").build();
JavaPackageFinder javaPackageFinder = createJavaPackageFinder();
CopyResourcesStep step = new CopyResourcesStep(
new SourcePathResolver(new BuildRuleResolver()),
buildTarget,
ImmutableSet.<SourcePath>of(
new TestSourcePath("android/java/src/com/facebook/base/data.json"),
new TestSourcePath("android/java/src/com/facebook/common/util/data.json")),
BIN_PATH.resolve("android/java/src/lib__resources__classes"),
javaPackageFinder);
List<? extends Step> expected = ImmutableList.of(
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/base/data.json"),
BIN_PATH.resolve(
"android/java/src/lib__resources__classes/com/facebook/base/data.json")),
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/common/util/data.json"),
BIN_PATH.resolve(
"android/java/src/lib__resources__classes/com/facebook/common/util/data.json")));
assertEquals(expected, step.buildSteps());
}
@Test
public void testAddResourceCommandsWithBuildFileInJavaPackage() {
// Files:
// android/java/src/com/facebook/BUILD
// android/java/src/com/facebook/base/data.json
// android/java/src/com/facebook/common/util/data.json
BuildTarget buildTarget =
BuildTarget.builder("//android/java/src/com/facebook", "resources").build();
JavaPackageFinder javaPackageFinder = createJavaPackageFinder();
CopyResourcesStep step = new CopyResourcesStep(
new SourcePathResolver(new BuildRuleResolver()),
buildTarget,
ImmutableSet.of(
new TestSourcePath("android/java/src/com/facebook/base/data.json"),
new TestSourcePath("android/java/src/com/facebook/common/util/data.json")),
BIN_PATH.resolve("android/java/src/com/facebook/lib__resources__classes"),
javaPackageFinder);
List<? extends Step> expected = ImmutableList.of(
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/base/data.json"),
BIN_PATH.resolve(
"android/java/src/com/facebook/lib__resources__classes/" +
"com/facebook/base/data.json")),
new MkdirAndSymlinkFileStep(
Paths.get("android/java/src/com/facebook/common/util/data.json"),
BIN_PATH.resolve(
"android/java/src/com/facebook/lib__resources__classes/" +
"com/facebook/common/util/data.json")));
assertEquals(expected, step.buildSteps());
}
private JavaPackageFinder createJavaPackageFinder() {
return DefaultJavaPackageFinder.createDefaultJavaPackageFinder(
ImmutableSet.of("/android/java/src"));
}
}