View | Details | Raw Unified | Return to bug 324367 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/model/ClasspathTests.java (+69 lines)
Lines 6861-6865 Link Here
6861
		deleteProject("P");
6861
		deleteProject("P");
6862
	}
6862
	}
6863
}
6863
}
6864
/**
6865
 * @bug 324367: IJavaProject.findPackageFragmentRoots(IClasspathEntry cpe) returns empty list
6866
 * 
6867
 * Test that exported classpath entries from the referenced project are included when invoked
6868
 * the API org.eclipse.jdt.core.IJavaProject.findPackageFragmentRoots(IClasspathEntry)
6869
 * 
6870
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=324367"
6871
 * @throws Exception
6872
 */
6873
public void testBug324367() throws Exception {
6874
	try {
6875
		IJavaProject referencingProject = this.createJavaProject("ReferencingProject", new String[] {}, "bin");
6876
		IJavaProject referencedProject = this.createJavaProject("ReferencedProject", new String[] {"src"}, "bin");
6877
		
6878
		addLibrary(referencedProject, "lib.jar", null, new String[0], 
6879
				new String[] {
6880
				"META-INF/MANIFEST.MF",
6881
				"Manifest-Version: 1.0\n",
6882
			},
6883
			JavaCore.VERSION_1_4); 
6884
		IClasspathEntry[] classpath = new IClasspathEntry[2];
6885
		classpath[0] = JavaCore.newSourceEntry(new Path("/ReferencedProject/src"), new Path[0]);
6886
		classpath[1] = JavaCore.newLibraryEntry(new Path("/ReferencedProject/lib.jar"), null, null,true);
6887
		setClasspath(referencedProject, classpath);
6888
		classpath = new IClasspathEntry[1];
6889
		classpath[0] = JavaCore.newProjectEntry(new Path("/ReferencedProject"), false);
6890
		setClasspath(referencingProject, classpath);
6891
		
6892
	    IClasspathEntry referencedProjectCPE = null;
6893
	    IClasspathEntry[] rawClasspath = referencingProject.getRawClasspath();
6894
	    for(int index = 0; index < rawClasspath.length; index++) {
6895
	    	IClasspathEntry cpe = rawClasspath[index];
6896
	    	if (cpe.getPath().equals(referencedProject.getPath())) {
6897
	    		referencedProjectCPE = cpe;
6898
	    		break;
6899
	    	}
6900
	    }
6901
		IResource resource = getWorkspaceRoot().getProject("ReferencedProject").getFile("lib.jar");
6902
		assertTrue(referencingProject.isOnClasspath(resource));
6903
	    assertPackageFragmentRootsEqual(referencingProject.getAllPackageFragmentRoots(), 
6904
	    		"/ReferencedProject/src\n" + 
6905
	    		"/ReferencedProject/lib.jar");
6906
	    assertPackageFragmentRootsEqual(referencingProject.findPackageFragmentRoots(referencedProjectCPE), "");
6907
	    assertPackageFragmentRootsEqual(referencingProject.getPackageFragmentRoots(), "");
6908
	    assertPackageFragmentRootsEqual(referencingProject.getPackageFragmentRoots(referencedProjectCPE), "");
6909
	} finally {
6910
		deleteProject("ReferencingProject");
6911
		deleteProject("ReferencedProject");
6912
	}
6913
}
6914
	void assertPackageFragmentRootsEqual(IPackageFragmentRoot[] roots, String expected) {
6915
		String actual;
6916
		if (roots == null) {
6917
			actual = "<null>";
6918
		} else {
6919
			StringBuffer buffer = new StringBuffer();
6920
			int length = roots.length;
6921
			for (int i=0; i<length; i++) {
6922
				buffer.append(roots[i].getPath());
6923
				if (i < length-1)
6924
					buffer.append('\n');
6925
			}
6926
			actual = buffer.toString();
6927
		}
6928
		if (!actual.equals(expected)) {
6929
		 	System.out.print(displayString(actual, 2));
6930
		}
6931
		assertEquals(expected, actual);
6932
	}
6864
6933
6865
}
6934
}

Return to bug 324367