BasicCommandTestCase.java
/* *******************************************************************
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* Contributors:
* PARC initial implementation
* ******************************************************************/
package org.aspectj.ajdt.internal.compiler.batch;
import java.io.File;
import java.util.ArrayList;
//import java.util.Arrays;
import java.util.List;
import org.aspectj.ajdt.ajc.*;
import org.aspectj.bridge.ICommand;
//import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.MessageHandler;
/**
* @author hugunin
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class BasicCommandTestCase extends CommandTestCase {
/**
* Constructor for CommandTestCase.
* @param name
*/
public BasicCommandTestCase(String name) {
super(name);
}
public void testA() {
checkCompile("src1/A.java", NO_ERRORS);
}
public void testA1() {
checkCompile("src1/A1.java", NO_ERRORS);
}
public void testBadA() {
checkCompile("src1/BadA.java", new int[] {7, 8});
}
public void testHello() {
checkCompile("src1/Hello.java", NO_ERRORS);
}
public void testBadHello() {
checkCompile("src1/BadHello.java", new int[] {5});
}
public void testMissingHello() {
checkCompile("src1/MissingHello.java", TOP_ERROR);
}
public void testBadBinding() {
checkCompile("src1/BadBinding.java", new int[] {2, 4, 8, 10, 13, 16, 19});
}
public void testThisAndModifiers() {
checkCompile("src1/ThisAndModifiers.java", NO_ERRORS);
}
public void testDeclares() {
checkCompile("src1/Declares.java", new int[] {2});
}
public void testDeclareWarning() {
checkCompile("src1/DeclareWarning.java", NO_ERRORS);
}
public void testP1() {
checkCompile("src1/p1/Foo.java", NO_ERRORS);
}
public void testUnimplementedSyntax() {
checkCompile("src1/UnimplementedSyntax.java",
new int[] {5, 15, 16, 22, 25});
}
public void testXlintWarn() {
checkCompile("src1/Xlint.java", NO_ERRORS);
}
public void testXlintError() {
List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
args.add("-classpath");
StringBuilder classpath = new StringBuilder();
classpath.append(getRuntimeClasspath());
classpath.append(File.pathSeparator).append("../lib/junit/junit.jar;../testing-client/bin");
args.add(classpath.toString());
args.add("-Xlint:error");
args.add(Constants.TESTDATA_PATH + "/src1/Xlint.java");
runCompiler(args, new int[] {2});
}
public void testMissingJarError() {
List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
args.add("-classpath");
args.add(getRuntimeClasspath() + File.pathSeparator +
"../lib/junit/junit.jar;../testing-client/bin;not_found_anywhere.jar");
args.add(Constants.TESTDATA_PATH + "/src1/ThisAndModifiers.java");
ICommand command = new AjdtCommand();
MessageHandler myHandler = new MessageHandler();
//myHandler.setInterceptor(org.aspectj.tools.ajc.Main.MessagePrinter.TERSE);
/*boolean result = */command.runCommand((String[])args.toArray(new String[0]), myHandler);
//System.err.println("messages: " + Arrays.asList(myHandler.getMessages(IMessage.INFO, true)));
// DON'T yet have a way of testing that we actually got a particular info message
assertEquals("only info for missing jar", 0, myHandler.getErrors().length);
}
public void testMissingRuntimeError() {
List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
args.add("-classpath");
args.add("../lib/junit/junit.jar;../testing-client/bin");
args.add(Constants.TESTDATA_PATH + "/src1/ThisAndModifiers.java");
ICommand command = new AjdtCommand();
MessageHandler myHandler = new MessageHandler();
myHandler.setInterceptor(org.aspectj.tools.ajc.Main.MessagePrinter.TERSE);
/*boolean result = */command.runCommand((String[])args.toArray(new String[0]), myHandler);
assertEquals("error for org.aspectj.lang.JoinPoint not found", 1, myHandler.getErrors().length);
}
public void testImplicitOutputDir() {
List args = new ArrayList();
args.add("-classpath");
args.add(getRuntimeClasspath() + File.pathSeparator +
"../lib/junit/junit.jar;../testing-client/bin");
File f1 = new File(Constants.TESTDATA_PATH + "/src1/p1/Foo.class");
File f2 = new File(Constants.TESTDATA_PATH + "/src1/WrongPackage.class");
File f3 = new File(Constants.TESTDATA_PATH + "/src1/WrongPackage$1.class");
if (f1.exists()) f1.delete();
if (f2.exists()) f2.delete();
if (f3.exists()) f3.delete();
args.add(Constants.TESTDATA_PATH + "/src1/p1/Foo.java");
args.add(Constants.TESTDATA_PATH + "/src1/WrongPackage.java");
runCompiler(args, NO_ERRORS);
assertTrue(f1.getPath(), f1.exists());
assertTrue(f2.getPath(), f2.exists());
assertTrue(f3.getPath(), f3.exists());
if (f1.exists()) f1.delete();
if (f2.exists()) f2.delete();
if (f3.exists()) f3.delete();
}
public void testSizeChanges() {
File f1 = new File(getSandboxName(),"SizeIssues.class");
List<String> args = new ArrayList<>();
args.add("-d");
args.add(getSandboxName());
args.add("-classpath");
args.add(getRuntimeClasspath() + File.pathSeparator +
"../lib/junit/junit.jar;../testing-client/bin");
args.add(Constants.TESTDATA_PATH + "/src1/SizeIssuesAspect.java");
args.add(Constants.TESTDATA_PATH + "/src1/SizeIssues.java");
runCompiler(args, NO_ERRORS);
long size = f1.length();
for (int i=0; i < 1; i++) {
f1.delete();
runCompiler(args, NO_ERRORS);
assertEquals(size, f1.length());
}
}
}