1b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot/**
2b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
3b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot */
4b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpackage org.junit.internal.builders;
5b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
6b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport org.junit.internal.runners.SuiteMethod;
7b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport org.junit.runner.Runner;
8b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport org.junit.runners.model.RunnerBuilder;
9b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
10b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpublic class SuiteMethodBuilder extends RunnerBuilder {
11b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	@Override
12b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public Runner runnerForClass(Class<?> each) throws Throwable {
13b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		if (hasSuiteMethod(each))
14b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot			return new SuiteMethod(each);
15b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		return null;
16b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
17b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
18b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public boolean hasSuiteMethod(Class<?> testClass) {
19b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		try {
20b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot			testClass.getMethod("suite");
21b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		} catch (NoSuchMethodException e) {
22b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot			return false;
23b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		}
24b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		return true;
25b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
26b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot}