PageRenderTime 28ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/projects/netbeans-7.3/java.j2seproject/test/unit/src/org/netbeans/modules/java/j2seproject/J2SEActionProviderTest.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus
Java | 854 lines | 683 code | 89 blank | 82 comment | 0 complexity | 2aafbe230e6b2ae0140335702b8a9f4d MD5 | raw file
  1. /*
  2. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  3. *
  4. * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
  5. *
  6. * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
  7. * Other names may be trademarks of their respective owners.
  8. *
  9. * The contents of this file are subject to the terms of either the GNU
  10. * General Public License Version 2 only ("GPL") or the Common
  11. * Development and Distribution License("CDDL") (collectively, the
  12. * "License"). You may not use this file except in compliance with the
  13. * License. You can obtain a copy of the License at
  14. * http://www.netbeans.org/cddl-gplv2.html
  15. * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  16. * specific language governing permissions and limitations under the
  17. * License. When distributing the software, include this License Header
  18. * Notice in each file and include the License file at
  19. * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
  20. * particular file as subject to the "Classpath" exception as provided
  21. * by Oracle in the GPL Version 2 section of the License file that
  22. * accompanied this code. If applicable, add the following below the
  23. * License Header, with the fields enclosed by brackets [] replaced by
  24. * your own identifying information:
  25. * "Portions Copyrighted [year] [name of copyright owner]"
  26. *
  27. * Contributor(s):
  28. *
  29. * The Original Software is NetBeans. The Initial Developer of the Original
  30. * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
  31. * Microsystems, Inc. All Rights Reserved.
  32. *
  33. * If you wish your version of this file to be governed by only the CDDL
  34. * or only the GPL Version 2, indicate your decision by adding
  35. * "[Contributor] elects to include this software in this distribution
  36. * under the [CDDL or GPL Version 2] license." If you do not indicate a
  37. * single choice of license, a recipient has the option to distribute
  38. * your version of this file under either the CDDL, the GPL Version 2 or
  39. * to extend the choice of license to its licensees as provided above.
  40. * However, if you add GPL Version 2 code and therefore, elected the GPL
  41. * Version 2 license, then the option applies only if the new code is
  42. * made subject to such option by the copyright holder.
  43. */
  44. package org.netbeans.modules.java.j2seproject;
  45. import java.beans.PropertyChangeListener;
  46. import java.io.IOException;
  47. import java.io.OutputStream;
  48. import java.io.PrintWriter;
  49. import java.net.URL;
  50. import java.util.ArrayList;
  51. import java.util.Arrays;
  52. import java.util.Collection;
  53. import java.util.Collections;
  54. import java.util.List;
  55. import java.util.Map;
  56. import java.util.Properties;
  57. import java.util.TreeMap;
  58. import org.netbeans.api.fileinfo.NonRecursiveFolder;
  59. import org.netbeans.api.java.classpath.ClassPath;
  60. import org.netbeans.api.java.platform.JavaPlatform;
  61. import org.netbeans.api.java.platform.Specification;
  62. import org.netbeans.api.java.project.JavaProjectConstants;
  63. import org.netbeans.api.project.ProjectManager;
  64. import org.netbeans.junit.NbTestCase;
  65. import org.netbeans.modules.java.api.common.applet.AppletSupport;
  66. import org.netbeans.modules.java.api.common.project.ui.customizer.MainClassChooser;
  67. import org.netbeans.spi.project.ProjectConfiguration;
  68. import org.netbeans.spi.project.ProjectConfigurationProvider;
  69. import org.netbeans.spi.project.support.ant.PropertyEvaluator;
  70. import org.openide.filesystems.FileLock;
  71. import org.openide.filesystems.FileObject;
  72. import org.netbeans.api.project.TestUtil;
  73. import org.netbeans.modules.java.api.common.project.ProjectProperties;
  74. import org.netbeans.modules.java.platform.JavaPlatformProvider;
  75. import org.netbeans.spi.java.classpath.support.ClassPathSupport;
  76. import org.netbeans.spi.project.ActionProvider;
  77. import org.netbeans.spi.project.support.ant.AntProjectHelper;
  78. import org.netbeans.spi.project.support.ant.EditableProperties;
  79. import org.openide.filesystems.FileUtil;
  80. import org.openide.filesystems.URLMapper;
  81. import org.openide.filesystems.test.TestFileUtils;
  82. import org.openide.loaders.DataFolder;
  83. import org.openide.loaders.DataObject;
  84. import org.openide.modules.SpecificationVersion;
  85. import org.openide.util.Lookup;
  86. import org.openide.util.Mutex;
  87. import org.openide.util.lookup.Lookups;
  88. import org.openide.util.test.MockLookup;
  89. /**
  90. * Tests for J2SEActionProvider
  91. *
  92. * @author David Konecny
  93. */
  94. public class J2SEActionProviderTest extends NbTestCase {
  95. public J2SEActionProviderTest(String testName) {
  96. super(testName);
  97. }
  98. private FileObject scratch;
  99. private FileObject projdir;
  100. private FileObject sources;
  101. private FileObject build;
  102. private FileObject tests;
  103. private ProjectManager pm;
  104. private J2SEProject pp;
  105. private AntProjectHelper helper;
  106. private J2SEActionProvider actionProvider;
  107. private DataFolder sourcePkg1;
  108. private DataFolder sourcePkg2;
  109. private DataFolder testPkg1;
  110. private DataFolder testPkg2;
  111. private DataObject someSource1;
  112. private DataObject someSource2;
  113. private DataObject someSource3;
  114. private DataObject someTest1;
  115. private DataObject someTest2;
  116. protected @Override void setUp() throws Exception {
  117. super.setUp();
  118. MockLookup.setLayersAndInstances(new SimplePlatformProvider());
  119. scratch = TestUtil.makeScratchDir(this);
  120. projdir = scratch.createFolder("proj");
  121. J2SEProjectGenerator.setDefaultSourceLevel(new SpecificationVersion ("1.4")); //NOI18N
  122. helper = J2SEProjectGenerator.createProject(FileUtil.toFile(projdir),"proj","foo.Main","manifest.mf",null, false); //NOI18N
  123. EditableProperties ep = helper.getProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH);
  124. ep.put(ProjectProperties.DO_DEPEND, "true"); // to avoid too many changes in tests from issue #118079
  125. helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
  126. J2SEProjectGenerator.setDefaultSourceLevel(null);
  127. pm = ProjectManager.getDefault();
  128. pp = pm.findProject(projdir).getLookup().lookup(J2SEProject.class);
  129. actionProvider = new J2SEActionProvider(pp, pp.getUpdateHelper());
  130. actionProvider.startFSListener();
  131. sources = projdir.getFileObject("src");
  132. tests = projdir.getFileObject("test");
  133. // projdir.createData("build.xml");
  134. build = projdir.createFolder("build");
  135. build.createFolder("classes");
  136. FileObject pkg = sources.getFileObject("foo");
  137. FileObject fo = pkg.createData("Bar.java");
  138. sourcePkg1 = DataFolder.findFolder (pkg);
  139. pkg = sources.createFolder("foo2");
  140. sourcePkg2 = DataFolder.findFolder (pkg);
  141. someSource1 = DataObject.find(fo);
  142. fo = sources.getFileObject("foo").getFileObject("Main.java");
  143. createMain(fo);
  144. someSource2 = DataObject.find(fo);
  145. fo = sources.getFileObject("foo").createData("Third.java");
  146. someSource3 = DataObject.find(fo);
  147. pkg = tests.createFolder("foo");
  148. fo = pkg.createData("BarTest.java");
  149. testPkg1 = DataFolder.findFolder (pkg);
  150. pkg = tests.createFolder("foo2");
  151. testPkg2 = DataFolder.findFolder (pkg);
  152. someTest1 = DataObject.find(fo);
  153. fo = tests.getFileObject("foo").createData("MainTest.java");
  154. someTest2 = DataObject.find(fo);
  155. assertNotNull(someSource1);
  156. assertNotNull(someSource2);
  157. assertNotNull(someTest1);
  158. assertNotNull(someTest2);
  159. }
  160. protected @Override void tearDown() throws Exception {
  161. scratch = null;
  162. projdir = null;
  163. pm = null;
  164. super.tearDown();
  165. }
  166. private void createMain(FileObject fo) throws Exception {
  167. FileLock lock = fo.lock();
  168. PrintWriter pw = new PrintWriter(fo.getOutputStream(lock));
  169. pw.println("package foo;");
  170. pw.println("public class Main { public static void main(String[] args){}; };");
  171. pw.flush();
  172. pw.close();
  173. lock.releaseLock();
  174. }
  175. public void testGetTargetNames() throws Exception {
  176. implTestGetTargetNames();
  177. }
  178. public void testGetTargetNamesMultiRoots () throws Exception {
  179. SourceRootsTest.addSourceRoot(helper, projdir, "src.other.dir","other");
  180. implTestGetTargetNames();
  181. }
  182. public void implTestGetTargetNames () throws Exception {
  183. Properties p;
  184. Lookup context;
  185. String[] targets;
  186. // test COMMAND_COMPILE_SINGLE
  187. p = new Properties();
  188. context = Lookups.fixed(someSource1);
  189. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  190. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  191. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  192. assertEquals("Unexpected target name", "compile-single", targets[0]);
  193. assertEquals("There must be one target parameter", 1, p.keySet().size());
  194. assertEquals("There must be be target parameter", "foo/Bar.java", p.getProperty("javac.includes"));
  195. p = new Properties();
  196. context = Lookups.fixed(someTest1,someTest2);
  197. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  198. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  199. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  200. assertEquals("Unexpected target name", "compile-test-single", targets[0]);
  201. assertEquals("There must be one target parameter", 1, p.keySet().size());
  202. assertEquals("There must be be target parameter", "foo/BarTest.java,foo/MainTest.java", p.getProperty("javac.includes"));
  203. p = new Properties();
  204. context = Lookups.fixed(sourcePkg1);
  205. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  206. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  207. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  208. assertEquals("Unexpected target name", "compile-single", targets[0]);
  209. assertEquals("There must be one target parameter", 1, p.keySet().size());
  210. assertEquals("There must be be target parameter", "foo/**", p.getProperty("javac.includes"));
  211. p = new Properties();
  212. context = Lookups.fixed(sourcePkg1, sourcePkg2);
  213. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  214. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  215. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  216. assertEquals("Unexpected target name", "compile-single", targets[0]);
  217. assertEquals("There must be one target parameter", 1, p.keySet().size());
  218. assertEquals("There must be be target parameter", "foo/**,foo2/**", p.getProperty("javac.includes"));
  219. p = new Properties();
  220. context = Lookups.fixed(DataFolder.findFolder(sources));
  221. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  222. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  223. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  224. assertEquals("Unexpected target name", "compile-single", targets[0]);
  225. assertEquals("There must be one target parameter", 1, p.keySet().size());
  226. assertEquals("There must be be target parameter", "**", p.getProperty("javac.includes"));
  227. p = new Properties();
  228. context = Lookups.fixed(sourcePkg1, new NonRecursiveFolderImpl (sourcePkg1));
  229. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  230. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  231. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  232. assertEquals("Unexpected target name", "compile-single", targets[0]);
  233. assertEquals("There must be one target parameter", 1, p.keySet().size());
  234. assertEquals("There must be be target parameter", "foo/*", p.getProperty("javac.includes"));
  235. p = new Properties();
  236. context = Lookups.fixed(sourcePkg1, sourcePkg2, new NonRecursiveFolderImpl(sourcePkg1), new NonRecursiveFolderImpl(sourcePkg2));
  237. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  238. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  239. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  240. assertEquals("Unexpected target name", "compile-single", targets[0]);
  241. assertEquals("There must be one target parameter", 1, p.keySet().size());
  242. assertEquals("There must be be target parameter", "foo/*,foo2/*", p.getProperty("javac.includes"));
  243. p = new Properties();
  244. context = Lookups.fixed(DataFolder.findFolder(sources), new NonRecursiveFolderImpl(sources));
  245. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
  246. assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
  247. assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
  248. assertEquals("Unexpected target name", "compile-single", targets[0]);
  249. assertEquals("There must be one target parameter", 1, p.keySet().size());
  250. assertEquals("There must be be target parameter", "*", p.getProperty("javac.includes"));
  251. // test COMMAND_TEST_SINGLE
  252. p = new Properties();
  253. context = Lookups.fixed(someSource1);
  254. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_TEST_SINGLE, context, p);
  255. assertEquals("correct targets for COMMAND_TEST_SINGLE", "[test-single]", Arrays.toString(targets));
  256. assertEquals("correct target parameters", "{ignore.failing.tests=true, javac.includes=foo/BarTest.java, test.includes=foo/BarTest.java}", new TreeMap<Object,Object>(p).toString());
  257. p = new Properties();
  258. context = Lookups.fixed(someSource1,someSource2);
  259. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_TEST_SINGLE, context, p);
  260. assertEquals("correct targets for COMMAND_TEST_SINGLE", "[test-single]", Arrays.toString(targets));
  261. assertEquals("correct target parameters", "{ignore.failing.tests=true, javac.includes=foo/BarTest.java,foo/MainTest.java, test.includes=foo/BarTest.java,foo/MainTest.java}", new TreeMap<Object,Object>(p).toString());
  262. // test COMMAND_DEBUG_TEST_SINGLE
  263. p = new Properties();
  264. context = Lookups.fixed(someSource1);
  265. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context, p);
  266. assertNotNull("Must found some targets for COMMAND_DEBUG_TEST_SINGLE", targets);
  267. assertEquals("There must be one target for COMMAND_DEBUG_TEST_SINGLE", 1, targets.length);
  268. assertEquals("Unexpected target name", "debug-test", targets[0]);
  269. assertEquals("There must be two target parameters", 2, p.keySet().size());
  270. assertEquals("There must be be target parameter", "foo.BarTest", p.getProperty("test.class"));
  271. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("javac.includes"));
  272. // test COMMAND_PROFILE_TEST_SINGLE
  273. p = new Properties();
  274. context = Lookups.fixed(someSource1);
  275. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_PROFILE_TEST_SINGLE, context, p);
  276. assertNotNull("Must found some targets for COMMAND_PROFILE_TEST_SINGLE", targets);
  277. assertEquals("There must be one target for COMMAND_PROFILE_TEST_SINGLE", 1, targets.length);
  278. assertEquals("Unexpected target name", "profile-test", targets[0]);
  279. assertEquals("There must be two target parameters", 2, p.keySet().size());
  280. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("javac.includes"));
  281. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("test.includes"));
  282. // test COMMAND_DEBUG_FIX
  283. actionProvider.unitTestingSupport_fixClasses = "foo/Bar";
  284. p = new Properties();
  285. context = Lookups.fixed(someSource1);
  286. targets = actionProvider.getTargetNames(JavaProjectConstants.COMMAND_DEBUG_FIX, context, p);
  287. actionProvider.unitTestingSupport_fixClasses = null;
  288. assertNotNull("Must found some targets for COMMAND_DEBUG_FIX", targets);
  289. assertEquals("There must be one target for COMMAND_DEBUG_FIX", 1, targets.length);
  290. assertEquals("Unexpected target name", "debug-fix", targets[0]);
  291. assertEquals("There must be one target parameter", 2, p.keySet().size());
  292. assertEquals("There must be be target parameter", "foo/Bar", p.getProperty("fix.includes"));
  293. assertEquals("There must be be target parameter", "foo/Bar", p.getProperty("fix.classes"));
  294. p = new Properties();
  295. context = Lookups.fixed(someTest1);
  296. targets = actionProvider.getTargetNames(JavaProjectConstants.COMMAND_DEBUG_FIX, context, p);
  297. assertNotNull("Must found some targets for COMMAND_DEBUG_FIX", targets);
  298. assertEquals("There must be one target for COMMAND_DEBUG_FIX", 1, targets.length);
  299. assertEquals("Unexpected target name", "debug-fix-test", targets[0]);
  300. assertEquals("There must be one target parameter", 2, p.keySet().size());
  301. assertEquals("There must be be target parameter", "foo/BarTest", p.getProperty("fix.includes"));
  302. assertEquals("There must be be target parameter", "", p.getProperty("fix.classes")); //XXX: currently not set for tests, intentionally?
  303. // test COMMAND_RUN_SINGLE
  304. p = new Properties();
  305. context = Lookups.fixed(someSource2);
  306. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  307. try {
  308. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
  309. } finally {
  310. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  311. }
  312. assertNotNull("Must found some targets for COMMAND_RUN_SINGLE", targets);
  313. assertEquals("There must be one target for COMMAND_RUN_SINGLE", 1, targets.length);
  314. assertEquals("Unexpected target name", "run-single", targets[0]);
  315. assertEquals("There must be one target parameter", 2, p.keySet().size());
  316. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  317. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("run.class"));
  318. p = new Properties();
  319. context = Lookups.fixed(someSource2);
  320. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
  321. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  322. try {
  323. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
  324. } finally {
  325. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  326. AppletSupport.unitTestingSupport_isApplet = null;
  327. }
  328. assertNotNull("Must found some targets for COMMAND_RUN_SINGLE", targets);
  329. assertEquals("There must be one target for COMMAND_RUN_SINGLE", 1, targets.length);
  330. assertEquals("Unexpected target name", "run-applet", targets[0]);
  331. assertEquals("There must be one target parameter", 2, p.keySet().size());
  332. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  333. FileObject appletHtml = build.getFileObject("Main", "html");
  334. assertNotNull("Applet HTML page must be generated", appletHtml);
  335. URL appletUrl = URLMapper.findURL(appletHtml, URLMapper.EXTERNAL);
  336. assertEquals("There must be be target parameter", appletUrl.toExternalForm(), p.getProperty("applet.url"));
  337. p = new Properties();
  338. context = Lookups.fixed(someTest1);
  339. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  340. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  341. try {
  342. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
  343. } finally {
  344. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  345. AppletSupport.unitTestingSupport_isApplet = null;
  346. }
  347. assertNotNull("Must found some targets for COMMAND_RUN_SINGLE", targets);
  348. assertEquals("There must be one target for COMMAND_RUN_SINGLE", 1, targets.length);
  349. assertEquals("Unexpected target name", "run-test-with-main", targets[0]);
  350. assertEquals("There must be one target parameter", 2, p.keySet().size());
  351. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("javac.includes"));
  352. assertEquals("There must be be target parameter", "foo.BarTest", p.getProperty("run.class"));
  353. // test COMMAND_DEBUG_SINGLE
  354. p = new Properties();
  355. context = Lookups.fixed(someSource2);
  356. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  357. try {
  358. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
  359. } finally {
  360. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  361. }
  362. assertNotNull("Must found some targets for COMMAND_DEBUG_SINGLE", targets);
  363. assertEquals("There must be one target for COMMAND_DEBUG_SINGLE", 1, targets.length);
  364. assertEquals("Unexpected target name", "debug-single", targets[0]);
  365. assertEquals("There must be one target parameter", 2, p.keySet().size());
  366. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  367. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("debug.class"));
  368. p = new Properties();
  369. context = Lookups.fixed(someSource2);
  370. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
  371. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  372. try {
  373. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
  374. } finally {
  375. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  376. AppletSupport.unitTestingSupport_isApplet = null;
  377. }
  378. assertNotNull("Must found some targets for COMMAND_DEBUG_SINGLE", targets);
  379. assertEquals("There must be one target for COMMAND_DEBUG_SINGLE", 1, targets.length);
  380. assertEquals("Unexpected target name", "debug-applet", targets[0]);
  381. assertEquals("There must be one target parameter", 3, p.keySet().size());
  382. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  383. appletHtml = build.getFileObject("Main", "html");
  384. assertNotNull("Applet HTML page must be generated", appletHtml);
  385. appletUrl = URLMapper.findURL(appletHtml, URLMapper.EXTERNAL);
  386. assertEquals("There must be be target parameter", appletUrl.toExternalForm(), p.getProperty("applet.url"));
  387. p = new Properties();
  388. context = Lookups.fixed(someTest1);
  389. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  390. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  391. try {
  392. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
  393. } finally {
  394. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  395. AppletSupport.unitTestingSupport_isApplet = null;
  396. }
  397. assertNotNull("Must found some targets for COMMAND_DEBUG_SINGLE", targets);
  398. assertEquals("There must be one target for COMMAND_DEBUG_SINGLE", 1, targets.length);
  399. assertEquals("Unexpected target name", "debug-test-with-main", targets[0]);
  400. assertEquals("There must be two target parameters", 2, p.keySet().size());
  401. assertEquals("There must be be target parameter", "foo.BarTest", p.getProperty("debug.class"));
  402. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("javac.includes"));
  403. // test COMMAND_PROFILE_SINGLE
  404. p = new Properties();
  405. context = Lookups.fixed(someSource2);
  406. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  407. try {
  408. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_PROFILE_SINGLE, context, p);
  409. } finally {
  410. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  411. }
  412. assertNotNull("Must found some targets for COMMAND_PROFILE_SINGLE", targets);
  413. assertEquals("There must be one target for COMMAND_PROFILE_SINGLE", 1, targets.length);
  414. assertEquals("Unexpected target name", "profile-single", targets[0]);
  415. assertEquals("There must be one target parameter", 2, p.keySet().size());
  416. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  417. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("run.class"));
  418. p = new Properties();
  419. context = Lookups.fixed(someSource2);
  420. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
  421. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  422. try {
  423. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_PROFILE_SINGLE, context, p);
  424. } finally {
  425. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  426. AppletSupport.unitTestingSupport_isApplet = null;
  427. }
  428. assertNotNull("Must found some targets for COMMAND_PROFILE_SINGLE", targets);
  429. assertEquals("There must be one target for COMMAND_PROFILE_SINGLE", 1, targets.length);
  430. assertEquals("Unexpected target name", "profile-applet", targets[0]);
  431. assertEquals("There must be one target parameter", 3, p.keySet().size());
  432. assertEquals("There must be be target parameter", "foo/Main.java", p.getProperty("javac.includes"));
  433. appletHtml = build.getFileObject("Main", "html");
  434. assertNotNull("Applet HTML page must be generated", appletHtml);
  435. appletUrl = URLMapper.findURL(appletHtml, URLMapper.EXTERNAL);
  436. assertEquals("There must be be target parameter", appletUrl.toExternalForm(), p.getProperty("applet.url"));
  437. p = new Properties();
  438. context = Lookups.fixed(someTest1);
  439. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  440. AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
  441. try {
  442. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_PROFILE_SINGLE, context, p);
  443. } finally {
  444. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  445. AppletSupport.unitTestingSupport_isApplet = null;
  446. }
  447. assertNotNull("Must found some targets for COMMAND_PROFILE_SINGLE", targets);
  448. assertEquals("There must be one target for COMMAND_PROFILE_SINGLE", 1, targets.length);
  449. assertEquals("Unexpected target name", "profile-test-with-main", targets[0]);
  450. assertEquals("There must be two target parameters", 2, p.keySet().size());
  451. assertEquals("There must be be target parameter", "foo.BarTest", p.getProperty("run.class"));
  452. assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("javac.includes"));
  453. // test COMMAND_RUN
  454. p = new Properties();
  455. context = Lookup.EMPTY;
  456. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  457. try {
  458. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN, context, p);
  459. } finally {
  460. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  461. }
  462. assertNotNull("Must found some targets for COMMAND_RUN", targets);
  463. assertEquals("There must be one target for COMMAND_RUN", 1, targets.length);
  464. assertEquals("Unexpected target name", "run", targets[0]);
  465. //The project is saved after the main.class property was added into the project's properties,
  466. //it is no more needed to pass the main.class in the properties.
  467. //See issue #61244: Main class setting not saved for J2SE Project during IDE session
  468. assertEquals("There must be no target parameter", Collections.emptyMap(), p);
  469. // test COMMAND_DEBUG
  470. p = new Properties();
  471. context = Lookup.EMPTY;
  472. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  473. try {
  474. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG, context, p);
  475. } finally {
  476. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  477. }
  478. assertNotNull("Must found some targets for COMMAND_DEBUG", targets);
  479. assertEquals("There must be one target for COMMAND_DEBUG", 1, targets.length);
  480. assertEquals("Unexpected target name", "debug", targets[0]);
  481. //The project is saved after the main.class property was added into the project's properties,
  482. //it is no more needed to pass it in the properties.
  483. //See issue #61244: Main class setting not saved for J2SE Project during IDE session
  484. assertEquals("There must be one target parameter", 1, p.keySet().size());
  485. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("debug.class"));
  486. // test COMMAND_DEBUG_STEP_INTO
  487. p = new Properties();
  488. context = Lookup.EMPTY;
  489. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  490. try {
  491. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_STEP_INTO, context, p);
  492. } finally {
  493. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  494. }
  495. assertNotNull("Must found some targets for COMMAND_DEBUG_STEP_INTO", targets);
  496. assertEquals("There must be one target for COMMAND_DEBUG_STEP_INTO", 1, targets.length);
  497. assertEquals("Unexpected target name", "debug-stepinto", targets[0]);
  498. //The project is saved after the main.class property was added into the project's properties,
  499. //it is no more needed to pass it in the properties.
  500. //See issue #61244: Main class setting not saved for J2SE Project during IDE session
  501. assertEquals("There must be one target parameter", 1, p.keySet().size());
  502. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("debug.class"));
  503. // test COMMAND_PROFILE
  504. p = new Properties();
  505. context = Lookup.EMPTY;
  506. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  507. try {
  508. targets = actionProvider.getTargetNames(ActionProvider.COMMAND_PROFILE, context, p);
  509. } finally {
  510. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  511. }
  512. assertNotNull("Must found some targets for COMMAND_PROFILE", targets);
  513. assertEquals("There must be one target for COMMAND_PROFILE", 1, targets.length);
  514. assertEquals("Unexpected target name", "profile", targets[0]);
  515. //The project is saved after the main.class property was added into the project's properties,
  516. //it is no more needed to pass it in the properties.
  517. //See issue #61244: Main class setting not saved for J2SE Project during IDE session
  518. assertEquals("There must be one target parameter", 1, p.keySet().size());
  519. assertEquals("There must be be target parameter", "foo.Main", p.getProperty("run.class"));
  520. }
  521. public void testGetTargetNamesFromConfig() throws Exception {
  522. final FileObject projdirFO = scratch.createFolder("projectwithconfigs");
  523. J2SEProjectGenerator.createProject(FileUtil.toFile(projdirFO), "projectwithconfigs", null, null, null, false);
  524. final J2SEProject proj = (J2SEProject) ProjectManager.getDefault().findProject(projdirFO);
  525. final ProjectConfigurationProvider<?> pcp = proj.getLookup().lookup(ProjectConfigurationProvider.class);
  526. ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void>() {
  527. @SuppressWarnings("unchecked") // due to ProjectConfiguration type
  528. public Void run() throws Exception {
  529. Properties props = new Properties();
  530. props.setProperty("main.class", "foo.Bar");
  531. props.setProperty("$target.build", "");
  532. props.setProperty("$target.run", "runtarget");
  533. props.setProperty("$target.debug", "debugtarget1 debugtarget2");
  534. write(props, projdirFO, "nbproject/configs/test.properties");
  535. props = new Properties();
  536. write(props, projdirFO, "nbproject/private/configs/test.properties");
  537. props = new Properties();
  538. props.setProperty("config", "test");
  539. write(props, projdirFO, "nbproject/private/config.properties");
  540. ProjectManager.getDefault().saveProject(proj);
  541. return null;
  542. }
  543. });
  544. ProjectManager.mutex().writeAccess(new Mutex.ExceptionAction<Void> () {
  545. public Void run () throws Exception {
  546. setConfig1(pcp);
  547. return null;
  548. }
  549. <T extends ProjectConfiguration> void setConfig1(ProjectConfigurationProvider<T> pcp) throws Exception {
  550. pcp.setActiveConfiguration(new ArrayList<T>(pcp.getConfigurations()).get(1));
  551. }
  552. });
  553. J2SEActionProvider ap = new J2SEActionProvider(proj, proj.getUpdateHelper());
  554. ap.startFSListener();
  555. PropertyEvaluator eval = proj.evaluator();
  556. String config = eval.getProperty("config");
  557. assertEquals("Name of active config from Evaluator is test", "test", config);
  558. FileObject src = projdirFO.getFileObject("src");
  559. FileObject pkg = src.createFolder("foo");
  560. FileObject file = pkg.createData("Bar.java");
  561. DataObject srcDO = DataObject.find(file);
  562. Lookup context = Lookups.fixed( srcDO );
  563. MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
  564. try {
  565. // test of targets defined in config
  566. String[] targets = ap.getTargetNames(ActionProvider.COMMAND_DEBUG, context, new Properties());
  567. assertEquals("There must be two Debug targets in test config", 2, targets.length);
  568. assertEquals("First Debug target name is debugtarget1", "debugtarget1", targets[0]);
  569. assertEquals("Second Debug target name is debugtarget2", "debugtarget2", targets[1]);
  570. targets = ap.getTargetNames(ActionProvider.COMMAND_BUILD, context, new Properties());
  571. assertEquals("There must be 1 Build target in test config", 1, targets.length);
  572. // target is not in fact from the config, config contains empty string
  573. assertEquals("Build target name is jar", "jar", targets[0]);
  574. targets = ap.getTargetNames(ActionProvider.COMMAND_RUN, context, new Properties());
  575. assertEquals("There must be 1 Run target in test config", 1, targets.length);
  576. assertEquals("Run target name is runtarget", "runtarget", targets[0]);
  577. // test of targets not in config
  578. targets = ap.getTargetNames(ActionProvider.COMMAND_CLEAN, context, new Properties());
  579. assertEquals("There must be 1 Clean target", 1, targets.length);
  580. assertEquals("Clean target name is runtarget", "clean", targets[0]);
  581. } finally {
  582. MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
  583. }
  584. }
  585. public void testIsActionEnabled() throws Exception {
  586. implTestIsActionEnabled(false);
  587. implTestIsActionEnabled(true);
  588. }
  589. public void testIsActionEnabledMultiRoot() throws Exception {
  590. FileObject newRoot = SourceRootsTest.addSourceRoot(helper, projdir, "src.other.dir","other");
  591. implTestIsActionEnabled(false);
  592. Lookup context = Lookups.fixed(sourcePkg1, DataFolder.findFolder(newRoot));
  593. boolean enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  594. assertFalse ("COMMAND_COMPILE_SINGLE must be disabled on multiple src packages from different roots", enabled);
  595. }
  596. private void implTestIsActionEnabled (boolean cos) throws Exception {
  597. Lookup context;
  598. boolean enabled;
  599. //First test actions when COS disabled
  600. EditableProperties ep = helper.getProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH);
  601. ep.put(ProjectProperties.COMPILE_ON_SAVE, cos ? "true" : "false");
  602. helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
  603. context = Lookups.fixed(someSource1);
  604. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  605. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one source", enabled);
  606. context = Lookups.fixed(someSource1, someSource2);
  607. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  608. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple sources", enabled);
  609. context = Lookups.fixed(someTest1, someTest2);
  610. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  611. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple tests", enabled);
  612. context = Lookups.fixed(someSource1, someTest1);
  613. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  614. assertFalse("COMMAND_COMPILE_SINGLE must be disabled on mixed files", enabled);
  615. context = Lookups.fixed(sourcePkg1);
  616. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  617. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one src package", enabled);
  618. context = Lookups.fixed(sourcePkg1, sourcePkg2);
  619. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  620. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple src packages", enabled);
  621. context = Lookups.fixed(sourcePkg1, someSource1);
  622. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  623. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed src packages/files", enabled);
  624. context = Lookups.fixed(testPkg1);
  625. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  626. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one test package", enabled);
  627. context = Lookups.fixed(testPkg1, testPkg2);
  628. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  629. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple test packages", enabled);
  630. context = Lookups.fixed(testPkg1, someTest1);
  631. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  632. assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed test packages/files", enabled);
  633. context = Lookups.fixed(DataFolder.findFolder(projdir));
  634. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  635. assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non source folder", enabled);
  636. context = Lookups.fixed(sourcePkg1, testPkg1);
  637. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
  638. assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non mixed packages", enabled);
  639. // test COMMAND_TEST_SINGLE
  640. context = Lookups.fixed(someTest1);
  641. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  642. assertTrue("COMMAND_TEST_SINGLE must be enabled on one test", enabled);
  643. context = Lookups.fixed(someTest1, someTest2);
  644. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  645. assertFalse("COMMAND_TEST_SINGLE must be disabled on multiple tests", enabled);
  646. context = Lookups.fixed(someSource3);
  647. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  648. assertFalse("COMMAND_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
  649. context = Lookups.fixed(someSource2);
  650. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  651. assertTrue("COMMAND_TEST_SINGLE must be enabled on source file which has associated test", enabled);
  652. context = Lookups.fixed(someSource1, someSource2);
  653. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  654. assertFalse("COMMAND_TEST_SINGLE must be enabled on source files which has associated tests", enabled);
  655. context = Lookups.fixed(someSource1, someSource3);
  656. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  657. assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files when some files do not have tests", enabled);
  658. context = Lookups.fixed(someSource1, someTest1);
  659. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
  660. assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files and test files", enabled);
  661. // test COMMAND_DEBUG_TEST_SINGLE
  662. context = Lookups.fixed(someTest1);
  663. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
  664. assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on test files", enabled);
  665. context = Lookups.fixed(someTest1, someTest2);
  666. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
  667. assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple tests", enabled);
  668. context = Lookups.fixed(someSource3);
  669. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
  670. assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
  671. context = Lookups.fixed(someSource2);
  672. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
  673. assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on source file which has associated test", enabled);
  674. context = Lookups.fixed(someSource1, someSource2);
  675. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
  676. assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple source files", enabled);
  677. // test COMMAND_DEBUG_FIX
  678. context = Lookups.fixed(someTest1);
  679. enabled = actionProvider.isActionEnabled(JavaProjectConstants.COMMAND_DEBUG_FIX, context);
  680. assertTrue("COMMAND_DEBUG_FIX must be enabled on one test", enabled);
  681. context = Lookups.fixed(someTest1, someTest2);
  682. enabled = actionProvider.isActionEnabled(JavaProjectConstants.COMMAND_DEBUG_FIX, context);
  683. assertFalse("COMMAND_DEBUG_FIX must be disabled on multiple tests", enabled);
  684. context = Lookups.fixed(someSource1);
  685. enabled = actionProvider.isActionEnabled(JavaProjectConstants.COMMAND_DEBUG_FIX, context);
  686. assertTrue("COMMAND_DEBUG_FIX must be enabled on one source", enabled);
  687. context = Lookups.fixed(someSource1, someSource2);
  688. enabled = actionProvider.isActionEnabled(JavaProjectConstants.COMMAND_DEBUG_FIX, context);
  689. assertFalse("COMMAND_DEBUG_FIX must be disabled on multiple source files", enabled);
  690. context = Lookups.fixed(someSource1, someTest1);
  691. enabled = actionProvider.isActionEnabled(JavaProjectConstants.COMMAND_DEBUG_FIX, context);
  692. assertFalse("COMMAND_DEBUG_FIX must be disabled on multiple mixed files", enabled);
  693. // test COMMAND_RUN_SINGLE
  694. context = Lookups.fixed(someSource1);
  695. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
  696. assertTrue("COMMAND_RUN_SINGLE must be enabled on one source", enabled);
  697. context = Lookups.fixed(someSource1, someSource2);
  698. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
  699. assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple sources", enabled);
  700. context = Lookups.fixed(someTest1);
  701. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
  702. assertTrue("COMMAND_RUN_SINGLE must be enabled on test file", enabled);
  703. context = Lookups.fixed(someTest1, someTest2);
  704. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
  705. assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple test files", enabled);
  706. context = Lookups.fixed(someSource1, someTest1);
  707. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
  708. assertFalse("COMMAND_RUN_SINGLE must be disabled on mixed multiple test files", enabled);
  709. // test COMMAND_DEBUG_SINGLE
  710. context = Lookups.fixed(someSource1);
  711. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
  712. assertTrue("COMMAND_DEBUG_SINGLE must be enabled on one source", enabled);
  713. context = Lookups.fixed(someSource1, someSource2);
  714. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
  715. assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple sources", enabled);
  716. context = Lookups.fixed(someTest1);
  717. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
  718. assertTrue("COMMAND_DEBUG_SINGLE must be enabled on test file", enabled);
  719. context = Lookups.fixed(someTest1, someTest2);
  720. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
  721. assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple test files", enabled);
  722. context = Lookups.fixed(someSource1, someTest1);
  723. enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
  724. assertFalse("COMMAND_DEBUG_SINGLE must be disabled on mixed multiple test files", enabled);
  725. }
  726. public void testBuildWithDirtyList() throws Exception { // #104508
  727. EditableProperties ep = helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
  728. ep.put(ProjectProperties.TRACK_FILE_CHANGES, "true");
  729. helper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
  730. Properties p = new Properties();
  731. assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  732. assertEquals("{}", p.toString());
  733. TestFileUtils.touch(someSource1.getPrimaryFile(), null);
  734. assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  735. assertEquals("{}", p.toString());
  736. ep = helper.getProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH);
  737. ep.put(ProjectProperties.DO_JAR, "false");
  738. helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
  739. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  740. assertEquals("{}", p.toString());
  741. ep.put(ProjectProperties.DO_DEPEND, "false");
  742. helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
  743. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  744. assertEquals("{}", p.toString());
  745. TestFileUtils.touch(someSource1.getPrimaryFile(), null);
  746. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  747. assertEquals("{includes=foo/Bar.java}", p.toString());
  748. p.clear();
  749. TestFileUtils.touch(someSource2.getPrimaryFile(), null);
  750. TestFileUtils.touch(someSource1.getPrimaryFile(), null);
  751. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  752. assertEquals("{includes=foo/Bar.java,foo/Main.java}", p.toString());
  753. p.clear();
  754. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  755. assertEquals("{}", p.toString());
  756. TestFileUtils.touch(someTest1.getPrimaryFile(), null);
  757. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  758. assertEquals("{}", p.toString());
  759. sources.createData("x.properties");
  760. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  761. assertEquals("{includes=x.properties}", p.toString());
  762. p.clear();
  763. someSource1.setModified(true);
  764. assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
  765. asser