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;
 	}
 	
