Bug 44093 - Tests for external tool builder migratio
diff --git a/ant/org.eclipse.ant.tests.ui/External Tools/org/eclipse/ant/tests/ui/externaltools/MigrationTests.java b/ant/org.eclipse.ant.tests.ui/External Tools/org/eclipse/ant/tests/ui/externaltools/MigrationTests.java
index c710e4e6..3bdfb6a 100644
--- a/ant/org.eclipse.ant.tests.ui/External Tools/org/eclipse/ant/tests/ui/externaltools/MigrationTests.java
+++ b/ant/org.eclipse.ant.tests.ui/External Tools/org/eclipse/ant/tests/ui/externaltools/MigrationTests.java
@@ -38,7 +38,9 @@
 	 */
 	public void test20AntMigration() throws CoreException {
 		Map argumentMap= get20AntArgumentMap();
-		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFrom20ArgumentMap(argumentMap);
+		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFromArgumentMap(argumentMap);
+		assertNotNull("Migration failed", config);
+		
 		assertEquals("Wrong configuration type", IAntLaunchConfigurationConstants.ID_ANT_BUILDER_LAUNCH_CONFIGURATION_TYPE, config.getType().getIdentifier());
 		assertEquals("ant tool", config.getName());
 		assertEquals("location", config.getAttribute(IExternalToolConstants.ATTR_LOCATION, ""));
@@ -63,6 +65,7 @@
 	 */
 	private Map get20AntArgumentMap() {
 		HashMap arguments= new HashMap();
+		arguments.put(ExternalToolMigration.TAG_VERSION, "2.0");
 		arguments.put(ExternalToolMigration.TAG_TOOL_TYPE, "org.eclipse.ui.externaltools.type.ant");
 		arguments.put(ExternalToolMigration.TAG_TOOL_NAME, "ant tool");
 		arguments.put(ExternalToolMigration.TAG_TOOL_LOCATION, "location");
@@ -83,7 +86,7 @@
 	 */
 	public void test20ProgramMigration() throws CoreException {
 		Map argumentMap= get20ProgramArgumentMap();
-		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFrom20ArgumentMap(argumentMap);
+		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFromArgumentMap(argumentMap);
 		assertEquals("Wrong configuration type", IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE, config.getType().getIdentifier());
 		assertEquals("program tool", config.getName());
 		assertEquals("location", config.getAttribute(IExternalToolConstants.ATTR_LOCATION, ""));
@@ -103,6 +106,7 @@
 	 */
 	private Map get20ProgramArgumentMap() {
 		HashMap arguments= new HashMap();
+		arguments.put(ExternalToolMigration.TAG_VERSION, "2.0");
 		arguments.put(ExternalToolMigration.TAG_TOOL_TYPE, "org.eclipse.ui.externaltools.type.program");
 		arguments.put(ExternalToolMigration.TAG_TOOL_NAME, "program tool");
 		arguments.put(ExternalToolMigration.TAG_TOOL_LOCATION, "location");
@@ -115,17 +119,108 @@
 		return arguments;
 	}
 	
-	public void test21Migration() {
+	/**
+	 * Tests migration of arguments from an Eclipse 2.1 Ant buildfile
+	 * configuration to a current launch configuration.
+	 * 
+	 * @throws CoreException
+	 */
+	public void test21AntMigration() throws CoreException {
+		Map argumentMap= get21AntArgumentMap();
+		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFromArgumentMap(argumentMap);
+		assertNotNull("Migration failed", config);
+		
+		assertEquals("Wrong config type", IAntLaunchConfigurationConstants.ID_ANT_BUILDER_LAUNCH_CONFIGURATION_TYPE, config.getType().getIdentifier());
+		assertEquals("ant config", config.getName());
+		assertEquals("location", config.getAttribute(IExternalToolConstants.ATTR_LOCATION, ""));
+		assertEquals("working directory", config.getAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, ""));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, false));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, false));
+		assertEquals(true, config.getAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_PROMPT_FOR_ARGUMENTS, false));
+		assertEquals("refresh scope", config.getAttribute(RefreshTab.ATTR_REFRESH_SCOPE, ""));
+		assertEquals(true, config.getAttribute(RefreshTab.ATTR_REFRESH_RECURSIVE, false));
+		assertEquals("build kinds", config.getAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, ""));
+		assertEquals("arg1 arg2", config.getAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, ""));
+		String[] targets= AntUtil.getTargetsFromConfig(config);
+		assertEquals("Wrong number of targets", 2, targets.length);
+		assertEquals("target1", targets[0]);
+		assertEquals("target2", targets[1]);
+	}
+	
+	/**
+	 * Returns a map of arguments for executing an Ant
+	 * buildfile using Eclipse 2.1 arguments.
+	 * 
+	 * @return a map of 2.1 arguments for an Ant buildfile
+	 */
+	private Map get21AntArgumentMap() {
+		HashMap arguments= new HashMap();
+		arguments.put(ExternalToolMigration.TAG_VERSION, "2.1");
+		arguments.put(ExternalToolMigration.TAG_NAME, "ant config");
+		arguments.put(ExternalToolMigration.TAG_TYPE, ExternalToolMigration.TOOL_TYPE_ANT_BUILD);
+		arguments.put(ExternalToolMigration.TAG_LOCATION, "location");
+		arguments.put(ExternalToolMigration.TAG_WORK_DIR, "working directory");
+		arguments.put(ExternalToolMigration.TAG_CAPTURE_OUTPUT, "true");
+		arguments.put(ExternalToolMigration.TAG_SHOW_CONSOLE, "true");
+		arguments.put(ExternalToolMigration.TAG_SHOW_CONSOLE, "true");
+		arguments.put(ExternalToolMigration.TAG_RUN_BKGRND, "true");
+		arguments.put(ExternalToolMigration.TAG_PROMPT_ARGS, "true");
+		arguments.put(ExternalToolMigration.TAG_REFRESH_SCOPE, "refresh scope");
+		arguments.put(ExternalToolMigration.TAG_REFRESH_RECURSIVE, "true");
+		arguments.put(ExternalToolMigration.TAG_RUN_BUILD_KINDS, "build kinds");
+		arguments.put(ExternalToolMigration.TAG_ARGS, "arg1 arg2");
+		arguments.put(ExternalToolMigration.TAG_EXTRA_ATTR, ExternalToolMigration.RUN_TARGETS_ATTRIBUTE + "=target1,target2");
+		return arguments;
+	}
+	
+	/**
+	 * Tests migration of arguments from an Eclipse 2.1 program
+	 * configuration to a current launch configuration.
+	 * 
+	 * @throws CoreException
+	 */
+	public void test21ProgramMigration() throws CoreException {
+		Map argumentMap= get21ProgramArgumentMap();
+		ILaunchConfigurationWorkingCopy config = ExternalToolMigration.configFromArgumentMap(argumentMap);
+		assertNotNull("Migration failed", config);
+		
+		assertEquals("Wrong config type", IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE, config.getType().getIdentifier());
+		assertEquals("program config", config.getName());
+		assertEquals("location", config.getAttribute(IExternalToolConstants.ATTR_LOCATION, ""));
+		assertEquals("working directory", config.getAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, ""));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_CAPTURE_OUTPUT, false));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_SHOW_CONSOLE, false));
+		assertEquals(true, config.getAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false));
+		assertEquals(true, config.getAttribute(IExternalToolConstants.ATTR_PROMPT_FOR_ARGUMENTS, false));
+		assertEquals("refresh scope", config.getAttribute(RefreshTab.ATTR_REFRESH_SCOPE, ""));
+		assertEquals(true, config.getAttribute(RefreshTab.ATTR_REFRESH_RECURSIVE, false));
+		assertEquals("build kinds", config.getAttribute(IExternalToolConstants.ATTR_RUN_BUILD_KINDS, ""));
+		assertEquals("arg1 arg2", config.getAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, ""));
 	}
 	
 	/**
 	 * Returns a map of arguments for executing a program
-	 * using Eclipse 2.0 arguments.
+	 * buildfile using Eclipse 2.1 arguments.
 	 * 
-	 * @return a map of 2.0 arguments for a program
+	 * @return a map of 2.1 arguments for a program
 	 */
 	private Map get21ProgramArgumentMap() {
 		HashMap arguments= new HashMap();
+		arguments.put(ExternalToolMigration.TAG_VERSION, "2.1");
+		arguments.put(ExternalToolMigration.TAG_NAME, "program config");
+		arguments.put(ExternalToolMigration.TAG_TYPE, IExternalToolConstants.TOOL_TYPE_PROGRAM);
+		arguments.put(ExternalToolMigration.TAG_LOCATION, "location");
+		arguments.put(ExternalToolMigration.TAG_WORK_DIR, "working directory");
+		arguments.put(ExternalToolMigration.TAG_CAPTURE_OUTPUT, "true");
+		arguments.put(ExternalToolMigration.TAG_SHOW_CONSOLE, "true");
+		arguments.put(ExternalToolMigration.TAG_SHOW_CONSOLE, "true");
+		arguments.put(ExternalToolMigration.TAG_RUN_BKGRND, "true");
+		arguments.put(ExternalToolMigration.TAG_PROMPT_ARGS, "true");
+		arguments.put(ExternalToolMigration.TAG_REFRESH_SCOPE, "refresh scope");
+		arguments.put(ExternalToolMigration.TAG_REFRESH_RECURSIVE, "true");
+		arguments.put(ExternalToolMigration.TAG_RUN_BUILD_KINDS, "build kinds");
+		arguments.put(ExternalToolMigration.TAG_ARGS, "arg1 arg2");
 		return arguments;
 	}