diff options
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java index 4d86a34413..fbd3760519 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java @@ -760,6 +760,61 @@ public class SkylarkRuleContextTest extends SkylarkTestCase { assertThat(result).isEqualTo("$ABC"); } + private void setUpMakeVarToolchain() throws Exception { + scratch.file( + "vars/vars.bzl", + "def _make_var_supplier_impl(ctx):", + " val = ctx.attr.value", + " return [platform_common.TemplateVariableInfo({'MAKE_VAR_VALUE': val})]", + "make_var_supplier = rule(", + " implementation = _make_var_supplier_impl,", + " attrs = {", + " 'value': attr.string(mandatory = True),", + " })", + "def _make_var_user_impl(ctx):", + " return []", + "make_var_user = rule(", + " implementation = _make_var_user_impl,", + ")"); + scratch.file( + "vars/BUILD", + "load(':vars.bzl', 'make_var_supplier', 'make_var_user')", + "make_var_supplier(name = 'supplier', value = 'foo')", + "make_var_user(", + " name = 'vars',", + " toolchains = [':supplier'],", + ")"); + } + + @Test + public void testExpandMakeVariables_cc() throws Exception { + setUpMakeVarToolchain(); + SkylarkRuleContext ruleContext = createRuleContext("//vars:vars"); + String result = + (String) + evalRuleContextCode( + ruleContext, "ruleContext.expand_make_variables('cmd', '$(CC)', {})"); + assertThat(result).isNotEmpty(); + } + + @Test + public void testExpandMakeVariables_toolchain() throws Exception { + setUpMakeVarToolchain(); + SkylarkRuleContext ruleContext = createRuleContext("//vars:vars"); + Object result = + evalRuleContextCode( + ruleContext, "ruleContext.expand_make_variables('cmd', '$(MAKE_VAR_VALUE)', {})"); + assertThat(result).isEqualTo("foo"); + } + + @Test + public void testVar_toolchain() throws Exception { + setUpMakeVarToolchain(); + SkylarkRuleContext ruleContext = createRuleContext("//vars:vars"); + Object result = evalRuleContextCode(ruleContext, "ruleContext.var['MAKE_VAR_VALUE']"); + assertThat(result).isEqualTo("foo"); + } + @Test public void testConfiguration() throws Exception { SkylarkRuleContext ruleContext = createRuleContext("//foo:foo"); |