diff options
Diffstat (limited to 'testing')
8 files changed, 231 insertions, 208 deletions
diff --git a/testing/.classpath b/testing/.classpath index 223b01f9b..3fe78a651 100644 --- a/testing/.classpath +++ b/testing/.classpath @@ -21,5 +21,6 @@ <classpathentry kind="src" path="/org.aspectj.ajdt.core"/> <classpathentry combineaccessrules="false" kind="src" path="/weaver"/> <classpathentry combineaccessrules="false" kind="src" path="/loadtime"/> + <classpathentry combineaccessrules="false" kind="src" path="/ajde.core"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/testing/src/org/aspectj/testing/ajde/CompileCommand.java b/testing/src/org/aspectj/testing/ajde/CompileCommand.java index 246e3d216..082dbc746 100644 --- a/testing/src/org/aspectj/testing/ajde/CompileCommand.java +++ b/testing/src/org/aspectj/testing/ajde/CompileCommand.java @@ -7,23 +7,37 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Wes Isberg initial implementation + * Wes Isberg initial implementation + * Helen Hawkins Converted to new interface (bug 148190) * ******************************************************************/ package org.aspectj.testing.ajde; -import java.awt.Frame; -import java.io.*; -import java.lang.reflect.*; -import java.util.*; - +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.aspectj.ajde.core.AjCompiler; +import org.aspectj.ajde.core.IBuildMessageHandler; +import org.aspectj.ajde.core.IBuildProgressMonitor; +import org.aspectj.ajde.core.ICompilerConfiguration; +import org.aspectj.ajde.core.IOutputLocationManager; +import org.aspectj.ajde.core.JavaOptions; +import org.aspectj.bridge.AbortException; +import org.aspectj.bridge.ICommand; +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.IMessageHandler; +import org.aspectj.bridge.MessageHandler; +import org.aspectj.bridge.IMessage.Kind; import org.aspectj.testing.harness.bridge.Globals; -import org.aspectj.ajde.*; -import org.aspectj.ajde.ui.*; -import org.aspectj.ajde.ui.internal.*; -import org.aspectj.ajde.ui.swing.*; -import org.aspectj.asm.*; -import org.aspectj.bridge.*; import org.aspectj.util.FileUtil; /** @@ -37,10 +51,12 @@ public class CompileCommand implements ICommand { // this proxy ignores calls InvocationHandler proxy = new VoidInvocationHandler(); InvocationHandler loggingProxy = new LoggingInvocationHandler(); - MyTaskListManager myHandler = new MyTaskListManager(); + MyMessageHandler myHandler = new MyMessageHandler(); long endTime; boolean buildNextFresh; File tempDir; + + private AjCompiler compiler; /** * Clients call this before repeatCommand as a one-shot @@ -57,11 +73,8 @@ public class CompileCommand implements ICommand { myHandler.start(); long startTime = System.currentTimeMillis(); try { - Ajde.getDefault().getBuildManager().buildFresh(); - // System.err.println("compiling " + Arrays.asList(args)); - waitForCompletion(startTime); + compiler.buildFresh(); } finally { - myHandler.finish(handler); runCommandCleanup(); } return !myHandler.hasError(); @@ -73,12 +86,10 @@ public class CompileCommand implements ICommand { // System.err.println("recompiling..."); if (buildNextFresh) { buildNextFresh = false; - Ajde.getDefault().getBuildManager().buildFresh(); + compiler.buildFresh(); } else { - Ajde.getDefault().getBuildManager().build(); + compiler.build(); } - waitForCompletion(startTime); - myHandler.finish(handler); return !myHandler.hasError(); } void runCommandCleanup() { @@ -92,33 +103,13 @@ public class CompileCommand implements ICommand { void setEndTime(long endTime) { this.endTime = endTime; } - - private void waitForCompletion(long startTime) { - long maxTime = startTime + MAX_TIME; - while ((startTime > endTime) - && (maxTime > System.currentTimeMillis())) { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - } - } - } - + private void setup(String[] args) { File config = writeConfig(args); if (null == config) { throw new Error("unable to write config file"); } - EditorAdapter editorAdapter = - (EditorAdapter) makeProxy(EditorAdapter.class); - TaskListManager taskListManager = myHandler; - BuildProgressMonitor buildProgressMonitor = - new DefaultBuildProgressMonitor(new Frame()) { - public void finish(boolean b) { - super.finish(b); - setEndTime(System.currentTimeMillis()); - } - }; + IBuildProgressMonitor buildProgressMonitor = new MyBuildProgressMonitor(); String classesDir = "../testing/bin/classes"; for (int i = 0; i < args.length; i++) { if ("-d".equals(args[i]) && ((1 +i) < args.length)) { @@ -126,56 +117,8 @@ public class CompileCommand implements ICommand { break; } } - - ProjectPropertiesAdapter projectPropertiesAdapter = - new ProjectProperties(classesDir); - // neither of these are in the true classpath - // new NullIdeProperties(""); // in testsrc - // = new BrowserProperties(); // in ajbrowser - BuildOptionsAdapter buildOptionsAdapter = - new AjcBuildOptions(new UserPreferencesStore(false)); - IdeUIAdapter ideUIAdapter = - (IdeUIAdapter) makeProxy(IdeUIAdapter.class); - ErrorHandler errorHandler = - (ErrorHandler) makeProxy(ErrorHandler.class); - - AbstractIconRegistry iconRegistry = new AbstractIconRegistry() { - protected AbstractIcon createIcon(String path) { - return new AbstractIcon(new Object()); - } - }; - StructureViewNodeFactory structureViewNodeFactory = - new StructureViewNodeFactory(iconRegistry) { - protected IStructureViewNode createDeclaration( - IProgramElement node, - AbstractIcon icon, - List children) { - return new SwingTreeViewNode(node, icon, children); - } - protected IStructureViewNode createRelationship( - IRelationship node, - AbstractIcon icon) { - return new SwingTreeViewNode(node, icon); - } - protected IStructureViewNode createLink( - IProgramElement node, - AbstractIcon icon) { - return new SwingTreeViewNode(node, icon); - } - }; - - Ajde.init( - editorAdapter, - taskListManager, - buildProgressMonitor, - projectPropertiesAdapter, - buildOptionsAdapter, - structureViewNodeFactory, - ideUIAdapter, - errorHandler); - - Ajde.getDefault().getConfigurationManager().setActiveConfigFile( - config.getAbsolutePath()); + MyCompilerConfig compilerConfig = new MyCompilerConfig(); + compiler = new AjCompiler("blah",compilerConfig,buildProgressMonitor,myHandler); } private File writeConfig(String[] args) { @@ -214,61 +157,18 @@ public class CompileCommand implements ICommand { } } -class MyTaskListManager - extends MessageHandler - implements TaskListManager { +class MyMessageHandler implements IBuildMessageHandler { + boolean hasError; boolean hasWarning; - MyTaskListManager() { - super(true); - } - public void addProjectTask(String message, IMessage.Kind kind) { - maintainHasWarning(kind); - } - - public void addSourcelineTask(IMessage message) { - maintainHasWarning(message.getKind()); - handleMessage(message); - } - - public void addSourcelineTask( - String message, - ISourceLocation sourceLocation, - IMessage.Kind kind) { - addSourcelineTask( - new Message(message, kind, null, sourceLocation)); - } - - public void clearTasks() { - if (hasWarning) { - hasWarning = false; - } - if (hasError) { - hasError = false; - } - init(true); - } - - public boolean hasWarning() { - return hasWarning; - } - - boolean hasError() { - return hasError; - } + + private MessageHandler messageHandler = new MessageHandler(false); - void start() { - clearTasks(); - } - void finish(IMessageHandler copyTo) { - if (copyTo == this) { - return; - } - IMessage[] messages = getMessages(null, true); - for (int i = 0; i < messages.length; i++) { - copyTo.handleMessage(messages[i]); - } - } + public boolean handleMessage(IMessage message) throws AbortException { + maintainHasWarning(message.getKind()); + return messageHandler.handleMessage(message); + } + private void maintainHasWarning(IMessage.Kind kind) { if (!hasError) { if (IMessage.ERROR.isSameOrLessThan(kind)) { @@ -280,10 +180,53 @@ class MyTaskListManager hasWarning = true; } } - public void buildSuccessful(boolean wasFullBuild) { - // TODO Auto-generated method stub - + + public boolean hasWarning() { + return hasWarning; + } + + public boolean hasError() { + return hasError; + } + + public void start() { + hasWarning = false; + hasError = false; + messageHandler.init(true); + } + + public void dontIgnore(Kind kind) { + messageHandler.dontIgnore(kind); + } + + public void ignore(Kind kind) { + messageHandler.ignore(kind); + } + + public boolean isIgnoring(Kind kind) { + return messageHandler.isIgnoring(kind); } + +} + +class MyBuildProgressMonitor implements IBuildProgressMonitor { + + public void begin() { + } + + public void finish(boolean wasFullBuild) { + } + + public boolean isCancelRequested() { + return false; + } + + public void setProgress(double percentDone) { + } + + public void setProgressText(String text) { + } + } class VoidInvocationHandler implements InvocationHandler { @@ -349,63 +292,49 @@ class LoggingInvocationHandler implements InvocationHandler { } } +class MyCompilerConfig implements ICompilerConfiguration { -class ProjectProperties implements ProjectPropertiesAdapter { - final private static String PREFIX - = ProjectProperties.class.getName() + ": "; - final private String outputDir; - private Set inJars; private Set inpath; - private Set sourceRoots; private Set aspectPath; private String outJar; + private IOutputLocationManager locationMgr; + + public Set getAspectPath() { return aspectPath;} + public void setAspectPath(Set path) {aspectPath = path;} + + public String getClasspath() { return Globals.S_aspectjrt_jar; } - public ProjectProperties(String outputDir) { - this.outputDir = outputDir; - } - - // known used, per logging proxy - public String getDefaultBuildConfigFile() { return null; } - public void setInJars(Set input) { inJars = input; } + public Set getInpath() { return inpath; } public void setInpath(Set input) { inpath = input; } - public Set getInJars( ) { return inJars; } - public Set getInpath() { return inpath; } - public void setSourceRoots(Set input) { sourceRoots = input; } - public Set getSourceRoots() { return sourceRoots; } - public void setAspectPath(Set path) { aspectPath = path; } - public Set getAspectPath() { return aspectPath; } - public String getClasspath() { return Globals.S_aspectjrt_jar; } - public String getBootClasspath() { return null; } - public void setOutJar(String input){ outJar = input; } - public String getOutJar() { return outJar; } - public String getOutputPath() { return outputDir; } - public OutputLocationManager getOutputLocationManager() { - return null; - } + public Map getJavaOptionsMap() {return JavaOptions.getDefaultJavaOptions();} - // not known if used - log any calls to it - public List getBuildConfigFiles() { return logs("buildConfigFiles"); } - public String getLastActiveBuildConfigFile() { return log("lastActiveBuildConfigFile"); } - public String getProjectName() { return log("projectName"); } - public String getRootProjectDir() { return log("rootProjectDir"); } - public List getProjectSourceFiles() { return logs("projectSourceFiles"); } - public String getProjectSourcePath() { return log("projectSourcePath"); } - public String getAjcWorkingDir() { return log("ajcWorkingDir"); } - public String getClassToExecute() { return log("classToExecute"); } - public String getExecutionArgs() { return log("executionArgs"); } - public String getVmArgs() { return log("vmArgs"); } - private String log(String s) { - System.out.println(PREFIX + s); - return null; - } - private List logs(String s) { - log(s); - return null; - } + public String getOutJar() { return outJar; } + public void setOutJar(String input){ outJar = input; } - public Map getSourcePathResources() { - return null; + public IOutputLocationManager getOutputLocationManager() { + if (locationMgr == null) { + locationMgr = new MyOutputLocationManager(); + } + return locationMgr; } + public String getNonStandardOptions() {return null;} + public List getProjectSourceFiles() {return null;} + public Map getSourcePathResources() {return null;} + +} + +class MyOutputLocationManager implements IOutputLocationManager { + + public List getAllOutputLocations() {return null;} + + public File getDefaultOutputLocation() {return null;} + + public File getOutputLocationForClass(File compilationUnit) {return null;} + + public File getOutputLocationForResource(File resource) {return null;} + + public String getUniqueIdentifier() {return null;} + } diff --git a/testing/testdata/figures-coverage/all.lst b/testing/testdata/figures-coverage/all.lst new file mode 100644 index 000000000..3879af0b1 --- /dev/null +++ b/testing/testdata/figures-coverage/all.lst @@ -0,0 +1,8 @@ +figures/Debug.java +figures/Figure.java +figures/FigureElement.java +figures/Main.java +figures/composites/Line.java +figures/composites/Square.java +figures/primitives/planar/Point.java +figures/primitives/solid/SolidPoint.java diff --git a/testing/testdata/figures-coverage/figures/Debug.java b/testing/testdata/figures-coverage/figures/Debug.java new file mode 100644 index 000000000..01e895abc --- /dev/null +++ b/testing/testdata/figures-coverage/figures/Debug.java @@ -0,0 +1,7 @@ + +package figures; + +aspect Debug { + +} + diff --git a/testing/testdata/figures-coverage/figures/Main.java b/testing/testdata/figures-coverage/figures/Main.java new file mode 100644 index 000000000..189f05cee --- /dev/null +++ b/testing/testdata/figures-coverage/figures/Main.java @@ -0,0 +1,56 @@ + +package figures; + +import figures.primitives.planar.Point; +import figures.primitives.solid.SolidPoint; + +class Main { + + private static Point startPoint; + + public static void main(String[] args) { + try { + System.out.println("> starting..."); + + startPoint = makeStartPoint(); + //startPoint.setX(3); new Point(0, 0); +// SolidPoint sp1 = new SolidPoint(1, 3, 3); + +// sp1.setZ(1); +// p1.incrXY(3, 3); + } catch (RuntimeException re) { + re.printStackTrace(); + } + System.out.println("> finished."); + } + + /** @deprecated use something else */ + public static Point makeStartPoint() { + //return new Point(1, 2); + return null; + } + + /** This should produce a deprecation warning with JDK > 1.2 */ + static class TestGUI extends javax.swing.JFrame { + TestGUI() { + this.disable(); + } + } + + /** This should produce a porting-deprecation warning. */ + //static pointcut mainExecution(): execution(void main(*)); +} + +privileged aspect Test { + pointcut testptct(): call(* *.*(..)); + + before(Point p, int newval): target(p) && set(int Point.xx) && args(newval) { + System.err.println("> new value of x is: " + p.x + ", setting to: " + newval); + } + + before(int newValue): set(int Point.*) && args(newValue) { + if (newValue < 0) { + throw new IllegalArgumentException("too small"); + } + } +} diff --git a/testing/testdata/figures-coverage/figures/composites/Line.java b/testing/testdata/figures-coverage/figures/composites/Line.java new file mode 100644 index 000000000..1f7ee5dc8 --- /dev/null +++ b/testing/testdata/figures-coverage/figures/composites/Line.java @@ -0,0 +1,6 @@ + +package figures.composites; + +class Line { } + +class BoundedLine extends Line { } diff --git a/testing/testdata/figures-coverage/figures/composites/Square.java b/testing/testdata/figures-coverage/figures/composites/Square.java new file mode 100644 index 000000000..8ba3825d6 --- /dev/null +++ b/testing/testdata/figures-coverage/figures/composites/Square.java @@ -0,0 +1,6 @@ + +package figures.composites; + +class Square { + private String name = "Square"; +} diff --git a/testing/testsrc/org/aspectj/testing/util/StructureModelUtilTest.java b/testing/testsrc/org/aspectj/testing/util/StructureModelUtilTest.java index a4491aab7..e766c95d3 100644 --- a/testing/testsrc/org/aspectj/testing/util/StructureModelUtilTest.java +++ b/testing/testsrc/org/aspectj/testing/util/StructureModelUtilTest.java @@ -7,30 +7,37 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Xerox/PARC initial implementation + * Xerox/PARC initial implementation + * Helen Hawkins Converted to new interface (bug 148190) * ******************************************************************/ package org.aspectj.testing.util; -import java.util.*; +import java.io.File; +import java.util.List; import junit.framework.TestSuite; -import org.aspectj.ajde.AjdeTestCase; +import org.aspectj.ajde.core.AjdeCoreTestCase; +import org.aspectj.ajde.core.TestCompilerConfiguration; import org.aspectj.asm.IProgramElement; /** * @author Mik Kersten */ -public class StructureModelUtilTest extends AjdeTestCase { +public class StructureModelUtilTest extends AjdeCoreTestCase{ - // TODO-path - private final String CONFIG_FILE_PATH = "../examples/figures-coverage/all.lst"; - - public StructureModelUtilTest(String name) { - super(name); - } + private String[] files = new String[]{ + "figures" + File.separator + "Debug.java", + "figures" + File.separator + "Figure.java", + "figures" + File.separator + "FigureElement.java", + "figures" + File.separator + "Main.java", + "figures" + File.separator + "composites" + File.separator + "Line.java", + "figures" + File.separator + "composites" + File.separator + "Square.java", + "figures" + File.separator + "primitives" + File.separator + "planar" + File.separator + "Point.java", + "figures" + File.separator + "primitives" + File.separator + "solid" + File.separator + "SolidPoint.java" + }; public static void main(String[] args) { junit.swingui.TestRunner.run(StructureModelUtilTest.class); @@ -66,8 +73,11 @@ public class StructureModelUtilTest extends AjdeTestCase { protected void setUp() throws Exception { - super.setUp("StructureModelUtilTest"); - doSynchronousBuild(CONFIG_FILE_PATH); + initialiseProject("figures-coverage"); + TestCompilerConfiguration compilerConfig = (TestCompilerConfiguration) getCompiler() + .getCompilerConfiguration(); + compilerConfig.setProjectSourceFiles(getSourceFileList(files)); + doBuild(); } protected void tearDown() throws Exception { |