use of org.gradle.api.specs.Spec in project gradle by gradle.
the class DefaultTaskGraphExecuterTest method doesNotExecuteFilteredTasks.
@Test
public void doesNotExecuteFilteredTasks() {
final Task a = task("a", task("a-dep"));
Task b = task("b");
Spec<Task> spec = new Spec<Task>() {
public boolean isSatisfiedBy(Task element) {
return element != a;
}
};
taskExecuter.useFilter(spec);
taskExecuter.addTasks(toList(a, b));
assertThat(taskExecuter.getAllTasks(), equalTo(toList(b)));
taskExecuter.execute();
assertThat(executedTasks, equalTo(toList(b)));
}
use of org.gradle.api.specs.Spec in project gradle by gradle.
the class DefaultTaskGraphExecuterTest method doesNotExecuteFilteredDependencies.
@Test
public void doesNotExecuteFilteredDependencies() {
final Task a = task("a", task("a-dep"));
Task b = task("b");
Task c = task("c", a, b);
Spec<Task> spec = new Spec<Task>() {
public boolean isSatisfiedBy(Task element) {
return element != a;
}
};
taskExecuter.useFilter(spec);
taskExecuter.addTasks(toList(c));
assertThat(taskExecuter.getAllTasks(), equalTo(toList(b, c)));
taskExecuter.execute();
assertThat(executedTasks, equalTo(toList(b, c)));
}
use of org.gradle.api.specs.Spec in project gradle by gradle.
the class DefaultNamedDomainObjectSetTest method canGetFilteredCollectionContainingAllObjectsWhichMeetSpec.
@Test
public void canGetFilteredCollectionContainingAllObjectsWhichMeetSpec() {
final Bean bean1 = new Bean("a");
Bean bean2 = new Bean("b");
Bean bean3 = new Bean("c");
Spec<Bean> spec = new Spec<Bean>() {
public boolean isSatisfiedBy(Bean element) {
return element != bean1;
}
};
TestClosure testClosure = new TestClosure() {
public Object call(Object param) {
return param != bean1;
}
};
container.add(bean1);
container.add(bean2);
container.add(bean3);
assertThat(toList(container.matching(spec)), equalTo(toList(bean2, bean3)));
assertThat(toList(container.matching(TestUtil.toClosure(testClosure))), equalTo(toList(bean2, bean3)));
assertThat(container.matching(spec).findByName("a"), nullValue());
assertThat(container.matching(spec).findByName("b"), sameInstance(bean2));
}
use of org.gradle.api.specs.Spec in project gradle by gradle.
the class TaskSelector method getFilter.
public Spec<Task> getFilter(String path) {
final ResolvedTaskPath taskPath = taskPathResolver.resolvePath(path, gradle.getDefaultProject());
if (!taskPath.isQualified()) {
ProjectInternal targetProject = taskPath.getProject();
configurer.configure(targetProject);
if (taskNameResolver.tryFindUnqualifiedTaskCheaply(taskPath.getTaskName(), taskPath.getProject())) {
// An exact match in the target project - can just filter tasks by path to avoid configuring sub-projects at this point
return new TaskPathSpec(targetProject, taskPath.getTaskName());
}
}
final Set<Task> selectedTasks = getSelection(path, gradle.getDefaultProject()).getTasks();
return new Spec<Task>() {
public boolean isSatisfiedBy(Task element) {
return !selectedTasks.contains(element);
}
};
}
use of org.gradle.api.specs.Spec in project gradle by gradle.
the class ExcludedTaskFilteringBuildConfigurationAction method configure.
public void configure(BuildExecutionContext context) {
GradleInternal gradle = context.getGradle();
Set<String> excludedTaskNames = gradle.getStartParameter().getExcludedTaskNames();
if (!excludedTaskNames.isEmpty()) {
final Set<Spec<Task>> filters = new HashSet<Spec<Task>>();
for (String taskName : excludedTaskNames) {
filters.add(taskSelector.getFilter(taskName));
}
gradle.getTaskGraph().useFilter(Specs.intersect(filters));
}
context.proceed();
}
Aggregations