package org.visage.tools.api;
import org.visage.api.VisagecTask;
import com.sun.tools.mjavac.util.JavacFileManager;
import org.visage.tools.api.VisagecTool;
import org.visage.tools.util.VisageFileManager;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticListener;
import javax.tools.JavaFileObject;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import javax.tools.StandardLocation;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Verify that source files can be read from zip files.
*
* @author Tom Ball
*/
public class VSGC1308Test {
int nerrors;
@Test
public void testZipSourceAccess() throws Exception {
nerrors = 0;
VisagecTool tool = VisagecTool.create();
JavacFileManager manager =
(VisageFileManager) tool.getStandardFileManager (null, null, null);
File zip = new File("test/src/org/visage/tools/api/vsgc1308.zip");
assertTrue(zip.exists());
manager.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(zip));
ArrayList<JavaFileObject> sources = new ArrayList<JavaFileObject> ();
JavaFileObject jfo = manager.getJavaFileForInput(StandardLocation.SOURCE_PATH, "Test", JavaFileObject.Kind.SOURCE);
sources.add(jfo);
VisagecTask task = tool.getTask (null, null, new DiagnosticListener<JavaFileObject>() {
public void report (Diagnostic<? extends JavaFileObject> diagnostic) {
System.out.println ("diagnostic = " + diagnostic);
nerrors++;
}
}, Arrays.asList ("-target", "1.5", "-d", getTmpDir().getPath()
), sources);
int n = task.errorCheck();
assertEquals(0, nerrors);
assertEquals(0, n);
}
private static File getTmpDir() {
try {
File f = File.createTempFile("dummy", "file");
f.deleteOnExit();
File tmpdir = f.getParentFile();
if (tmpdir != null)
return tmpdir;
} catch (IOException ex) {
}
File f = new File("test-output");
f.mkdir();
return f;
}
}