aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-10-19 12:45:13 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-10-19 13:44:29 +0000
commit30c0a635ba50c43467c80527a6c12abc4f8ed29e (patch)
treef9d02e9d703f42c6ee04ddfd3454d8d4fa0fc5d5 /src
parent8ff216d8e8a1c3fc5ed33453bb21b53381e295c9 (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.java70
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/util/SkylarkUtil.java53
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);
+ }
+ }
+ }
+ }
+ }
+}