diff -r 361b76189f8d -r 2291e553464a src/test/java/org/apidesign/java4browser/StaticMethodTest.java --- a/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Thu Sep 20 14:20:01 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Thu Sep 20 14:35:21 2012 +0200 @@ -20,7 +20,9 @@ import java.io.IOException; import java.io.InputStream; import java.util.Arrays; +import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedList; import java.util.Set; import java.util.TreeSet; import javax.script.Invocable; @@ -156,13 +158,25 @@ } static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException { - for (String name : names) { + if (sb == null) { + sb = new StringBuilder(); + } + Set processed = new HashSet(); + + LinkedList toProcess = new LinkedList(Arrays.asList(names)); + for (;;) { + toProcess.removeAll(processed); + if (toProcess.isEmpty()) { + break; + } + String name = toProcess.getFirst(); + processed.add(name); + if (name.startsWith("java/") && !name.equals("java/lang/Object")) { + continue; + } InputStream is = StaticMethodTest.class.getClassLoader().getResourceAsStream(name + ".class"); assertNotNull(is, "Class file found"); - if (sb == null) { - sb = new StringBuilder(); - } - ByteCodeToJavaScript.compile(is, sb, null); + ByteCodeToJavaScript.compile(is, sb, toProcess); } ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine js = sem.getEngineByExtension("js");