Add toolchains data to RuleClass and RuleContext.
Also expose both sides to Skylark.
Part of #2219.
Change-Id: I4d749dd9981fe33f75310acb0ec3927cff6f28fe
PiperOrigin-RevId: 156340638
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 8852be8..2be126b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -42,6 +42,7 @@
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
+import com.google.devtools.build.lib.packages.ToolchainConstructor;
import com.google.devtools.build.lib.rules.SkylarkAttr;
import com.google.devtools.build.lib.rules.SkylarkAttr.Descriptor;
import com.google.devtools.build.lib.rules.SkylarkFileType;
@@ -1377,5 +1378,15 @@
+ "provided.");
}
}
-}
+ @Test
+ public void testRuleAddToolchain() throws Exception {
+ evalAndExport(
+ "my_toolchain_type = platform_common.toolchain_type()",
+ "def impl(ctx): return None",
+ "r1 = rule(impl, toolchains=[my_toolchain_type])");
+ ToolchainConstructor toolchain = (ToolchainConstructor) lookup("my_toolchain_type");
+ RuleClass c = ((RuleFunction) lookup("r1")).getRuleClass();
+ assertThat(c.getRequiredToolchains()).containsExactly(toolchain.getKey());
+ }
+}