diff options
Diffstat (limited to 'test/junit/com/sun/gluegen/AbstractTest.java')
-rw-r--r-- | test/junit/com/sun/gluegen/AbstractTest.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/test/junit/com/sun/gluegen/AbstractTest.java b/test/junit/com/sun/gluegen/AbstractTest.java new file mode 100644 index 0000000..9262347 --- /dev/null +++ b/test/junit/com/sun/gluegen/AbstractTest.java @@ -0,0 +1,120 @@ +package com.sun.gluegen; + +import java.io.File; +import java.net.URISyntaxException; +import org.apache.tools.ant.DefaultLogger; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.ProjectHelper; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; + +import static java.lang.System.*; + +/** + * @author Michael Bien + */ +@Ignore +public abstract class AbstractTest { + + static final Project project = new Project(); + + protected static String gluegenRoot; + protected static String path; + protected static String output; + + + @BeforeClass + public static void setUp() throws Exception { + + out.println(" - - - System info - - - "); + out.println("OS: " + System.getProperty("os.name")); + out.println("VM: " + System.getProperty("java.vm.name")); + + // setup paths + try { + File executionRoot = new File(AbstractTest.class.getProtectionDomain().getCodeSource().getLocation().toURI()); + out.println("execution root: " + executionRoot); + gluegenRoot = executionRoot.getParentFile().getParentFile().getParentFile().getParentFile().toString(); + out.println("gluegen project root: " + gluegenRoot); + } catch (URISyntaxException ex) { + throw new RuntimeException("can not determine gluegen root", ex); + } + + path = gluegenRoot + "/test/junit/com/sun/gluegen"; + output = gluegenRoot + "/build/test"; + + out.println("path: "+path); + out.println("output: "+output); + out.println(" - - - - - - - - - - - - "); + + deleteDirectory(new File(output+"/gensrc")); + + //setup ant build file + project.setBaseDir(new File(gluegenRoot)); + + DefaultLogger logger = new DefaultLogger(); + logger.setErrorPrintStream(err); + logger.setOutputPrintStream(out); + logger.setMessageOutputLevel(Project.MSG_INFO); + project.addBuildListener(logger); + + project.init(); + + File buildFile = new File(path, "build.xml"); + ProjectHelper.configureProject(project, buildFile); + } + + @AfterClass + public static void tearDown() { +// deleteDirectory(new File(output)); + } + + /** + * fails if ant script fails (which is a good thing). + * executeTarget throws RuntimeException on failure + */ + public final void compileJava() { + project.executeTarget("compile.java"); + } + + /** + * fails if ant script fails (which is a good thing) + * executeTarget throws RuntimeException on failure + */ + public final void compileNatives() { + project.executeTarget("compile.native"); + } + + static final void generate(String config) { + out.println("generate: "+config); + GlueGen.main( + new String[] { + "-I"+path, + "-O"+output+"/gensrc", +// "-Ecom.sun.gluegen.DebugEmitter", + "-C"+path+"/"+config+".cfg", + path+"/"+config+".h" + } + ); + out.println("done"); + } + + static final void deleteDirectory(File path) { + if(path.exists()) { + + File[] files = path.listFiles(); + for (int i = 0; i < files.length; i++) { + if (files[i].isDirectory()) { + deleteDirectory(files[i]); + } else { + files[i].delete(); + } + } + + path.delete(); + } + } + + +} |