All Downloads are FREE. Search and download functionalities are using the official Maven repository.

installer.test.java.org.AllTests Maven / Gradle / Ivy

Go to download

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

There is a newer version: 2.7.4
Show newest version
package org;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

import junit.framework.Test;
import junit.framework.TestSuite;

/**
 * A package recursive test suite.
 * 

* All classes ending with 'Test' are added to the suite. * * @see AllTests.TestClassFilter */ public class AllTests extends TestSuite { /** * @return Test suite at the directory where this class resists * * @throws Exception */ public static Test suite() throws Exception { Class suiteClass = AllTests.class; String testSuiteClassName = suiteClass.getName(); File suiteFile = new File(suiteClass.getClassLoader().getResource( testSuiteClassName.replace('.', '/').concat(".class")).getFile()); String basePackage = suiteClass.getPackage().getName(); File baseDir = suiteFile.getParentFile(); TestSuite suite = new TestSuite("Test " + basePackage + " recursive."); buildSuite(baseDir.getAbsolutePath().length(), basePackage, baseDir, new TestClassFilter(), suite); return suite; } // // private methods // private static void buildSuite(int prefixLength, String basePackage, File currentDir, FilenameFilter filter, TestSuite currentSuite) throws Exception { List potentialDirectories = Arrays.asList(currentDir.listFiles(filter)); if (potentialDirectories.size() == 0) { return; } StringBuffer currentPackageName = new StringBuffer(200); currentPackageName.append(basePackage); currentPackageName.append(currentDir.getAbsolutePath().substring(prefixLength).replace('\\', '.').replace('/', '.')); List classFiles = new ArrayList(potentialDirectories.size()); Collections.sort(potentialDirectories, new FileComparator()); Iterator directoryIterator = potentialDirectories.iterator(); while (directoryIterator.hasNext()) { File potentialDirectory = (File) directoryIterator.next(); if (potentialDirectory.isDirectory()) { TestSuite subTestSuite = new TestSuite(potentialDirectory.getName()); buildSuite(prefixLength, basePackage, potentialDirectory, filter, subTestSuite); // only if suite contains tests if (subTestSuite.countTestCases() > 0) { currentSuite.addTest(subTestSuite); } } else { classFiles.add(potentialDirectory); } } Iterator fileIterator = classFiles.iterator(); while (fileIterator.hasNext()) { File file = (File) fileIterator.next(); StringBuffer className = new StringBuffer(200); className.append(currentPackageName); className.append('.'); String fileName = file.getName(); className.append(fileName); className.setLength(className.length() - 6); currentSuite.addTest(new TestSuite(Class.forName(className.toString()), fileName.substring(0, fileName .length() - 6))); } } private static class TestClassFilter implements FilenameFilter { public boolean accept(File dir, String name) { if (name.endsWith("Test.class")) { return true; } return new File(dir, name).isDirectory(); } } private static class FileComparator implements Comparator { public int compare(File f1, File f2) { return f1.getAbsolutePath().compareTo(f2.getAbsolutePath()); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy