Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 202577 Details for
Bug 353442
Bundle classpath entry resolution API
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
basic unit tests
0001-basic-BundleClasspathResolver-tests.patch (text/plain), 14.72 KB, created by
Igor Fedorenko
on 2011-08-31 21:04:22 EDT
(
hide
)
Description:
basic unit tests
Filename:
MIME Type:
Creator:
Igor Fedorenko
Created:
2011-08-31 21:04:22 EDT
Size:
14.72 KB
patch
obsolete
>From 27b07e48a70c35b0c3801e2c6fa9e90ce8f41bf1 Mon Sep 17 00:00:00 2001 >From: Igor Fedorenko <igor@ifedorenko.com> >Date: Wed, 31 Aug 2011 18:53:25 -0400 >Subject: [PATCH] basic BundleClasspathResolver tests > >Signed-off-by: Igor Fedorenko <igor@ifedorenko.com> >--- > ui/org.eclipse.pde.ui.tests/META-INF/MANIFEST.MF | 5 +- > ui/org.eclipse.pde.ui.tests/plugin.xml | 16 +++ > .../classpathresolver/ClasspathResolverTest.java | 130 ++++++++++++++++++++ > .../TestBundleClasspathResolver.java | 47 +++++++ > .../tests/classpathresolver/TestProjectNature.java | 36 ++++++ > .../tests/projects/classpathresolver/.classpath | 6 + > .../tests/projects/classpathresolver/.project | 29 +++++ > .../classpathresolver/META-INF/MANIFEST.MF | 7 + > .../projects/classpathresolver/build.properties | 4 + > 9 files changed, 278 insertions(+), 2 deletions(-) > create mode 100644 ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/ClasspathResolverTest.java > create mode 100644 ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestBundleClasspathResolver.java > create mode 100644 ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestProjectNature.java > create mode 100644 ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.classpath > create mode 100644 ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.project > create mode 100644 ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/META-INF/MANIFEST.MF > create mode 100644 ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/build.properties > create mode 100644 ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/cpe/some.properties > >diff --git a/ui/org.eclipse.pde.ui.tests/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.ui.tests/META-INF/MANIFEST.MF >index 8117016..41f2f46 100644 >--- a/ui/org.eclipse.pde.ui.tests/META-INF/MANIFEST.MF >+++ b/ui/org.eclipse.pde.ui.tests/META-INF/MANIFEST.MF >@@ -12,7 +12,7 @@ Require-Bundle: org.junit, > org.eclipse.core.resources, > org.eclipse.core.runtime, > org.eclipse.jdt.core, >- org.eclipse.test.performance, >+ org.eclipse.test.performance;resolution:=optional, > org.eclipse.ui.ide, > org.eclipse.team.core, > org.eclipse.jdt.ui, >@@ -35,6 +35,7 @@ Require-Bundle: org.junit, > org.eclipse.search, > org.eclipse.ui.editors, > org.eclipse.ui.views.log, >- org.eclipse.team.cvs.core >+ org.eclipse.team.cvs.core, >+ org.eclipse.debug.core > Eclipse-LazyStart: true > Bundle-RequiredExecutionEnvironment: J2SE-1.4 >diff --git a/ui/org.eclipse.pde.ui.tests/plugin.xml b/ui/org.eclipse.pde.ui.tests/plugin.xml >index b389935..9b60dd3 100644 >--- a/ui/org.eclipse.pde.ui.tests/plugin.xml >+++ b/ui/org.eclipse.pde.ui.tests/plugin.xml >@@ -131,4 +131,20 @@ > id="org.eclipse.pde.ui.tests.classpath.container"> > </classpathContainerInitializer> > </extension> >+ <extension >+ point="org.eclipse.pde.core.bundleClasspathResolvers"> >+ <resolver >+ class="org.eclipse.pde.ui.tests.classpathresolver.TestBundleClasspathResolver" >+ nature="org.eclipse.pde.ui.tests.testNature"> >+ </resolver> >+ </extension> >+ <extension >+ id="testNature" >+ point="org.eclipse.core.resources.natures"> >+ <runtime> >+ <run >+ class="org.eclipse.pde.ui.tests.classpathresolver.TestProjectNature"> >+ </run> >+ </runtime> >+ </extension> > </plugin> >diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/ClasspathResolverTest.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/ClasspathResolverTest.java >new file mode 100644 >index 0000000..bc13640 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/ClasspathResolverTest.java >@@ -0,0 +1,130 @@ >+/******************************************************************************* >+ * Copyright (c) 2008-2011 Sonatype, Inc. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Sonatype, Inc. - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.pde.ui.tests.classpathresolver; >+ >+import org.eclipse.core.resources.IProject; >+ >+import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer; >+ >+import org.eclipse.jdt.launching.sourcelookup.containers.JavaProjectSourceContainer; >+ >+import org.eclipse.jdt.core.JavaCore; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.debug.core.sourcelookup.ISourceContainer; >+ >+import java.io.*; >+import java.util.Properties; >+import junit.framework.TestCase; >+import org.eclipse.core.resources.*; >+import org.eclipse.core.runtime.*; >+import org.eclipse.pde.internal.core.ClasspathHelper; >+import org.eclipse.pde.internal.launching.sourcelookup.PDESourceLookupDirector; >+import org.eclipse.pde.internal.launching.sourcelookup.PDESourceLookupQuery; >+ >+public class ClasspathResolverTest extends TestCase { >+ >+ private static final IProgressMonitor monitor = new NullProgressMonitor(); >+ >+ private IWorkspace workspace = ResourcesPlugin.getWorkspace(); >+ >+ private IProject project; >+ >+ protected void setUp() throws Exception { >+ project = importProject(workspace); >+ } >+ >+ protected void tearDown() throws Exception { >+ project.delete(true, true, monitor); >+ } >+ >+ private static class _PDESourceLookupQuery extends PDESourceLookupQuery { >+ >+ public _PDESourceLookupQuery(PDESourceLookupDirector director, Object object) { >+ super(director, object); >+ } >+ >+ public ISourceContainer[] getSourceContainers(String location, String id) throws CoreException { >+ return super.getSourceContainers(location, id); >+ } >+ } >+ >+ public void testDevProperties() throws Exception { >+ File devProperties = File.createTempFile("dev", ".properties"); >+ ClasspathHelper.getDevEntriesProperties(devProperties.getCanonicalPath(), false); >+ >+ Properties properties = new Properties(); >+ InputStream is = new FileInputStream(devProperties); >+ try { >+ properties.load(is); >+ } finally { >+ is.close(); >+ } >+ >+ assertEquals(project.getFolder("cpe").getLocation().toOSString(), properties.get("classpathresolver")); >+ } >+ >+ public void testSourceLookupPath() throws Exception { >+ PDESourceLookupDirector d = new PDESourceLookupDirector(); >+ _PDESourceLookupQuery q = new _PDESourceLookupQuery(d, project); >+ >+ ISourceContainer[] containers = q.getSourceContainers(project.getLocation().toOSString(), "classpathresolver"); >+ >+ assertEquals(2, containers.length); >+ assertEquals(JavaCore.create(project), ((JavaProjectSourceContainer) containers[0]).getJavaProject()); >+ assertEquals(project.getFolder("cpe").getLocation().toFile(), ((DirectorySourceContainer) containers[1]).getDirectory()); >+ } >+ >+ // TODO is there generic import existing project helper in PDE tests? >+ >+ IProject importProject(IWorkspace workspace) throws IOException, CoreException { >+ String prjName = "classpathresolver"; >+ File rootFile = workspace.getRoot().getLocation().toFile(); >+ >+ File srcBasedir = new File("tests/projects/classpathresolver"); >+ File dstBasedir = new File(rootFile, prjName); >+ copyFile(srcBasedir, dstBasedir, ".project"); >+ copyFile(srcBasedir, dstBasedir, ".classpath"); >+ copyFile(srcBasedir, dstBasedir, "build.properties"); >+ copyFile(srcBasedir, dstBasedir, "classpathresolver.launch"); >+ copyFile(srcBasedir, dstBasedir, "META-INF/MANIFEST.MF"); >+ copyFile(srcBasedir, dstBasedir, "cpe/some.properties"); >+ IProject project = workspace.getRoot().getProject(prjName); >+ IProjectDescription description = workspace.newProjectDescription(prjName); >+ project.create(description, monitor); >+ project.open(monitor); >+ return project; >+ } >+ >+ private static void copyFile(File srcBasedir, File dstBasedir, String file) throws IOException { >+ copyFile(new File(srcBasedir, file), new File(dstBasedir, file)); >+ } >+ >+ // copy&paste from org.eclipse.m2e.tests.common.FileHelpers >+ private static void copyFile(File src, File dst) throws IOException { >+ src.getParentFile().mkdirs(); >+ dst.getParentFile().mkdirs(); >+ >+ BufferedInputStream in = new BufferedInputStream(new FileInputStream(src)); >+ BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dst)); >+ >+ byte[] buf = new byte[10240]; >+ int len; >+ while ((len = in.read(buf)) != -1) { >+ out.write(buf, 0, len); >+ } >+ >+ out.close(); >+ in.close(); >+ } >+ >+} >diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestBundleClasspathResolver.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestBundleClasspathResolver.java >new file mode 100644 >index 0000000..aaed3e6 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestBundleClasspathResolver.java >@@ -0,0 +1,47 @@ >+/******************************************************************************* >+ * Copyright (c) 2008-2011 Sonatype, Inc. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Sonatype, Inc. - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.pde.ui.tests.classpathresolver; >+ >+import org.eclipse.jdt.launching.IRuntimeClasspathEntry; >+ >+import org.eclipse.jdt.launching.JavaRuntime; >+ >+import java.util.*; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.pde.core.IBundleClasspathResolver; >+ >+public class TestBundleClasspathResolver implements IBundleClasspathResolver { >+ >+ public Map getAdditionalClasspathEntries(IJavaProject javaProject) { >+ Map result = new LinkedHashMap(); >+ >+ List paths = new ArrayList(); >+ >+ paths.add(javaProject.getProject().getFolder("cpe").getLocation()); >+ >+ result.put(new Path("library.jar"), paths); >+ >+ return result; >+ } >+ >+ public Collection getAdditionalSourceEntries(IJavaProject javaProject) { >+ List result = new ArrayList(); >+ >+ IRuntimeClasspathEntry entry = JavaRuntime.newArchiveRuntimeClasspathEntry(javaProject.getProject().getFolder("cpe").getLocation()); >+ entry.setSourceAttachmentPath(entry.getPath()); >+ >+ result.add(entry); >+ >+ return result; >+ } >+ >+} >diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestProjectNature.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestProjectNature.java >new file mode 100644 >index 0000000..2b00ab0 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/classpathresolver/TestProjectNature.java >@@ -0,0 +1,36 @@ >+/******************************************************************************* >+ * Copyright (c) 2008-2011 Sonatype, Inc. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Sonatype, Inc. - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.pde.ui.tests.classpathresolver; >+ >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.runtime.CoreException; >+ >+import org.eclipse.core.resources.IProjectNature; >+ >+public class TestProjectNature implements IProjectNature { >+ >+ private IProject project; >+ >+ public void configure() throws CoreException { >+ } >+ >+ public void deconfigure() throws CoreException { >+ } >+ >+ public IProject getProject() { >+ return project; >+ } >+ >+ public void setProject(IProject project) { >+ this.project = project; >+ } >+ >+} >diff --git a/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.classpath b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.classpath >new file mode 100644 >index 0000000..fd545ef >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.classpath >@@ -0,0 +1,6 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<classpath> >+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/> >+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> >+ <classpathentry kind="output" path="bin"/> >+</classpath> >diff --git a/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.project b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.project >new file mode 100644 >index 0000000..7ad2172 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/.project >@@ -0,0 +1,29 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<projectDescription> >+ <name>classpathresolver</name> >+ <comment></comment> >+ <projects> >+ </projects> >+ <buildSpec> >+ <buildCommand> >+ <name>org.eclipse.jdt.core.javabuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ <buildCommand> >+ <name>org.eclipse.pde.ManifestBuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ <buildCommand> >+ <name>org.eclipse.pde.SchemaBuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ </buildSpec> >+ <natures> >+ <nature>org.eclipse.pde.PluginNature</nature> >+ <nature>org.eclipse.jdt.core.javanature</nature> >+ <nature>org.eclipse.pde.ui.tests.testNature</nature> >+ </natures> >+</projectDescription> >diff --git a/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/META-INF/MANIFEST.MF >new file mode 100644 >index 0000000..619f8e5 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/META-INF/MANIFEST.MF >@@ -0,0 +1,7 @@ >+Manifest-Version: 1.0 >+Bundle-ManifestVersion: 2 >+Bundle-Name: Classpathresolver >+Bundle-SymbolicName: classpathresolver >+Bundle-Version: 1.0.0.qualifier >+Bundle-ClassPath: library.jar, >+ . >diff --git a/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/build.properties b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/build.properties >new file mode 100644 >index 0000000..33e0b41 >--- /dev/null >+++ b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/build.properties >@@ -0,0 +1,4 @@ >+output.. = bin/ >+bin.includes = META-INF/,\ >+ .,\ >+ library.jar >diff --git a/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/cpe/some.properties b/ui/org.eclipse.pde.ui.tests/tests/projects/classpathresolver/cpe/some.properties >new file mode 100644 >index 0000000..e69de29 >-- >1.7.5.3 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
curtis.windatt.public
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 353442
:
200613
|
202544
|
202545
| 202577 |
203009