Search in sources :

Example 1 with Rule

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)));
}
Also used : Rule(org.gradle.api.Rule) Test(org.junit.Test)

Example 2 with Rule

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);
}
Also used : Expectations(org.jmock.Expectations) List(java.util.List) Rule(org.gradle.api.Rule) Sequence(org.jmock.Sequence) Test(org.junit.Test)

Example 3 with Rule

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);
    }
}
Also used : Project(org.gradle.api.Project) DefaultGroupTaskReportModel(org.gradle.api.tasks.diagnostics.internal.DefaultGroupTaskReportModel) TaskDetails(org.gradle.api.tasks.diagnostics.internal.TaskDetails) AggregateMultiProjectTaskReportModel(org.gradle.api.tasks.diagnostics.internal.AggregateMultiProjectTaskReportModel) Rule(org.gradle.api.Rule) SingleProjectTaskReportModel(org.gradle.api.tasks.diagnostics.internal.SingleProjectTaskReportModel) TaskDetailsFactory(org.gradle.api.tasks.diagnostics.internal.TaskDetailsFactory)

Aggregations

Rule (org.gradle.api.Rule)3 Test (org.junit.Test)2 List (java.util.List)1 Project (org.gradle.api.Project)1 AggregateMultiProjectTaskReportModel (org.gradle.api.tasks.diagnostics.internal.AggregateMultiProjectTaskReportModel)1 DefaultGroupTaskReportModel (org.gradle.api.tasks.diagnostics.internal.DefaultGroupTaskReportModel)1 SingleProjectTaskReportModel (org.gradle.api.tasks.diagnostics.internal.SingleProjectTaskReportModel)1 TaskDetails (org.gradle.api.tasks.diagnostics.internal.TaskDetails)1 TaskDetailsFactory (org.gradle.api.tasks.diagnostics.internal.TaskDetailsFactory)1 Expectations (org.jmock.Expectations)1 Sequence (org.jmock.Sequence)1