blob: 6b2ea6be455a03e41dd7af8fe642b8830d6c7310 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ant.tests.ui;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.ant.internal.ui.AntUtil;
import org.eclipse.ant.internal.ui.model.AntTargetNode;
import org.eclipse.ant.launching.IAntLaunchConstants;
import org.eclipse.ant.tests.ui.testplugin.AbstractAntUITest;
import org.eclipse.core.externaltools.internal.IExternalToolConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
public class AntUtilTests extends AbstractAntUITest {
public AntUtilTests(String name) {
super(name);
}
public void testGetTargetsLaunchConfiguration() throws CoreException {
String buildFileName = "echoing"; //$NON-NLS-1$
File buildFile = getBuildFile(buildFileName + ".xml"); //$NON-NLS-1$
String arguments = null;
Map<String, String> properties = null;
String propertyFiles = null;
AntTargetNode[] targets = AntUtil.getTargets(buildFile.getAbsolutePath(), getLaunchConfiguration(buildFileName, arguments, properties, propertyFiles));
assertTrue(targets != null);
assertTrue("Incorrect number of targets retrieved; should be 4 was: " + targets.length, targets.length == 4); //$NON-NLS-1$
assertContains("echo3", targets); //$NON-NLS-1$
}
public void testGetTargetsLaunchConfigurationMinusD() throws CoreException {
String buildFileName = "importRequiringUserProp"; //$NON-NLS-1$
File buildFile = getBuildFile(buildFileName + ".xml"); //$NON-NLS-1$
String arguments = "-DimportFileName=toBeImported.xml"; //$NON-NLS-1$
Map<String, String> properties = null;
String propertyFiles = null;
AntTargetNode[] targets = AntUtil.getTargets(buildFile.getAbsolutePath(), getLaunchConfiguration(buildFileName, arguments, properties, propertyFiles));
assertTrue(targets != null);
assertTrue("Incorrect number of targets retrieved; should be 3 was: " + targets.length, targets.length == 3); //$NON-NLS-1$
assertContains("import-default", targets); //$NON-NLS-1$
}
public void testGetTargetsLaunchConfigurationMinusDAndProperty() throws CoreException {
String buildFileName = "importRequiringUserProp"; //$NON-NLS-1$
File buildFile = getBuildFile(buildFileName + ".xml"); //$NON-NLS-1$
String arguments = "-DimportFileName=toBeImported.xml"; //$NON-NLS-1$
// arguments should win
Map<String, String> properties = new HashMap<>();
properties.put("importFileName", "notToBeImported.xml"); //$NON-NLS-1$ //$NON-NLS-2$
String propertyFiles = null;
AntTargetNode[] targets = AntUtil.getTargets(buildFile.getAbsolutePath(), getLaunchConfiguration(buildFileName, arguments, properties, propertyFiles));
assertTrue(targets != null);
assertTrue("Incorrect number of targets retrieved; should be 3 was: " + targets.length, targets.length == 3); //$NON-NLS-1$
assertContains("import-default", targets); //$NON-NLS-1$
}
public void testGetTargetsLaunchConfigurationProperty() throws CoreException {
String buildFileName = "importRequiringUserProp"; //$NON-NLS-1$
File buildFile = getBuildFile(buildFileName + ".xml"); //$NON-NLS-1$
String arguments = null;
Map<String, String> properties = new HashMap<>();
properties.put("importFileName", "toBeImported.xml"); //$NON-NLS-1$ //$NON-NLS-2$
String propertyFiles = null;
AntTargetNode[] targets = AntUtil.getTargets(buildFile.getAbsolutePath(), getLaunchConfiguration(buildFileName, arguments, properties, propertyFiles));
assertTrue(targets != null);
assertTrue("Incorrect number of targets retrieved; should be 3 was: " + targets.length, targets.length == 3); //$NON-NLS-1$
assertContains("import-default", targets); //$NON-NLS-1$
}
public void testGetTargetsLaunchConfigurationPropertyFile() throws CoreException {
String buildFileName = "importRequiringUserProp"; //$NON-NLS-1$
File buildFile = getBuildFile(buildFileName + ".xml"); //$NON-NLS-1$
String arguments = null;
Map<String, String> properties = null;
String propertyFiles = "buildtest1.properties"; //$NON-NLS-1$
AntTargetNode[] targets = AntUtil.getTargets(buildFile.getAbsolutePath(), getLaunchConfiguration(buildFileName, arguments, properties, propertyFiles));
assertTrue(targets != null);
assertTrue("Incorrect number of targets retrieved; should be 3 was: " + targets.length, targets.length == 3); //$NON-NLS-1$
assertContains("import-default", targets); //$NON-NLS-1$
}
protected ILaunchConfiguration getLaunchConfiguration(String buildFileName, String arguments, Map<String, String> properties, String propertyFiles) throws CoreException {
ILaunchConfiguration config = getLaunchConfiguration(buildFileName);
assertNotNull("Could not locate launch configuration for " + buildFileName, config); //$NON-NLS-1$
ILaunchConfigurationWorkingCopy copy = config.getWorkingCopy();
if (arguments != null) {
copy.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, arguments);
}
if (properties != null) {
copy.setAttribute(IAntLaunchConstants.ATTR_ANT_PROPERTIES, properties);
}
if (propertyFiles != null) {
copy.setAttribute(IAntLaunchConstants.ATTR_ANT_PROPERTY_FILES, propertyFiles);
}
return copy;
}
/**
* Asserts that <code>displayString</code> is in one of the completion proposals.
*/
private void assertContains(String targetName, AntTargetNode[] targets) {
boolean found = false;
for (int i = 0; i < targets.length; i++) {
AntTargetNode target = targets[i];
String foundName = target.getTargetName();
if (targetName.equals(foundName)) {
found = true;
break;
}
}
assertEquals("Did not find target: " + targetName, true, found); //$NON-NLS-1$
}
public void testIsKnownAntFileName() throws Exception {
assertTrue("The file name 'foo.xml' is a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.xml")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("The file name 'foo.ant' is a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.ant")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("The file name 'foo.ent' is a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.ent")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("The file name 'foo.macrodef' is a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.macrodef")); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse("The file name 'foo.xsi' is not a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.xsi")); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse("The file name 'foo.txt' is a valid name", AntUtil.isKnownAntFileName("a/b/c/d/foo.txt")); //$NON-NLS-1$ //$NON-NLS-2$
}
}