< prev index next >

test/jdk/com/sun/tools/jextract/Runner.java

Print this page




  44 import java.util.jar.JarEntry;
  45 import java.util.jar.JarInputStream;
  46 import java.util.jar.JarOutputStream;
  47 import javax.tools.JavaCompiler;
  48 import javax.tools.StandardJavaFileManager;
  49 import javax.tools.ToolProvider;
  50 import jdk.internal.org.objectweb.asm.ClassReader;
  51 import jdk.internal.org.objectweb.asm.tree.ClassNode;
  52 import jdk.internal.org.objectweb.asm.util.ASMifier;
  53 import jdk.internal.org.objectweb.asm.util.CheckClassAdapter;
  54 import jdk.internal.org.objectweb.asm.util.Textifier;
  55 import jdk.internal.org.objectweb.asm.util.TraceClassVisitor;
  56 import static org.testng.Assert.assertEquals;
  57 import static org.testng.Assert.assertNotNull;
  58 import static org.testng.Assert.assertTrue;
  59 import static org.testng.Assert.fail;
  60 import org.testng.annotations.BeforeClass;
  61 import org.testng.annotations.DataProvider;
  62 import org.testng.annotations.Factory;
  63 import org.testng.annotations.Test;
  64 import com.sun.tools.jextract.*;
  65 
  66 /*
  67  * @test
  68  * @summary Main test runner created all cases
  69  * @modules java.base/jdk.internal.org.objectweb.asm
  70  * @modules java.base/jdk.internal.org.objectweb.asm.tree
  71  * @modules java.base/jdk.internal.org.objectweb.asm.util
  72  * @modules jdk.jextract/com.sun.tools.jextract
  73  * @build InMemoryFileManager
  74  * @run testng Runner
  75  */
  76 public class Runner {
  77     private final Path nativeSrc;
  78     private final Path[] javaSrcFiles;
  79     private final Context ctx;
  80     private final String pkg;
  81 
  82     private InMemoryFileManager<StandardJavaFileManager> mfm;
  83     private ClassLoader expectedCL;
  84     private Map<String, byte[]> actualClz;
  85     private ClassLoader actualCL;
  86     private Object[][] clz_data;
  87 
  88     public Runner(Path nativeSrc, String pkg, Path[] javaSrcFiles) {
  89         ctx = Context.newInstance();
  90         this.nativeSrc = nativeSrc;
  91         this.pkg = pkg;
  92         this.javaSrcFiles = javaSrcFiles;
  93     }
  94 
  95     private Map<String, byte[]> extract(String pkg) throws IOException {
  96         if (!Files.isReadable(nativeSrc)) {
  97             throw new IllegalArgumentException("Cannot read the file: " + nativeSrc);
  98         }
  99         Path p = nativeSrc.toAbsolutePath();
 100         ctx.usePackageForFolder(p.getParent(), pkg);
 101         ctx.addSource(p);
 102         ctx.parse(AsmCodeFactory::new);
 103         return ctx.collectClasses(pkg);
 104     }
 105 
 106     private InMemoryFileManager<StandardJavaFileManager> compileJavaCode() {
 107         JavaCompiler cl = ToolProvider.getSystemJavaCompiler();
 108         StandardJavaFileManager sfm = cl.getStandardFileManager(null, null, null);
 109         InMemoryFileManager<StandardJavaFileManager> fm = new InMemoryFileManager<>(sfm);
 110         JavaCompiler.CompilationTask task = cl.getTask(null, fm, null, null,
 111                 null, sfm.getJavaFileObjects(javaSrcFiles));
 112         task.call();
 113         return fm;
 114     }
 115 
 116     @Test
 117     public void testJarManifest() throws IOException {
 118         // Get the jar
 119         ByteArrayOutputStream bos = new ByteArrayOutputStream();
 120         ctx.collectJarFile(new JarOutputStream(bos), pkg);
 121 
 122         System.out.println("Jar built, verifying...");




  44 import java.util.jar.JarEntry;
  45 import java.util.jar.JarInputStream;
  46 import java.util.jar.JarOutputStream;
  47 import javax.tools.JavaCompiler;
  48 import javax.tools.StandardJavaFileManager;
  49 import javax.tools.ToolProvider;
  50 import jdk.internal.org.objectweb.asm.ClassReader;
  51 import jdk.internal.org.objectweb.asm.tree.ClassNode;
  52 import jdk.internal.org.objectweb.asm.util.ASMifier;
  53 import jdk.internal.org.objectweb.asm.util.CheckClassAdapter;
  54 import jdk.internal.org.objectweb.asm.util.Textifier;
  55 import jdk.internal.org.objectweb.asm.util.TraceClassVisitor;
  56 import static org.testng.Assert.assertEquals;
  57 import static org.testng.Assert.assertNotNull;
  58 import static org.testng.Assert.assertTrue;
  59 import static org.testng.Assert.fail;
  60 import org.testng.annotations.BeforeClass;
  61 import org.testng.annotations.DataProvider;
  62 import org.testng.annotations.Factory;
  63 import org.testng.annotations.Test;
  64 import com.sun.tools.jextract.Context;
  65 
  66 /*
  67  * @test
  68  * @summary Main test runner created all cases
  69  * @modules java.base/jdk.internal.org.objectweb.asm
  70  * @modules java.base/jdk.internal.org.objectweb.asm.tree
  71  * @modules java.base/jdk.internal.org.objectweb.asm.util
  72  * @modules jdk.jextract/com.sun.tools.jextract
  73  * @build InMemoryFileManager
  74  * @run testng Runner
  75  */
  76 public class Runner {
  77     private final Path nativeSrc;
  78     private final Path[] javaSrcFiles;
  79     private final Context ctx;
  80     private final String pkg;
  81 
  82     private InMemoryFileManager<StandardJavaFileManager> mfm;
  83     private ClassLoader expectedCL;
  84     private Map<String, byte[]> actualClz;
  85     private ClassLoader actualCL;
  86     private Object[][] clz_data;
  87 
  88     public Runner(Path nativeSrc, String pkg, Path[] javaSrcFiles) {
  89         this.ctx = new Context();
  90         this.nativeSrc = nativeSrc;
  91         this.pkg = pkg;
  92         this.javaSrcFiles = javaSrcFiles;
  93     }
  94 
  95     private Map<String, byte[]> extract(String pkg) throws IOException {
  96         if (!Files.isReadable(nativeSrc)) {
  97             throw new IllegalArgumentException("Cannot read the file: " + nativeSrc);
  98         }
  99         Path p = nativeSrc.toAbsolutePath();
 100         ctx.usePackageForFolder(p.getParent(), pkg);
 101         ctx.addSource(p);
 102         ctx.parse();
 103         return ctx.collectClasses(pkg);
 104     }
 105 
 106     private InMemoryFileManager<StandardJavaFileManager> compileJavaCode() {
 107         JavaCompiler cl = ToolProvider.getSystemJavaCompiler();
 108         StandardJavaFileManager sfm = cl.getStandardFileManager(null, null, null);
 109         InMemoryFileManager<StandardJavaFileManager> fm = new InMemoryFileManager<>(sfm);
 110         JavaCompiler.CompilationTask task = cl.getTask(null, fm, null, null,
 111                 null, sfm.getJavaFileObjects(javaSrcFiles));
 112         task.call();
 113         return fm;
 114     }
 115 
 116     @Test
 117     public void testJarManifest() throws IOException {
 118         // Get the jar
 119         ByteArrayOutputStream bos = new ByteArrayOutputStream();
 120         ctx.collectJarFile(new JarOutputStream(bos), pkg);
 121 
 122         System.out.println("Jar built, verifying...");


< prev index next >