blob: c3ba11a23c94d21aab57fc0bea0dd7ff247b42d6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2017 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.pde.api.tools.util.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.osgi.service.resolver.ResolverError;
import org.eclipse.pde.api.tools.internal.provisional.IApiDescription;
import org.eclipse.pde.api.tools.internal.provisional.IApiFilterStore;
import org.eclipse.pde.api.tools.internal.provisional.IRequiredComponentDescription;
import org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor;
import org.eclipse.pde.api.tools.internal.provisional.model.ApiTypeContainerVisitor;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiBaseline;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiElement;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiTypeContainer;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiTypeRoot;
import org.eclipse.pde.api.tools.internal.search.IReferenceCollection;
import org.eclipse.pde.api.tools.internal.util.FilteredElements;
import org.eclipse.pde.api.tools.internal.util.SinceTagVersion;
import org.eclipse.pde.api.tools.internal.util.Util;
import org.eclipse.pde.api.tools.model.tests.TestSuiteHelper;
import org.junit.Test;
/**
* Tests the methods in our utility class: {@link Util}
*
* @since 1.0.0
*/
public class UtilTests {
private static final IPath SRC_LOC = TestSuiteHelper.getPluginDirectoryPath().append("test_source"); //$NON-NLS-1$
static final IPath SRC_LOC_SEARCH = TestSuiteHelper.getPluginDirectoryPath().append("test-search"); //$NON-NLS-1$
/**
* Tests that passing in <code>null</code> to the getAllFiles(..) method
* will return all of the files in that directory
*/
public void getAllFilesNullFilter() {
File root = new File(SRC_LOC.toOSString());
assertTrue("The test source directory must exist", root.exists()); //$NON-NLS-1$
assertTrue("The source location should be a directory", root.isDirectory()); //$NON-NLS-1$
File[] files = Util.getAllFiles(root, null);
assertTrue("There should be more than one file in the test source directory", files.length > 1); //$NON-NLS-1$
}
/**
* Tests that passing an illegal argument when creating a new {@link SinceTagVersion} throws an exception
*/
@Test(expected = IllegalArgumentException.class)
public void testIllegalArgSinceTagVersion() {
new SinceTagVersion(null);
}
/**
* Tests that a filter passed to getALlFiles(..) returns only the files
* it is supposed to. In this test only files that end with <code>TestClass1.java</code>
* pass the filter (there is only one).
*/
public void getAllFilesSpecificFilter() {
File root = new File(SRC_LOC.toOSString());
assertTrue("The test source directory must exist", root.exists()); //$NON-NLS-1$
assertTrue("The source location should be a directory", root.isDirectory()); //$NON-NLS-1$
File[] files = Util.getAllFiles(root, pathname -> pathname.getAbsolutePath().endsWith("TestClass1.java")); //$NON-NLS-1$
assertEquals("There should be only one file in the test source directory named 'TestClass1.java'", files.length, //$NON-NLS-1$
1);
}
/**
* Tests that the isClassFile method works as expected when passed a valid name (*.class)
*/
@Test
public void testIsClassfile() {
assertTrue("Test.class is a class file", Util.isClassFile("Test.class")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Tests that the isClassFile method works as expected when passed an invalid name (not *.class)
*/
@Test
public void testIsNotClassfile() {
assertFalse("Test.notclass is not a classfile", Util.isClassFile("Test.notclass")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Tests that the isArchive method works as expected when passed a valid archive
* name (*.zip or *.jar)
*/
@Test
public void testIsArchive() {
assertTrue("Test.zip is an archive", Util.isArchive("Test.zip")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.jar is an archive", Util.isArchive("Test.jar")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.tar.gz")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isTGZFile("Test.tgz")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Tests that the isTGZFile method works as expected
*/
@Test
public void testIsTar() {
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.tar.gz")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.TAR.GZ")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.Tar.Gz")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.tar.GZ")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isTGZFile("Test.TAR.gz")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isTGZFile("Test.tgz")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isTGZFile("Test.TGZ")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isTGZFile("Test.Tgz")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Tests that the isZipJarFile method works as expected
*/
@Test
public void testIsJar() {
assertTrue("Test.tar.gz is an archive", Util.isZipJarFile("Test.zip")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isZipJarFile("Test.ZIP")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tar.gz is an archive", Util.isZipJarFile("Test.Zip")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isZipJarFile("Test.jar")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isZipJarFile("Test.JAR")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Test.tgz is an archive", Util.isZipJarFile("Test.Jar")); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Tests that the isArchive method works as expected when passed an invalid archive
* name (*.notzip)
*/
@Test
public void testisNotArchive() {
assertFalse("Test.notzip is not an archive", Util.isArchive("Test.notzip")); //$NON-NLS-1$ //$NON-NLS-2$
}
/*
* Test org.eclipse.pde.api.tools.internal.util.Util.getFragmentNumber(String)
* org.eclipse.pde.api.tools.internal.util.Util.isGreatherVersion(String, String)
*/
@Test
public void testGetFragmentNumber() {
assertEquals("wrong value", 2, Util.getFragmentNumber("org.eclipse.core.filesystem 1.0")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong value", 2, Util.getFragmentNumber("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong value", 3, Util.getFragmentNumber("1.0.0")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong value", 1, Util.getFragmentNumber("1")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong value", 4, Util.getFragmentNumber("org.test 1.0.0.0")); //$NON-NLS-1$ //$NON-NLS-2$
try {
Util.getFragmentNumber((String) null);
fail();
} catch (IllegalArgumentException e) {
// ignore
}
assertEquals("wrong value", -1, Util.getFragmentNumber("org.test ")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong value", -1, Util.getFragmentNumber("org.test")); //$NON-NLS-1$ //$NON-NLS-2$
}
/*
* Test org.eclipse.pde.api.tools.internal.util.Util.isGreatherVersion(String, String)
*/
@Test
public void testIsGreatherVersion() {
assertEquals("wrong value", 1, 1); //$NON-NLS-1$
}
@Test
public void testSinceTagVersion() {
try {
new SinceTagVersion(null);
fail("Should not reach there"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected exception
}
SinceTagVersion sinceTagVersion = new SinceTagVersion(" org.eclipse.jdt.core 3.4. test plugin"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", " org.eclipse.jdt.core ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong postfix string", " test plugin", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("org.eclipse.jdt.core 3.4.0."); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", "org.eclipse.jdt.core ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("org.eclipse.jdt.core 3.4.0.qualifier"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.qualifier", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", "org.eclipse.jdt.core ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("org.eclipse.jdt.core 3.4.0.qualifier postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.qualifier", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", "org.eclipse.jdt.core ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4.0"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3.4.0."); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3.4."); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3."); //$NON-NLS-1$
assertEquals("wrong version string", "3.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3"); //$NON-NLS-1$
assertEquals("wrong version string", "3", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3.4.0.qualifier"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.qualifier", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertNull("wrong postfix string", sinceTagVersion.postfixString()); //$NON-NLS-1$
sinceTagVersion = new SinceTagVersion("3.4.0.qualifier postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.qualifier", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4.0. postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4.0 postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.0", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4. postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4 postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3. postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3.", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3 postfix"); //$NON-NLS-1$
assertEquals("wrong version string", "3", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " postfix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("prefix"); //$NON-NLS-1$
assertNull("wrong version string", sinceTagVersion.getVersionString()); //$NON-NLS-1$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", "prefix", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("test 3.4 protected (was added in 2.1 as private class)"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", "test ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong postfix string", " protected (was added in 2.1 as private class)", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4 protected (was added in 2.1 as private class)"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", " protected (was added in 2.1 as private class)", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("abc1.0"); //$NON-NLS-1$
assertNull("Wrong version string", sinceTagVersion.getVersionString()); //$NON-NLS-1$
assertNull("Wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("Wrong postfix string", "abc1.0", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("3.4, was added in 3.1 as private method"); //$NON-NLS-1$
assertEquals("wrong version string", "3.4", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertNull("wrong prefix string", sinceTagVersion.prefixString()); //$NON-NLS-1$
assertEquals("wrong postfix string", ", was added in 3.1 as private method", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
sinceTagVersion = new SinceTagVersion("abc1.0, was added in 3.1 as private method"); //$NON-NLS-1$
assertEquals("wrong version string", "3.1", sinceTagVersion.getVersionString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong prefix string", "abc1.0, was added in ", sinceTagVersion.prefixString()); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("wrong postfix string", " as private method", sinceTagVersion.postfixString()); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testRegexExcludeList() {
String line = "R:org\\.eclipse\\.swt[a-zA-Z_0-9\\.]*"; //$NON-NLS-1$
class LocalApiComponent implements IApiComponent {
String symbolicName;
public LocalApiComponent(String symbolicName) {
this.symbolicName = symbolicName;
}
@Override
public String[] getPackageNames() throws CoreException {
return null;
}
@Override
public IApiTypeRoot findTypeRoot(String qualifiedName) throws CoreException {
return null;
}
@Override
public IApiTypeRoot findTypeRoot(String qualifiedName, String id) throws CoreException {
return null;
}
@Override
public void accept(ApiTypeContainerVisitor visitor) throws CoreException {
}
@Override
public void close() throws CoreException {
}
@Override
public int getContainerType() {
return 0;
}
@Override
public String getName() {
return null;
}
@Override
public int getType() {
return 0;
}
@Override
public IApiElement getParent() {
return null;
}
@Override
public IApiElement getAncestor(int ancestorType) {
return null;
}
@Override
public IApiComponent getApiComponent() {
return null;
}
@Override
public String getSymbolicName() {
return this.symbolicName;
}
@Override
public IApiDescription getApiDescription() throws CoreException {
return null;
}
@Override
public boolean hasApiDescription() {
return false;
}
@Override
public String getVersion() {
return null;
}
@Override
public String[] getExecutionEnvironments() throws CoreException {
return null;
}
@Override
public IApiTypeContainer[] getApiTypeContainers() throws CoreException {
return null;
}
@Override
public IApiTypeContainer[] getApiTypeContainers(String id) throws CoreException {
return null;
}
@Override
public IRequiredComponentDescription[] getRequiredComponents() throws CoreException {
return null;
}
@Override
public String getLocation() {
return null;
}
@Override
public boolean isSystemComponent() {
return false;
}
@Override
public boolean isSourceComponent() throws CoreException {
return false;
}
@Override
public void dispose() {
}
@Override
public IApiBaseline getBaseline() throws CoreException {
return null;
}
@Override
public IApiFilterStore getFilterStore() throws CoreException {
return null;
}
@Override
public boolean isFragment() throws CoreException {
return false;
}
@Override
public IApiComponent getHost() throws CoreException {
return null;
}
@Override
public boolean hasFragments() throws CoreException {
return false;
}
@Override
public String[] getLowestEEs() throws CoreException {
return null;
}
@Override
public ResolverError[] getErrors() throws CoreException {
return null;
}
@Override
public IElementDescriptor getHandle() {
return null;
}
@Override
public IReferenceCollection getExternalDependencies() {
return null;
}
}
List<IApiComponent> allComponents = new ArrayList<>();
String[] componentNames = new String[] {
"org.eclipse.swt", //$NON-NLS-1$
"org.eclipse.equinox.simpleconfigurator.manipulator", //$NON-NLS-1$
"org.eclipse.team.ui", //$NON-NLS-1$
"org.eclipse.ecf", //$NON-NLS-1$
"org.eclipse.core.commands", //$NON-NLS-1$
"org.eclipse.equinox.util", //$NON-NLS-1$
"org.eclipse.equinox.p2.jarprocessor", //$NON-NLS-1$
"org.eclipse.equinox.security", //$NON-NLS-1$
"org.eclipse.sdk", //$NON-NLS-1$
"org.eclipse.help.ui", //$NON-NLS-1$
"org.eclipse.jdt.doc.isv", //$NON-NLS-1$
"org.eclipse.equinox.p2.core", //$NON-NLS-1$
"org.eclipse.debug.ui", //$NON-NLS-1$
"org.eclipse.ui.navigator", //$NON-NLS-1$
"javax.servlet.jsp", //$NON-NLS-1$
"org.eclipse.ui.workbench", //$NON-NLS-1$
"org.eclipse.equinox.event", //$NON-NLS-1$
"org.eclipse.jdt.core", //$NON-NLS-1$
"JavaSE-1.7", //$NON-NLS-1$
"org.apache.commons.codec", //$NON-NLS-1$
"org.apache.commons.logging", //$NON-NLS-1$
"org.objectweb.asm", //$NON-NLS-1$
"org.eclipse.core.filebuffers", //$NON-NLS-1$
"org.eclipse.jsch.ui", //$NON-NLS-1$
"org.eclipse.platform", //$NON-NLS-1$
"org.eclipse.pde.ua.core", //$NON-NLS-1$
"org.eclipse.help", //$NON-NLS-1$
"org.eclipse.ecf.provider.filetransfer", //$NON-NLS-1$
"org.eclipse.equinox.preferences", //$NON-NLS-1$
"org.eclipse.equinox.p2.reconciler.dropins", //$NON-NLS-1$
"org.eclipse.equinox.p2.metadata.generator", //$NON-NLS-1$
"org.eclipse.equinox.registry", //$NON-NLS-1$
"org.eclipse.swt", //$NON-NLS-1$
"org.eclipse.ui.console", //$NON-NLS-1$
"org.junit4", //$NON-NLS-1$
"org.eclipse.ui.views.log", //$NON-NLS-1$
"org.eclipse.equinox.p2.touchpoint.natives", //$NON-NLS-1$
"org.eclipse.equinox.ds", //$NON-NLS-1$
"org.eclipse.help.base", //$NON-NLS-1$
"org.eclipse.equinox.frameworkadmin.equinox", //$NON-NLS-1$
"org.eclipse.jdt", //$NON-NLS-1$
"org.eclipse.osgi.util", //$NON-NLS-1$
"org.sat4j.pb", //$NON-NLS-1$
"org.hamcrest.core", //$NON-NLS-1$
"org.eclipse.jdt.junit4.runtime", //$NON-NLS-1$
"org.eclipse.equinox.p2.artifact.repository", //$NON-NLS-1$
"org.eclipse.core.databinding.property", //$NON-NLS-1$
"org.eclipse.core.databinding", //$NON-NLS-1$
"org.eclipse.equinox.concurrent", //$NON-NLS-1$
"org.eclipse.pde.ua.ui", //$NON-NLS-1$
"org.eclipse.ui.navigator.resources", //$NON-NLS-1$
"org.eclipse.equinox.http.servlet", //$NON-NLS-1$
"org.eclipse.jsch.core", //$NON-NLS-1$
"javax.servlet", //$NON-NLS-1$
"org.eclipse.jface", //$NON-NLS-1$
"org.eclipse.equinox.p2.updatesite", //$NON-NLS-1$
"org.eclipse.jface.databinding", //$NON-NLS-1$
"org.eclipse.ui.browser", //$NON-NLS-1$
"org.eclipse.ui", //$NON-NLS-1$
"org.eclipse.core.databinding.beans", //$NON-NLS-1$
"org.eclipse.search", //$NON-NLS-1$
"org.eclipse.equinox.jsp.jasper.registry", //$NON-NLS-1$
"org.eclipse.jdt.debug", //$NON-NLS-1$
"org.eclipse.ecf.provider.filetransfer.ssl", //$NON-NLS-1$
"org.eclipse.platform.doc.isv", //$NON-NLS-1$
"org.eclipse.pde.api.tools", //$NON-NLS-1$
"org.eclipse.ui.ide.application", //$NON-NLS-1$
"org.eclipse.equinox.p2.metadata", //$NON-NLS-1$
"org.eclipse.equinox.security.win32.x86", //$NON-NLS-1$
"org.eclipse.core.contenttype", //$NON-NLS-1$
"org.eclipse.equinox.p2.ui.sdk", //$NON-NLS-1$
"org.eclipse.core.resources", //$NON-NLS-1$
"org.eclipse.pde.launching", //$NON-NLS-1$
"org.eclipse.ui.externaltools", //$NON-NLS-1$
"org.eclipse.equinox.p2.repository", //$NON-NLS-1$
"org.eclipse.core.resources.win32.x86", //$NON-NLS-1$
"org.eclipse.pde.ui", //$NON-NLS-1$
"org.eclipse.core.databinding.observable", //$NON-NLS-1$
"org.eclipse.pde.doc.user", //$NON-NLS-1$
"org.eclipse.ui.editors", //$NON-NLS-1$
"org.eclipse.jdt.compiler.tool", //$NON-NLS-1$
"org.eclipse.jdt.apt.ui", //$NON-NLS-1$
"org.eclipse.rcp", //$NON-NLS-1$
"org.eclipse.ui.presentations.r21", //$NON-NLS-1$
"org.eclipse.pde.runtime", //$NON-NLS-1$
"org.eclipse.equinox.security.ui", //$NON-NLS-1$
"org.eclipse.core.jobs", //$NON-NLS-1$
"org.eclipse.equinox.http.jetty", //$NON-NLS-1$
"org.eclipse.pde.ds.ui", //$NON-NLS-1$
"org.apache.lucene.analysis", //$NON-NLS-1$
"org.eclipse.ui.views", //$NON-NLS-1$
"org.eclipse.equinox.common", //$NON-NLS-1$
"org.apache.lucene", //$NON-NLS-1$
"org.eclipse.ecf.identity", //$NON-NLS-1$
"org.eclipse.ui.workbench.texteditor", //$NON-NLS-1$
"org.eclipse.equinox.p2.ui", //$NON-NLS-1$
"org.eclipse.core.runtime.compatibility.auth", //$NON-NLS-1$
"org.eclipse.ltk.core.refactoring", //$NON-NLS-1$
"org.eclipse.ant.core", //$NON-NLS-1$
"org.eclipse.ant.launching", //$NON-NLS-1$
"com.jcraft.jsch", //$NON-NLS-1$
"org.eclipse.ui.win32", //$NON-NLS-1$
"org.eclipse.pde.core", //$NON-NLS-1$
"org.eclipse.pde.build", //$NON-NLS-1$
"org.eclipse.ltk.ui.refactoring", //$NON-NLS-1$
"org.eclipse.jface.text", //$NON-NLS-1$
"org.apache.commons.el", //$NON-NLS-1$
"org.eclipse.compare.win32", //$NON-NLS-1$
"org.eclipse.core.runtime", //$NON-NLS-1$
"org.eclipse.jdt.ui", //$NON-NLS-1$
"org.eclipse.compare", //$NON-NLS-1$
"org.eclipse.ui.forms", //$NON-NLS-1$
"org.eclipse.equinox.p2.extensionlocation", //$NON-NLS-1$
"org.mortbay.jetty.util", //$NON-NLS-1$
"org.eclipse.equinox.p2.director", //$NON-NLS-1$
"org.eclipse.core.filesystem", //$NON-NLS-1$
"org.eclipse.jdt.junit.core", //$NON-NLS-1$
"org.eclipse.jdt.junit.runtime", //$NON-NLS-1$
"org.eclipse.core.variables", //$NON-NLS-1$
"org.eclipse.platform.doc.user", //$NON-NLS-1$
"org.eclipse.equinox.p2.operations", //$NON-NLS-1$
"org.eclipse.core.externaltools", //$NON-NLS-1$
"org.eclipse.equinox.simpleconfigurator", //$NON-NLS-1$
"org.eclipse.equinox.p2.touchpoint.eclipse", //$NON-NLS-1$
"org.eclipse.equinox.p2.metadata.repository", //$NON-NLS-1$
"org.eclipse.pde.ds.core", //$NON-NLS-1$
"org.eclipse.jdt.apt.pluggable.core", //$NON-NLS-1$
"org.mortbay.jetty.server", //$NON-NLS-1$
"org.eclipse.text", //$NON-NLS-1$
"org.eclipse.jdt.compiler.apt", //$NON-NLS-1$
"org.eclipse.equinox.p2.director.app", //$NON-NLS-1$
"org.eclipse.jdt.debug.ui", //$NON-NLS-1$
"org.eclipse.equinox.p2.repository.tools", //$NON-NLS-1$
"org.apache.commons.httpclient", //$NON-NLS-1$
"org.eclipse.equinox.p2.garbagecollector", //$NON-NLS-1$
"org.eclipse.ui.ide", //$NON-NLS-1$
"org.eclipse.equinox.p2.engine", //$NON-NLS-1$
"org.apache.ant", //$NON-NLS-1$
"org.eclipse.jdt.junit", //$NON-NLS-1$
"org.eclipse.ecf.filetransfer", //$NON-NLS-1$
"org.eclipse.core.filesystem.win32.x86", //$NON-NLS-1$
"org.eclipse.core.net", //$NON-NLS-1$
"org.eclipse.equinox.jsp.jasper", //$NON-NLS-1$
"org.eclipse.equinox.p2.directorywatcher", //$NON-NLS-1$
"org.eclipse.equinox.http.registry", //$NON-NLS-1$
"org.junit", //$NON-NLS-1$
"org.eclipse.pde.junit.runtime", //$NON-NLS-1$
"org.eclipse.equinox.launcher", //$NON-NLS-1$
"org.eclipse.jdt.launching", //$NON-NLS-1$
"org.eclipse.core.expressions", //$NON-NLS-1$
"org.eclipse.ui.intro", //$NON-NLS-1$
"org.eclipse.team.core", //$NON-NLS-1$
"org.eclipse.ui.intro.universal", //$NON-NLS-1$
"org.eclipse.swt.win32.win32.x86", //$NON-NLS-1$
"org.eclipse.osgi.services", //$NON-NLS-1$
"org.eclipse.pde", //$NON-NLS-1$
"org.eclipse.ui.views.properties.tabbed", //$NON-NLS-1$
"org.eclipse.core.runtime.compatibility", //$NON-NLS-1$
"org.eclipse.ant.ui", //$NON-NLS-1$
"org.eclipse.ecf.provider.filetransfer.httpclient.ssl", //$NON-NLS-1$
"org.eclipse.equinox.launcher.win32.win32.x86", //$NON-NLS-1$
"org.eclipse.core.boot", //$NON-NLS-1$
"org.apache.jasper", //$NON-NLS-1$
"org.eclipse.help.webapp", //$NON-NLS-1$
"org.sat4j.core", //$NON-NLS-1$
"org.eclipse.pde.api.tools.ui", //$NON-NLS-1$
"org.eclipse.equinox.p2.ui.sdk.scheduler", //$NON-NLS-1$
"org.eclipse.debug.core", //$NON-NLS-1$
"org.eclipse.jdt.core.manipulation", //$NON-NLS-1$
"org.eclipse.osgi", //$NON-NLS-1$
"org.eclipse.equinox.p2.updatechecker", //$NON-NLS-1$
"org.eclipse.equinox.p2.console", //$NON-NLS-1$
"org.eclipse.equinox.frameworkadmin", //$NON-NLS-1$
"org.eclipse.compare.core", //$NON-NLS-1$
"org.eclipse.jdt.apt.core", //$NON-NLS-1$
"org.eclipse.help.appserver", //$NON-NLS-1$
"org.eclipse.pde.ui.templates", //$NON-NLS-1$
"org.eclipse.ecf.ssl", //$NON-NLS-1$
"org.eclipse.ui.cheatsheets", //$NON-NLS-1$
"org.eclipse.core.net.win32.x86", //$NON-NLS-1$
"org.eclipse.jdt.doc.user", //$NON-NLS-1$
"org.eclipse.equinox.app", //$NON-NLS-1$
"org.eclipse.ui.net", //$NON-NLS-1$
"org.eclipse.equinox.p2.publisher", //$NON-NLS-1$
"org.eclipse.ecf.provider.filetransfer.httpclient", //$NON-NLS-1$
};
for (String componentName : componentNames) {
allComponents.add(new LocalApiComponent(componentName));
}
IApiComponent[] components = new IApiComponent[allComponents.size()];
allComponents.toArray(components);
FilteredElements excludedElements = new FilteredElements();
try {
Util.collectRegexIds(line, excludedElements, components, false);
} catch (Exception e) {
e.printStackTrace();
}
assertEquals("Wrong size", 2, excludedElements.getPartialMatches().size()); //$NON-NLS-1$
assertFalse("Wrong result", excludedElements.containsPartialMatch("org.eclipse.jdt.core")); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse("Wrong result", excludedElements.containsExactMatch("org.eclipse.jdt.core")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testRegexExcludeList2() {
FilteredElements excludedElements = new FilteredElements();
assertEquals("Wrong size", 0, excludedElements.getPartialMatches().size()); //$NON-NLS-1$
assertEquals("Wrong size", 0, excludedElements.getExactMatches().size()); //$NON-NLS-1$
assertFalse("Wrong result", excludedElements.containsPartialMatch("org.eclipse.jdt.core")); //$NON-NLS-1$ //$NON-NLS-2$
assertFalse("Wrong result", excludedElements.containsExactMatch("org.eclipse.jdt.core")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testPluginXmlDecoding() {
InputStream stream = UtilTests.class.getResourceAsStream("plugin.xml.zip"); //$NON-NLS-1$
String s = null;
try (ZipInputStream inputStream = new ZipInputStream(new BufferedInputStream(stream))) {
ZipEntry zEntry;
while ((zEntry = inputStream.getNextEntry()) != null) {
// if it is empty directory, continue
if (zEntry.isDirectory() || !zEntry.getName().endsWith(".xml")) { //$NON-NLS-1$
continue;
}
s = new String(Util.getInputStreamAsCharArray(inputStream, StandardCharsets.UTF_8));
}
} catch (IOException e) {
// ignore
}
assertNotNull("Should not be null", s); //$NON-NLS-1$
try {
Util.parseDocument(s);
} catch(CoreException ce) {
fail("Should not happen"); //$NON-NLS-1$
}
}
/**
* Tests that the utility method for reading in include/exclude regex tests
* throws an exception when the file doesn't exist.
*
* The regex parsing is tested more extensively in
* {@link org.eclipse.pde.api.tools.search.tests.SearchEngineTests}
*
* @throws CoreException
*/
@Test(expected = CoreException.class)
public void testInitializeRegexFilterList() throws CoreException {
File bogus = new File(SRC_LOC.toFile(), "DOES_NOT_EXIST"); //$NON-NLS-1$
Util.initializeRegexFilterList(bogus.getAbsolutePath(), null, false);
}
}