use of org.gradle.api.Rule in project gradle by gradle.
the class DefaultNamedDomainObjectSetTest method findDomainObjectByNameInvokesNestedRulesOnlyOnceForUnknownDomainObject.
@Test
public void findDomainObjectByNameInvokesNestedRulesOnlyOnceForUnknownDomainObject() {
final Bean bean1 = new Bean("bean1");
final Bean bean2 = new Bean("bean2");
container.addRule(new Rule() {
public String getDescription() {
return "rule1";
}
public void apply(String domainObjectName) {
if (domainObjectName.equals("bean1")) {
container.add(bean1);
}
}
});
container.addRule(new Rule() {
private boolean applyHasBeenCalled;
public String getDescription() {
return "rule2";
}
public void apply(String domainObjectName) {
if (domainObjectName.equals("bean2")) {
assertThat(applyHasBeenCalled, equalTo(false));
container.findByName("bean1");
container.findByName("bean2");
container.add(bean2);
applyHasBeenCalled = true;
}
}
});
container.findByName("bean2");
assertThat(toList(container), equalTo(toList(bean1, bean2)));
}
use of org.gradle.api.Rule in project gradle by gradle.
the class TaskReportTaskTest method passesEachRuleToRenderer.
@Test
public void passesEachRuleToRenderer() throws IOException {
context.checking(new Expectations() {
{
Rule rule1 = context.mock(Rule.class);
Rule rule2 = context.mock(Rule.class);
List<String> defaultTasks = toList();
allowing(project).getDefaultTasks();
will(returnValue(defaultTasks));
allowing(taskContainer).realize();
allowing(taskContainer).size();
will(returnValue(0));
allowing(taskContainer).iterator();
will(returnIterator(toLinkedSet()));
allowing(implicitTasks).iterator();
will(returnIterator(toLinkedSet()));
one(taskContainer).getRules();
will(returnValue(toList(rule1, rule2)));
Sequence sequence = context.sequence("seq");
one(renderer).showDetail(false);
inSequence(sequence);
one(renderer).addDefaultTasks(defaultTasks);
inSequence(sequence);
one(renderer).completeTasks();
inSequence(sequence);
one(renderer).addRule(rule1);
inSequence(sequence);
one(renderer).addRule(rule2);
inSequence(sequence);
}
});
task.generate(project);
}
use of org.gradle.api.Rule in project gradle by gradle.
the class TaskReportTask method generate.
@Override
public void generate(Project project) throws IOException {
renderer.showDetail(isDetail());
renderer.addDefaultTasks(project.getDefaultTasks());
AggregateMultiProjectTaskReportModel aggregateModel = new AggregateMultiProjectTaskReportModel(!isDetail(), isDetail());
TaskDetailsFactory taskDetailsFactory = new TaskDetailsFactory(project);
SingleProjectTaskReportModel projectTaskModel = new SingleProjectTaskReportModel(taskDetailsFactory);
projectTaskModel.build(getProjectTaskLister().listProjectTasks(project));
aggregateModel.add(projectTaskModel);
for (Project subproject : project.getSubprojects()) {
SingleProjectTaskReportModel subprojectTaskModel = new SingleProjectTaskReportModel(taskDetailsFactory);
subprojectTaskModel.build(getProjectTaskLister().listProjectTasks(subproject));
aggregateModel.add(subprojectTaskModel);
}
aggregateModel.build();
DefaultGroupTaskReportModel model = new DefaultGroupTaskReportModel();
model.build(aggregateModel);
for (String group : model.getGroups()) {
renderer.startTaskGroup(group);
for (TaskDetails task : model.getTasksForGroup(group)) {
renderer.addTask(task);
}
}
renderer.completeTasks();
for (Rule rule : project.getTasks().getRules()) {
renderer.addRule(rule);
}
}
Aggregations