You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AjConfigTests.java 8.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /********************************************************************
  2. * Copyright (c) 2007 Contributors. All rights reserved.
  3. * This program and the accompanying materials are made available
  4. * under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution and is available at
  6. * http://eclipse.org/legal/epl-v10.html
  7. *
  8. * Contributors: IBM Corporation - initial API and implementation
  9. * Helen Hawkins - initial version
  10. *******************************************************************/
  11. package org.aspectj.ajde.core.tests;
  12. import java.io.File;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.HashSet;
  17. import java.util.Iterator;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.Set;
  21. import org.aspectj.ajde.core.AjdeCoreTestCase;
  22. import org.aspectj.ajde.core.IOutputLocationManager;
  23. import org.aspectj.ajde.core.JavaOptions;
  24. import org.aspectj.ajde.core.TestCompilerConfiguration;
  25. import org.aspectj.ajde.core.internal.AjdeCoreBuildManager;
  26. import org.aspectj.ajdt.internal.core.builder.AjBuildConfig;
  27. /**
  28. * Tests that the AjBuildConfig is populated correctly from the ICompilerConfiguration
  29. */
  30. public class AjConfigTests extends AjdeCoreTestCase {
  31. private TestCompilerConfiguration compilerConfig;
  32. private AjdeCoreBuildManager ajdeBuildManager;
  33. protected void setUp() throws Exception {
  34. super.setUp();
  35. initialiseProject("SimpleProject");
  36. ajdeBuildManager = new AjdeCoreBuildManager(getCompiler());
  37. compilerConfig = (TestCompilerConfiguration) getCompiler().getCompilerConfiguration();
  38. }
  39. protected void tearDown() throws Exception {
  40. super.tearDown();
  41. ajdeBuildManager = null;
  42. compilerConfig = null;
  43. }
  44. public void testJavaOptionsMap() {
  45. Map<String,String> options = JavaOptions.getDefaultJavaOptions();
  46. options.put(JavaOptions.WARN_DEPRECATION, JavaOptions.WARNING);
  47. compilerConfig.setJavaOptions(options);
  48. Map found = genAjBuildConfig().getOptions().getMap();
  49. String warning = (String) found.get(JavaOptions.WARN_DEPRECATION);
  50. assertEquals("expected to be warning on deprecation but found setting " + " was " + warning, JavaOptions.WARNING, warning);
  51. }
  52. public void testAspectPath() {
  53. Set<File> aspects = new HashSet<File>();
  54. compilerConfig.setAspectPath(aspects);
  55. AjBuildConfig buildConfig = genAjBuildConfig();
  56. List<File> aPath = buildConfig.getAspectpath();
  57. assertTrue("no aspect path", aPath.isEmpty());
  58. File f = new File("jarone.jar");
  59. aspects.add(f);
  60. buildConfig = genAjBuildConfig();
  61. List<File> aPath2 = buildConfig.getAspectpath();
  62. assertEquals("expected one entry on the aspectpath but found " + aPath2.size(), 1, aPath2.size());
  63. assertTrue("expected to find file " + f.getName() + " on the aspectpath" + " but didn't", aPath2.contains(f));
  64. File f2 = new File("jartwo.jar");
  65. aspects.add(f2);
  66. buildConfig = genAjBuildConfig();
  67. List<File> aPath3 = buildConfig.getAspectpath();
  68. assertEquals("expected two entries on the aspectpath but found " + aPath3.size(), 2, aPath3.size());
  69. assertTrue("expected to find file " + f.getName() + " on the aspectpath" + " but didn't", aPath3.contains(f));
  70. assertTrue("expected to find file " + f2.getName() + " on the aspectpath" + " but didn't", aPath3.contains(f2));
  71. }
  72. public void testInpath() {
  73. Set<File> jars = new HashSet<File>();
  74. compilerConfig.setInpath(jars);
  75. AjBuildConfig buildConfig = genAjBuildConfig();
  76. List<File> inJars = buildConfig.getInpath();
  77. assertTrue("expected to find nothing on the inpath but found " + inJars, inJars.isEmpty());
  78. File f = new File("jarone.jar");
  79. jars.add(f);
  80. buildConfig = genAjBuildConfig();
  81. List<File> inJars2 = buildConfig.getInpath();
  82. assertTrue("expected to find one file on the inpath but found " + inJars2.size() + ": " + inJars2, inJars2.size() == 1);
  83. assertTrue("expected to find file " + f.getName() + " on the inpath" + " but didn't", inJars2.contains(f));
  84. File f2 = new File("jartwo.jar");
  85. jars.add(f2);
  86. buildConfig = genAjBuildConfig();
  87. List<File> inJars3 = buildConfig.getInpath();
  88. assertEquals("expected two entries on the inpath but found " + inJars3.size(), 2, inJars3.size());
  89. assertTrue("expected to find file " + f.getName() + " on the inpath" + " but didn't", inJars3.contains(f));
  90. assertTrue("expected to find file " + f2.getName() + " on the inpath" + " but didn't", inJars3.contains(f2));
  91. }
  92. public void testOutJar() {
  93. String outJar = "mybuild.jar";
  94. compilerConfig.setOutjar(outJar);
  95. AjBuildConfig buildConfig = genAjBuildConfig();
  96. assertNotNull("expected to find a non null output jar but " + "didn't", buildConfig.getOutputJar());
  97. assertEquals("expected to find outjar 'mybuild.jar' but instead " + "found " + buildConfig.getOutputJar().toString(),
  98. outJar, buildConfig.getOutputJar().toString());
  99. }
  100. public void testXHasMember() {
  101. compilerConfig.setNonStandardOptions("-XhasMember");
  102. AjBuildConfig buildConfig = genAjBuildConfig();
  103. assertTrue("expected XhasMember to be enabled but wasn't ", buildConfig.isXHasMemberEnabled());
  104. }
  105. public void testOutputLocationManager() {
  106. IOutputLocationManager mgr = compilerConfig.getOutputLocationManager();
  107. String expectedDefaultOutputDir = mgr.getDefaultOutputLocation().getAbsolutePath();
  108. AjBuildConfig buildConfig = genAjBuildConfig();
  109. String found = buildConfig.getCompilationResultDestinationManager().getDefaultOutputLocation().getAbsolutePath();
  110. assertEquals("expected to find default output location " + expectedDefaultOutputDir + " but found " + found,
  111. expectedDefaultOutputDir, found);
  112. }
  113. public void testSourcePathResources() {
  114. Map<String, File> m = new HashMap<String, File>();
  115. m.put("newFile.txt", getWorkingDir());
  116. compilerConfig.setSourcePathResources(m);
  117. AjBuildConfig buildConfig = genAjBuildConfig();
  118. Map<String, File> found = buildConfig.getSourcePathResources();
  119. for (Iterator<String> i = found.keySet().iterator(); i.hasNext();) {
  120. String resource = i.next();
  121. assertEquals("expected to find resource with name newFile.txt but " + "found " + resource, "newFile.txt", resource);
  122. File from = (File) buildConfig.getSourcePathResources().get(resource);
  123. assertEquals("expected to find resource with file " + getWorkingDir() + "but found " + from, getWorkingDir(), from);
  124. }
  125. }
  126. public void testClasspath() {
  127. String classpath = compilerConfig.getClasspath();
  128. List<String> found = genAjBuildConfig().getClasspath();
  129. StringBuffer sb = new StringBuffer();
  130. for (Iterator<String> iterator = found.iterator(); iterator.hasNext();) {
  131. String name = (String) iterator.next();
  132. sb.append(name);
  133. if (iterator.hasNext()) {
  134. sb.append(File.pathSeparator);
  135. }
  136. }
  137. assertEquals("expected to find classpath " + classpath + " but found " + sb.toString(), classpath, sb.toString());
  138. }
  139. public void testNonStandardOptions() {
  140. compilerConfig.setNonStandardOptions("-XterminateAfterCompilation");
  141. AjBuildConfig buildConfig = genAjBuildConfig();
  142. assertTrue("XterminateAfterCompilation", buildConfig.isTerminateAfterCompilation());
  143. compilerConfig.setNonStandardOptions("-XserializableAspects");
  144. buildConfig = genAjBuildConfig();
  145. assertTrue("XserializableAspects", buildConfig.isXserializableAspects());
  146. compilerConfig.setNonStandardOptions("-XnoInline");
  147. buildConfig = genAjBuildConfig();
  148. assertTrue("XnoInline", buildConfig.isXnoInline());
  149. compilerConfig.setNonStandardOptions("-Xlint");
  150. buildConfig = genAjBuildConfig();
  151. assertEquals("Xlint", AjBuildConfig.AJLINT_DEFAULT, buildConfig.getLintMode());
  152. compilerConfig.setNonStandardOptions("-Xlint:error");
  153. buildConfig = genAjBuildConfig();
  154. assertEquals("Xlint", AjBuildConfig.AJLINT_ERROR, buildConfig.getLintMode());
  155. // and a few options thrown in at once
  156. compilerConfig.setNonStandardOptions("-Xlint -XnoInline -XserializableAspects");
  157. buildConfig = genAjBuildConfig();
  158. assertEquals("Xlint", AjBuildConfig.AJLINT_DEFAULT, buildConfig.getLintMode());
  159. assertTrue("XnoInline", buildConfig.isXnoInline());
  160. assertTrue("XserializableAspects", buildConfig.isXserializableAspects());
  161. }
  162. public void testProjectSourceFiles() throws IOException {
  163. String f = getAbsoluteProjectDir() + File.separator + "C.java";
  164. List files = new ArrayList();
  165. files.add(f);
  166. compilerConfig.setProjectSourceFiles(files);
  167. AjBuildConfig buildConfig = genAjBuildConfig();
  168. String found = ((File) buildConfig.getFiles().get(0)).getCanonicalPath();// AbsolutePath();
  169. assertEquals("expected source file " + f + ", but found " + found, f, found);
  170. }
  171. private AjBuildConfig genAjBuildConfig() {
  172. AjBuildConfig buildConfig = ajdeBuildManager.generateAjBuildConfig();
  173. assertNotNull("exepected to generate a non null AjBuildConfig but " + "didn't", buildConfig);
  174. return buildConfig;
  175. }
  176. }