123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- /********************************************************************
- * Copyright (c) 2005 Contributors. All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors: IBM Corporation - initial API and implementation
- * Helen Hawkins - iniital version
- *******************************************************************/
- package org.aspectj.tools.ajdoc;
-
- import java.io.File;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.List;
-
- import junit.framework.AssertionFailedError;
- import junit.framework.TestCase;
-
- import org.aspectj.tools.ajc.Ajc;
-
- /**
- * This class is the super class of all Ajdoc tests. It creates
- * a sandbox directory and provides utility methods for
- * copying over the test projects and running the ajdoc command
- */
- public class AjdocTestCase extends TestCase{
-
- public final static String testdataSrcDir = "../ajdoc/testdata";
- protected static File sandboxDir;
- private String docOutdir, projectDir;
-
-
- protected void setUp() throws Exception {
- super.setUp();
- docOutdir = null;
- projectDir = null;
- // Create a sandbox in which to work
- sandboxDir = Ajc.createEmptySandbox();
- // create the ajdocworkdingdir in the sandbox
- Main.setOutputWorkingDir(getWorkingDir().getAbsolutePath());
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- // reset where ajdocworkingdir is created
- Main.resetOutputWorkingDir();
- }
-
- /**
- * Fill in the working directory with the project files and
- * create a doc top level directory in which to generate
- * the ajdoc output.
- */
- public void initialiseProject(String projectName) {
- File projectSrc=new File(testdataSrcDir + File.separatorChar + projectName);
- File destination=new File(getWorkingDir(),projectName);
- if (!destination.exists()) {destination.mkdir();}
- copy(projectSrc,destination);
- projectDir = destination.getAbsolutePath();
-
- File docDestination = new File(getWorkingDir().toString() + File.separatorChar + projectName,"doc");
- if (!docDestination.exists()) {docDestination.mkdir();}
- docOutdir = docDestination.getAbsolutePath();
- }
-
- /**
- * @return the working directory
- */
- protected File getWorkingDir() {
- return sandboxDir;
- }
-
- /**
- * @return the absolute path of the project directory
- * for example c:\temp\ajcSandbox\ajcTest15200.tmp\myProject
- */
- protected String getAbsoluteProjectDir() {
- return projectDir;
- }
-
- /**
- * @return the absolute path of the doc output directory
- * for example c:\temp\ajcSandbox\ajcTest15200.tmp\myProject\doc
- */
- protected String getAbsolutePathOutdir() {
- return docOutdir;
- }
-
- /**
- * Copy the contents of some directory to another location - the
- * copy is recursive.
- */
- private void copy(File from, File to) {
- String contents[] = from.list();
- if (contents==null) return;
- for (int i = 0; i < contents.length; i++) {
- String string = contents[i];
- File f = new File(from,string);
- File t = new File(to,string);
-
- if (f.isDirectory()) {
- t.mkdir();
- copy(f,t);
- } else if (f.isFile()) {
- try {
- org.aspectj.util.FileUtil.copyFile(f,t);
- } catch (IOException e) {
- throw new AssertionFailedError("Unable to copy " + f + " to " + t);
- }
- }
- }
- }
-
- /**
- * Run the ajdoc command with the given visibility argument,
- * the default source level and the given input files.
- */
- public void runAjdoc(String visibility, File[] inputFiles) {
- if (!visibility.equals("public")
- && !visibility.equals("protected")
- && !visibility.equals("private")) {
- fail("need to pass 'public','protected' or 'private' visibility to ajdoc");
- }
- if (inputFiles.length == 0) {
- fail("need to pass some files into ajdoc");
- }
- String[] args = new String[5 + inputFiles.length];
- args[0] = "-" + visibility;
- args[1] = "-classpath";
- args[2] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[3] = "-d";
- args[4] = getAbsolutePathOutdir();
- for (int i = 0; i < inputFiles.length; i++) {
- args[5+i] = inputFiles[i].getAbsolutePath();
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the default visibility
- * and source level and the given input files.
- */
- public void runAjdoc(File[] inputFiles) {
- if (inputFiles.length == 0) {
- fail("need to pass some files into ajdoc");
- }
- String[] args = new String[4 + inputFiles.length];
- args[0] = "-classpath";
- args[1] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[2] = "-d";
- args[3] = getAbsolutePathOutdir();
- for (int i = 0; i < inputFiles.length; i++) {
- args[4+i] = inputFiles[i].getAbsolutePath();
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the default visibility
- * and source level, the given input files and the given
- * aspectj options
- */
- public void runAjdoc(File[] inputFiles, String sourceLevel, String[] ajOptions) {
- if (inputFiles.length == 0) {
- fail("need to pass some files into ajdoc");
- }
- if (!sourceLevel.equals("1.3")
- && !sourceLevel.equals("1.4")
- && !sourceLevel.equals("1.5")) {
- fail("need to pass ajdoc '1.3', '1.4', or '1.5' as the source level");
- }
- String[] args = new String[6 + inputFiles.length + ajOptions.length];
- args[0] = "-source";
- args[1] = sourceLevel;
- args[2] = "-classpath";
- args[3] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[4] = "-d";
- args[5] = getAbsolutePathOutdir();
- for (int i = 0; i < ajOptions.length; i++) {
- args[6 + i] = ajOptions[i];
- }
- for (int i = 0; i < inputFiles.length; i++) {
- args[6 + i +ajOptions.length] = inputFiles[i].getAbsolutePath();
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the given visibility argument,
- * the given source level argument and the given input files.
- */
- public void runAjdoc(String visibility, String sourceLevel, File[] inputFiles) {
- if (!visibility.equals("public")
- && !visibility.equals("protected")
- && !visibility.equals("private")) {
- fail("need to pass 'public','protected' or 'private' visibility to ajdoc");
- }
- if (!sourceLevel.equals("1.3")
- && !sourceLevel.equals("1.4")
- && !sourceLevel.equals("1.5")) {
- fail("need to pass ajdoc '1.3', '1.4', or '1.5' as the source level");
- }
- if (inputFiles.length == 0) {
- fail("need to pass some files into ajdoc");
- }
- for (int i = 0; i < inputFiles.length; i++) {
- if (!inputFiles[i].exists()) {
- fail(inputFiles[i].getAbsolutePath() + " does not exist");
- }
- }
-
- String[] args = new String[7 + inputFiles.length];
- args[0] = "-" + visibility;
- args[1] = "-source";
- args[2] = sourceLevel;
- args[3] = "-classpath";
- args[4] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[5] = "-d";
- args[6] = getAbsolutePathOutdir();
- for (int i = 0; i < inputFiles.length; i++) {
- args[7+i] = inputFiles[i].getAbsolutePath();
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the given visibility argument,
- * the default source level and the given input directories.
- */
- public void runAjdoc(String visibility, String[] directoryNames) {
- if (!visibility.equals("public")
- && !visibility.equals("protected")
- && !visibility.equals("private")) {
- fail("need to pass 'public','protected' or 'private' visibility to ajdoc");
- }
- if (directoryNames.length == 0) {
- fail("need to pass some directories into ajdoc");
- }
- String[] args = new String[7 + directoryNames.length];
- args[0] = "-" + visibility;
- args[1] = "-classpath";
- args[2] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[3] = "-d";
- args[4] = getAbsolutePathOutdir();
- args[5] = "-sourcepath";
- args[6] = getAbsoluteProjectDir();
- for (int i = 0; i < directoryNames.length; i++) {
- args[7+i] = directoryNames[i];
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the default visibility and
- * source level and the given input directories.
- */
- public void runAjdoc(String[] directoryNames) {
- if (directoryNames.length == 0) {
- fail("need to pass some directories into ajdoc");
- }
- String[] args = new String[6 + directoryNames.length];
- args[0] = "-classpath";
- args[1] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[2] = "-d";
- args[3] = getAbsolutePathOutdir();
- args[4] = "-sourcepath";
- args[5] = getAbsoluteProjectDir();
- for (int i = 0; i < directoryNames.length; i++) {
- args[6+i] = directoryNames[i];
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the given visibility argument,
- * the default source level and the given input directories.
- */
- public void runAjdoc(String visibility, String lstFile) {
- if (!visibility.equals("public")
- && !visibility.equals("protected")
- && !visibility.equals("private")) {
- fail("need to pass 'public','protected' or 'private' visibility to ajdoc");
- }
-
- String[] args = new String[8];
- args[0] = "-" + visibility;
- args[1] = "-classpath";
- args[2] = AjdocTests.ASPECTJRT_PATH.getPath();
- args[3] = "-d";
- args[4] = getAbsolutePathOutdir();
- args[5] = "-sourcepath";
- args[6] = getAbsoluteProjectDir();
- args[7] = "@" + getAbsoluteProjectDir() + File.separatorChar + lstFile;
- org.aspectj.tools.ajdoc.Main.main(args);
- }
-
- /**
- * Run the ajdoc command with the given options
- */
- public void runAjdoc(List options) {
- String[] args = new String[options.size()];
- int i = 0;
- for (Iterator iter = options.iterator(); iter.hasNext();) {
- String element = (String) iter.next();
- args[i] = element;
- i++;
- }
- org.aspectj.tools.ajdoc.Main.main(args);
- }
- }
|