smrunner: dependency on ruby module removed
[fedora-idea.git] / platform / testFramework / src / com / intellij / ClassFinder.java
blob6158b59feae631c649dfb4cfd2e2ed7e8552156f
1 /*
2 * Created by IntelliJ IDEA.
3 * User: mike
4 * Date: Jun 7, 2002
5 * Time: 8:27:57 PM
6 * To change template for new class use
7 * Code Style | Class Templates options (Tools | IDE Options).
8 */
9 package com.intellij;
11 import java.io.File;
12 import java.io.IOException;
13 import java.util.ArrayList;
14 import java.util.Collection;
15 import java.util.List;
17 public class ClassFinder {
18 private final List<String> classNameList = new ArrayList<String>();
19 private final int startPackageName;
21 public ClassFinder(final File classPathRoot, final String packageRoot) throws IOException {
22 startPackageName = classPathRoot.getAbsolutePath().length() + 1;
23 String directoryOffset = packageRoot.replace('.', File.separatorChar);
24 findAndStoreTestClasses(new File(classPathRoot, directoryOffset));
27 private String computeClassName(final File file) {
28 String absPath = file.getAbsolutePath();
29 if (absPath.endsWith("Test.class")) {
30 String packageBase = absPath.substring(startPackageName, absPath.length() - ".class".length());
31 return packageBase.replace(File.separatorChar, '.');
33 else {
34 return null;
38 private void findAndStoreTestClasses(final File current) throws IOException {
39 if (current.isDirectory()) {
40 for (File file : current.listFiles()) {
41 findAndStoreTestClasses(file);
44 else {
45 String className = computeClassName(current);
46 if (className != null) {
47 classNameList.add(className);
52 public Collection<String> getClasses() {
53 return classNameList;