use of com.google.devtools.build.lib.rules.SkylarkRuleContext in project bazel by bazelbuild.
the class SkylarkRuleContextTest method testMiddleMan.
@Test
public void testMiddleMan() throws Exception {
SkylarkRuleContext ruleContext = createRuleContext("//foo:jl");
Object result = evalRuleContextCode(ruleContext, "ruleContext.middle_man(':host_jdk')");
assertThat(Iterables.getOnlyElement(((SkylarkNestedSet) result).getSet(Artifact.class)).getExecPathString()).contains("middlemen");
}
use of com.google.devtools.build.lib.rules.SkylarkRuleContext in project bazel by bazelbuild.
the class SkylarkRuleContextTest method testCheckPlaceholdersBadPlaceholder.
@Test
public void testCheckPlaceholdersBadPlaceholder() throws Exception {
SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
Object result = evalRuleContextCode(ruleContext, "ruleContext.check_placeholders('%{name}', ['abc'])");
assertEquals(false, result);
}
use of com.google.devtools.build.lib.rules.SkylarkRuleContext in project bazel by bazelbuild.
the class SkylarkRuleContextTest method testCoverageInstrumentedCoverageDisabled.
@Test
public void testCoverageInstrumentedCoverageDisabled() throws Exception {
setUpCoverageInstrumentedTest();
useConfiguration("--nocollect_code_coverage", "--instrumentation_filter=.");
SkylarkRuleContext ruleContext = createRuleContext("//test:foo");
Object result = evalRuleContextCode(ruleContext, "ruleContext.coverage_instrumented()");
assertThat((Boolean) result).isFalse();
}
use of com.google.devtools.build.lib.rules.SkylarkRuleContext in project bazel by bazelbuild.
the class SkylarkRuleContextTest method testCreatedActions.
// For created_actions() tests, the "undertest" rule represents both the code under test and the
// Skylark user test code itself.
@Test
public void testCreatedActions() throws Exception {
// createRuleContext() gives us the context for a rule upon entry into its analysis function.
// But we need to inspect the result of calling created_actions() after the rule context has
// been modified by creating actions. So we'll call created_actions() from within the analysis
// function and pass it along as a provider.
scratch.file("test/rules.bzl", "def _undertest_impl(ctx):", " out1 = ctx.outputs.out1", " out2 = ctx.outputs.out2", " ctx.action(outputs=[out1], command='echo foo123 > ' + out1.path,", " mnemonic='foo')", " v = ctx.created_actions().by_file", " ctx.action(outputs=[out2], command='echo bar123 > ' + out2.path)", " return struct(v=v, out1=out1, out2=out2)", "undertest_rule = rule(", " implementation = _undertest_impl,", " outputs = {'out1': '%{name}1.txt',", " 'out2': '%{name}2.txt'},", " _skylark_testable = True,", ")", testingRuleDefinition);
scratch.file("test/BUILD", simpleBuildDefinition);
SkylarkRuleContext ruleContext = createRuleContext("//test:testing");
Object mapUnchecked = evalRuleContextCode(ruleContext, "ruleContext.attr.dep.v");
assertThat(mapUnchecked).isInstanceOf(SkylarkDict.class);
SkylarkDict<?, ?> map = (SkylarkDict<?, ?>) mapUnchecked;
// Should only have the first action because created_actions() was called
// before the second action was created.
Object file = eval("ruleContext.attr.dep.out1");
assertThat(map).hasSize(1);
assertThat(map).containsKey(file);
Object actionUnchecked = map.get(file);
assertThat(actionUnchecked).isInstanceOf(ActionAnalysisMetadata.class);
assertThat(((ActionAnalysisMetadata) actionUnchecked).getMnemonic()).isEqualTo("foo");
}
use of com.google.devtools.build.lib.rules.SkylarkRuleContext in project bazel by bazelbuild.
the class SkylarkRuleContextTest method testGetRuleAttributeStringTypeValue.
@Test
public void testGetRuleAttributeStringTypeValue() throws Exception {
SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
Object result = evalRuleContextCode(ruleContext, "ruleContext.attr.cmd");
assertEquals("dummy_cmd", (String) result);
}
Aggregations