< prev index next >

test/jdk/com/sun/tools/jextract/test8221154/SrcGenTest.java

Print this page




  26 import java.foreign.annotations.NativeHeader;
  27 import java.foreign.annotations.NativeLocation;
  28 import java.foreign.annotations.NativeSetter;
  29 import java.foreign.annotations.NativeStruct;
  30 import java.foreign.memory.Pointer;
  31 import java.io.File;
  32 import java.io.IOException;
  33 import java.lang.reflect.Method;
  34 import java.lang.reflect.Modifier;
  35 import java.nio.file.Files;
  36 import java.nio.file.Path;
  37 import java.nio.file.Paths;
  38 import java.util.Arrays;
  39 import java.util.ArrayList;
  40 import java.util.spi.ToolProvider;
  41 import org.testng.annotations.Test;
  42 import static org.testng.Assert.assertTrue;
  43 
  44 /*
  45  * @test
  46  * @bug 8221154 8221228 8221336 8221419 8221443
  47  * @summary jextract should generate java source files
  48  * @library ..
  49  * @run testng SrcGenTest
  50  */
  51 public class SrcGenTest extends JextractToolRunner {
  52     private static final ToolProvider JEXTRACT = ToolProvider.findFirst("jextract")
  53             .orElseThrow(() ->
  54                     new RuntimeException("jextract tool not found")
  55             );
  56 
  57     private static final ToolProvider JAVAC = ToolProvider.findFirst("javac")
  58             .orElseThrow(() ->
  59                     new RuntimeException("javac tool not found")
  60             );
  61 
  62     @Test
  63     public void test() throws IOException {
  64         Path inputDir = Paths.get(System.getProperty("test.src", "."));
  65         Path outputDir = Paths.get(System.getProperty("test.classes", "."));
  66         inputDir = inputDir.toAbsolutePath();


  89         }
  90 
  91         // delete .jar file generated by jextract
  92         Files.delete(jarPath);
  93 
  94         Path pkgDir = outputDir.resolve(pkgName);
  95 
  96         String srcgentestIfaceName = headerInterfaceName("srcgentest.h");
  97         String srcgentestForwarderName = staticForwarderName("srcgentest.h");
  98         String dupnameIfaceName = headerInterfaceName("dupname.h");
  99         String dupnameDupnameNotName = structInterfaceName("dupname.h", "dupnameNot");
 100         String dupnameForwarderName = staticForwarderName("dupname.h");
 101         String srcgentestPointName = structInterfaceName("srcgentest.h", "Point");
 102         String srcgentestColorName = enumInterfaceName("srcgentest.h", "Color");
 103         String srcgentestForwarderEnumName = enumForwarderInterfaceName("srcgentest.h", "Color");
 104 
 105         // compile jextract generated java sources
 106         ArrayList<String> javacOpts = new ArrayList<>();
 107         javacOpts.add("-d");
 108         javacOpts.add(outputDir.toString());

 109         javacOpts.add(pkgDir.resolve(srcgentestIfaceName + ".java").toString());
 110         javacOpts.add(pkgDir.resolve(srcgentestForwarderName + ".java").toString());
 111         javacOpts.add(pkgDir.resolve("sub").resolve(dupnameIfaceName + ".java").toString());
 112         javacOpts.add(pkgDir.resolve("sub").resolve(dupnameForwarderName + ".java").toString());
 113         result = JAVAC.run(System.out, System.err, javacOpts.toArray(String[]::new));
 114         if (result != 0) {
 115             throw new RuntimeException(JAVAC.name() + " returns non-zero value");
 116         }
 117 
 118         // sanity checks for .class file existence

 119         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestIfaceName + ".class")));
 120         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestPointName + ".class")));
 121         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestColorName + ".class")));
 122         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestForwarderName + ".class")));
 123         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestForwarderEnumName + ".class")));
 124         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameForwarderName + ".class")));
 125         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameIfaceName + ".class")));
 126         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameDupnameNotName + ".class")));
 127 
 128         checkClasses(outputDir, pkgName);
 129     }
 130 
 131     private void checkClasses(Path outputDir, String pkgName) {
 132         Loader loader = classLoader(outputDir);
 133         checkSubdirClass(loader, pkgName);
 134         checkHeaderClass(loader, pkgName);
 135         checkForwarderClass(loader, pkgName);
 136     }
 137 
 138     private void checkSubdirClass(Loader loader, String pkgName) {




  26 import java.foreign.annotations.NativeHeader;
  27 import java.foreign.annotations.NativeLocation;
  28 import java.foreign.annotations.NativeSetter;
  29 import java.foreign.annotations.NativeStruct;
  30 import java.foreign.memory.Pointer;
  31 import java.io.File;
  32 import java.io.IOException;
  33 import java.lang.reflect.Method;
  34 import java.lang.reflect.Modifier;
  35 import java.nio.file.Files;
  36 import java.nio.file.Path;
  37 import java.nio.file.Paths;
  38 import java.util.Arrays;
  39 import java.util.ArrayList;
  40 import java.util.spi.ToolProvider;
  41 import org.testng.annotations.Test;
  42 import static org.testng.Assert.assertTrue;
  43 
  44 /*
  45  * @test
  46  * @bug 8221154 8221228 8221336 8221419 8221443 8222274
  47  * @summary jextract should generate java source files
  48  * @library ..
  49  * @run testng SrcGenTest
  50  */
  51 public class SrcGenTest extends JextractToolRunner {
  52     private static final ToolProvider JEXTRACT = ToolProvider.findFirst("jextract")
  53             .orElseThrow(() ->
  54                     new RuntimeException("jextract tool not found")
  55             );
  56 
  57     private static final ToolProvider JAVAC = ToolProvider.findFirst("javac")
  58             .orElseThrow(() ->
  59                     new RuntimeException("javac tool not found")
  60             );
  61 
  62     @Test
  63     public void test() throws IOException {
  64         Path inputDir = Paths.get(System.getProperty("test.src", "."));
  65         Path outputDir = Paths.get(System.getProperty("test.classes", "."));
  66         inputDir = inputDir.toAbsolutePath();


  89         }
  90 
  91         // delete .jar file generated by jextract
  92         Files.delete(jarPath);
  93 
  94         Path pkgDir = outputDir.resolve(pkgName);
  95 
  96         String srcgentestIfaceName = headerInterfaceName("srcgentest.h");
  97         String srcgentestForwarderName = staticForwarderName("srcgentest.h");
  98         String dupnameIfaceName = headerInterfaceName("dupname.h");
  99         String dupnameDupnameNotName = structInterfaceName("dupname.h", "dupnameNot");
 100         String dupnameForwarderName = staticForwarderName("dupname.h");
 101         String srcgentestPointName = structInterfaceName("srcgentest.h", "Point");
 102         String srcgentestColorName = enumInterfaceName("srcgentest.h", "Color");
 103         String srcgentestForwarderEnumName = enumForwarderInterfaceName("srcgentest.h", "Color");
 104 
 105         // compile jextract generated java sources
 106         ArrayList<String> javacOpts = new ArrayList<>();
 107         javacOpts.add("-d");
 108         javacOpts.add(outputDir.toString());
 109         javacOpts.add(outputDir.resolve("clang_support").resolve("stdbool_h.java").toString());
 110         javacOpts.add(pkgDir.resolve(srcgentestIfaceName + ".java").toString());
 111         javacOpts.add(pkgDir.resolve(srcgentestForwarderName + ".java").toString());
 112         javacOpts.add(pkgDir.resolve("sub").resolve(dupnameIfaceName + ".java").toString());
 113         javacOpts.add(pkgDir.resolve("sub").resolve(dupnameForwarderName + ".java").toString());
 114         result = JAVAC.run(System.out, System.err, javacOpts.toArray(String[]::new));
 115         if (result != 0) {
 116             throw new RuntimeException(JAVAC.name() + " returns non-zero value");
 117         }
 118 
 119         // sanity checks for .class file existence
 120         assertTrue(Files.isRegularFile(outputDir.resolve("clang_support").resolve("stdbool_h.class")));
 121         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestIfaceName + ".class")));
 122         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestPointName + ".class")));
 123         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestColorName + ".class")));
 124         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestForwarderName + ".class")));
 125         assertTrue(Files.isRegularFile(pkgDir.resolve(srcgentestForwarderEnumName + ".class")));
 126         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameForwarderName + ".class")));
 127         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameIfaceName + ".class")));
 128         assertTrue(Files.isRegularFile(pkgDir.resolve("sub").resolve(dupnameDupnameNotName + ".class")));
 129 
 130         checkClasses(outputDir, pkgName);
 131     }
 132 
 133     private void checkClasses(Path outputDir, String pkgName) {
 134         Loader loader = classLoader(outputDir);
 135         checkSubdirClass(loader, pkgName);
 136         checkHeaderClass(loader, pkgName);
 137         checkForwarderClass(loader, pkgName);
 138     }
 139 
 140     private void checkSubdirClass(Loader loader, String pkgName) {


< prev index next >