| /* |
| * Created on Apr 7, 2004 |
| * |
| * To change the template for this generated file go to |
| * Window - Preferences - Java - Code Generation - Code and Comments |
| */ |
| package groovy.security; |
| |
| import junit.framework.TestCase; |
| import junit.framework.TestResult; |
| import junit.framework.TestSuite; |
| |
| import java.io.File; |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| /** |
| * Run all the .groovy scripts found under the src/test tree with a security manager active. |
| * Not currently part of the build because it adds about 4 minutes to the build process. |
| * |
| * @author Steve Goetze |
| */ |
| public class RunAllGroovyScriptsSuite extends SecurityTestSupport { |
| |
| /** |
| * Find all Groovy script test cases in the source tree and execute them with a security policy in effect. |
| * The complete filename of the groovy source file is used as the codebase so that the proper grants can be |
| * made for each script. |
| */ |
| protected void executeTests(File dir, TestResult result) throws Exception { |
| File[] files = dir.listFiles(); |
| List traverseList = new ArrayList(); |
| for (int i = 0; i < files.length; i++) { |
| File file = files[i]; |
| if (file.isDirectory()) { |
| traverseList.add(file); |
| } else { |
| String name = file.getName(); |
| if (name.endsWith("Test.groovy") || name.endsWith("Bug.groovy")) { |
| //if (name.endsWith("IanMaceysBug.groovy")) { |
| Class clazz = parseClass(file); |
| if (TestCase.class.isAssignableFrom(clazz)) { |
| TestSuite suite = new TestSuite(clazz); |
| suite.run(result); |
| } |
| } |
| } |
| } |
| for (Iterator iter = traverseList.iterator(); iter.hasNext();) { |
| executeTests((File) iter.next(), result); |
| } |
| } |
| |
| public void testGroovyScripts() throws Exception { |
| if (!isSecurityAvailable()) { |
| return; |
| } |
| TestResult result = new TestResult(); |
| executeTests(new File("src/test"), result); |
| if (!result.wasSuccessful()) { |
| new SecurityTestResultPrinter(System.out).print(result); |
| fail("At least one groovy testcase did not run under the secure groovy environment. Results in the testcase output"); |
| } |
| } |
| } |