package org.aspectj.internal.build;
+import org.apache.tools.ant.*;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Commandline.Argument;
+import org.aspectj.internal.tools.ant.taskdefs.*;
import org.aspectj.internal.tools.ant.taskdefs.BuildModule;
+import org.aspectj.internal.tools.build.*;
+import org.aspectj.internal.tools.build.Modules;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
+import junit.framework.*;
import junit.framework.TestCase;
/**
*
}
ArrayList tempFiles = new ArrayList();
+ private File jarDir;
boolean building; // must be enabled for tests to run
public BuildModuleTest(String name) {
}
public void testBuild() {
- checkBuild("build", null, null);
+ checkBuild("build",
+ Checklics.class.getName(),
+ new String[0], // help message
+ true); // ant needed
}
+
public void testAsm() {
- checkBuild("asm", null, null);
+ checkBuild("asm");
}
public void testRuntime() {
- checkBuild("runtime", null, null);
+ checkBuild("runtime");
}
public void testAjbrowser() {
- checkBuild("ajbrowser", null, null);
+ checkBuild("ajbrowser",
+ "org.aspectj.tools.ajbrowser.Main",
+ new String[] {"-noExit", "-version"}); // compiler version
}
public void testAjdt() {
- checkBuild("org.aspectj.ajdt.core", "org.aspectj.tools.ajc.Main",
- new String[] { "-version" });
+ checkBuild("org.aspectj.ajdt.core",
+ "org.aspectj.tools.ajc.Main",
+ new String[] { "-noExit", "-version" });
+ }
+ public void testTestingDrivers() {
+ checkBuild("testing-drivers",
+ "org.aspectj.testing.drivers.Harness",
+ new String[] {"-help"});
}
public void testAspectjtools() {
checkBuildProduct(productDir, baseDir, distDir, jarDir);
}
+ public void testModuleAntecedantsClipped() {
+ checkAntClipping("testing-drivers", true);
+ checkAntClipping("taskdefs", false);
+ }
+
+ void checkAntClipping(String moduleName, boolean expectAnt) {
+ File baseDir = new File("..").getAbsoluteFile();
+ File jarDir = new File("../aj-build/jars").getAbsoluteFile();
+ Messager handler = new Messager();
+ Modules modules = new Modules(baseDir, jarDir, false, handler);
+ Module td = modules.getModule(moduleName);
+ ArrayList list = td.findKnownJarAntecedants();
+ // should include ant
+ boolean gotAnt = false;
+ for (Iterator iter = list.iterator(); iter.hasNext();) {
+ File lib = (File) iter.next();
+ if (lib.getPath().endsWith("ant.jar")) {
+ gotAnt = true;
+ break;
+ }
+ }
+ String label = (expectAnt ? "expected" : "not expecting")
+ + " ant in antecedants for "
+ + moduleName;
+ assertTrue(label, expectAnt == gotAnt);
+ }
+
void checkBuildProduct(File productDir, File baseDir, File distDir, File jarDir) {
if (!building) {
System.err.println(SKIP_MESSAGE + "product " + productDir);
// now run installer and do product tests?
}
- void checkBuild(String module, String classname, String[] args) {
- if (!building) {
- System.err.println(SKIP_MESSAGE + "module " + module);
- return;
+ File getAntJar() {
+ return new File("../lib/ant/lib/ant.jar");
+ }
+
+ File getJarDir() {
+ if (null == jarDir) {
+ jarDir = new File("tempJarDir");
+ tempFiles.add(jarDir);
}
- assertTrue(null != module);
- checkJavac();
-
+ return jarDir;
+ }
+
+ BuildModule getTask(String module) {
BuildModule task = new BuildModule();
Project project = new Project();
task.setProject(project);
- File jarDir = new File("tempJarDir");
+ File jarDir = getJarDir();
assertTrue(jarDir.canWrite() || jarDir.mkdirs());
tempFiles.add(jarDir);
task.setModuledir(new Path(project, "../" + module));
task.setJardir(new Path(project, jarDir.getAbsolutePath()));
- task.setFailonerror(true);
+ return task;
+ }
+
+ void checkBuild(String module) {
+ checkBuild(module, null, null, false);
+ }
+
+ void checkBuild(String module,
+ String classname,
+ String[] args) {
+ checkBuild(module, classname, args, false);
+ }
+
+ void checkBuild(String module,
+ String classname,
+ String[] args,
+ boolean addAnt) {
+ if (!building) {
+ System.err.println(SKIP_MESSAGE + "module " + module);
+ return;
+ }
+ assertTrue(null != module);
+ checkJavac();
+
+ // run without assembly
+ BuildModule task = getTask(module);
+ task.setAssembleall(false);
task.execute();
+ File jar = new File(getJarDir(), module + ".jar");
+ assertTrue("cannot read " + jar, jar.canRead());
+ assertTrue("cannot delete " + jar, jar.delete());
+
+ // run with assembly
+ task = getTask(module);
+ task.setAssembleall(true);
+ task.execute();
+ jar = new File(getJarDir(), module + "-all.jar");
+ assertTrue("cannot read " + jar, jar.canRead());
+ // verify if possible
if (null == classname) {
return;
}
Java java = new Java();
+ Project project = task.getProject();
java.setProject(project);
- File jar = new File(jarDir, module + ".jar");
- java.setClasspath(new Path(project, jar.getAbsolutePath()));
+ Path cp = new Path(project);
+ cp.append(new Path(project, jar.getAbsolutePath()));
+ if (addAnt) {
+ cp.append(new Path(project, getAntJar().getAbsolutePath()));
+ }
+ java.setClasspath(cp);
java.setClassname(classname);
for (int i = 0; i < args.length; i++) {
Argument arg = java.createArg();
arg.setValue(args[i]);
}
- java.execute();
+ java.setFailonerror(true);
+ try {
+ java.execute();
+ } catch (BuildException e) {
+ e.printStackTrace(System.err);
+ assertTrue("BuildException running " + classname, false);
+ }
}
void checkJavac() {