diff options
author | 2015-10-19 12:45:13 +0000 | |
---|---|---|
committer | 2015-10-19 13:44:29 +0000 | |
commit | 30c0a635ba50c43467c80527a6c12abc4f8ed29e (patch) | |
tree | f9d02e9d703f42c6ee04ddfd3454d8d4fa0fc5d5 /src | |
parent | 8ff216d8e8a1c3fc5ed33453bb21b53381e295c9 (diff) |
Open-source Skylark's BindTest
--
MOS_MIGRATED_REVID=105748068
Diffstat (limited to 'src')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/BindTest.java | 70 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkUtil.java | 53 |
2 files changed, 123 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/BindTest.java b/src/test/java/com/google/devtools/build/lib/skylark/BindTest.java new file mode 100644 index 0000000000..5adbfa2861 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/skylark/BindTest.java @@ -0,0 +1,70 @@ +// Copyright 2015 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.skylark; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.util.ActionsTestUtil; +import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; +import com.google.devtools.build.lib.skylark.util.SkylarkUtil; + +/** + * Tests for using bind() with Skylark rules. + */ +public class BindTest extends BuildViewTestCase { + + @Override + public void setUp() throws Exception { + super.setUp(); + SkylarkUtil.setup(scratch); + scratch.file("test/BUILD", + "load('/rules/java_rules_skylark', 'java_library')", + "java_library(name = 'giraffe',", + " srcs = ['Giraffe.java'],", + ")", + "java_library(name = 'safari',", + " srcs = ['Safari.java'],", + " deps = ['//external:long-horse'],", + ")"); + + scratch.overwriteFile( + "tools/jdk/BUILD", + "package(default_visibility = ['//visibility:public'])", + "filegroup(name = 'java', srcs = ['bin/java'])", + "filegroup(name = 'jar', srcs = ['bin/jar'])", + "filegroup(name = 'javac', srcs = ['bin/javac'])", + "filegroup(name = 'jdk')"); + + scratch.overwriteFile("WORKSPACE", + "bind(", + " name = 'long-horse',", + " actual = '//test:giraffe',", + ")"); + } + + public void testFilesToBuild() throws Exception { + invalidatePackages(); + ConfiguredTarget giraffeTarget = getConfiguredTarget("//test:giraffe"); + Artifact giraffeArtifact = + ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(giraffeTarget), "giraffe.jar"); + ConfiguredTarget safariTarget = getConfiguredTarget("//test:safari"); + Action safariAction = getGeneratingAction( + ActionsTestUtil.getFirstArtifactEndingWith(getFilesToBuild(safariTarget), "safari.jar")); + assertThat(safariAction.getInputs()).contains(giraffeArtifact); + } + +} diff --git a/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkUtil.java b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkUtil.java new file mode 100644 index 0000000000..7264b38bd2 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkUtil.java @@ -0,0 +1,53 @@ +// Copyright 2015 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.skylark.util; + +import com.google.common.io.Files; +import com.google.devtools.build.lib.testutil.Scratch; +import com.google.devtools.build.lib.vfs.Path; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; + +/** + * Utility class to perform Skylark-related setup. + */ +public class SkylarkUtil { + public static void setup(Scratch scratch) throws IOException { + scratch.file("tools/build_rules/BUILD"); + scratch.file("rules/BUILD"); + copyExistingSkylarkFiles(scratch, "tools/build_rules", "rules"); + copyExistingSkylarkFiles(scratch, "third_party/bazel/tools/build_rules", "rules"); + } + + private static void copyExistingSkylarkFiles(Scratch scratch, String from, String to) + throws IOException { + File rulesDir = new File(from); + if (rulesDir.exists() && rulesDir.isDirectory()) { + for (String fileName : rulesDir.list()) { + File file = new File(from + "/" + fileName); + if (file.isFile() && fileName.endsWith(".bzl")) { + String context = Files.toString(file, Charset.defaultCharset()); + Path path = scratch.resolve(to + "/" + fileName); + if (path.exists()) { + scratch.overwriteFile(path.getPathString(), context); + } else { + scratch.file(path.getPathString(), context); + } + } + } + } + } +} |