/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.codegen; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLClassLoader; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; import org.junit.After; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; public class SimpleCompilerTest { @After public void tearDown() { new File("src/test/java/com/mysema/codegen/SimpleCompilerTest.class").delete(); } @Test @Ignore public void Run() throws UnsupportedEncodingException { new File("target/out").mkdir(); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); URLClassLoader classLoader = (URLClassLoader)Thread.currentThread().getContextClassLoader(); // create classpath StringBuilder path = new StringBuilder(); for (URL url : classLoader.getURLs()) { if (path.length() > 0) { path.append(File.pathSeparator); } String decodedPath = URLDecoder.decode(url.getPath(), "UTF-8"); path.append(new File(decodedPath).getAbsolutePath()); } System.err.println(path); // compile List<String> options = Arrays.asList( "-classpath", path.toString(), "-s", "target/out", "src/test/java/com/mysema/codegen/SimpleCompilerTest.java"); int compilationResult = compiler.run(null, null, null, options.toArray(new String[options.size()])); if (compilationResult != 0) { Assert.fail("Compilation Failed"); } } @Test public void Run2() { new File("target/out2").mkdir(); JavaCompiler compiler = new SimpleCompiler(); System.out.println(compiler.getClass().getName()); List<String> options = new ArrayList<String>(3); options.add("-s"); options.add("target/out2"); options.add("src/test/java/com/mysema/codegen/SimpleCompilerTest.java"); int compilationResult = compiler.run(null, null, null, options.toArray(new String[options.size()])); if (compilationResult != 0) { Assert.fail("Compilation Failed"); } } @Test public void Surefire() { URLClassLoader cl = (URLClassLoader) Thread.currentThread().getContextClassLoader(); assertTrue(SimpleCompiler.isSureFireBooter(cl)); } }