Added
Link Here
|
1 |
/******************************************************************************* |
2 |
* Copyright (c) 2006 IBM Corporation and others. |
3 |
* All rights reserved. This program and the accompanying materials |
4 |
* are made available under the terms of the Eclipse Public License v1.0 |
5 |
* which accompanies this distribution, and is available at |
6 |
* http://www.eclipse.org/legal/epl-v10.html |
7 |
* |
8 |
* Contributors: |
9 |
* IBM Corporation - initial API and implementation |
10 |
*******************************************************************************/ |
11 |
package org.eclipse.jdt.core.tests.builder; |
12 |
|
13 |
import java.io.PrintWriter; |
14 |
import java.io.StringWriter; |
15 |
import java.util.Arrays; |
16 |
import java.util.Comparator; |
17 |
|
18 |
import junit.framework.Test; |
19 |
import junit.framework.TestSuite; |
20 |
|
21 |
import org.eclipse.core.resources.IResource; |
22 |
import org.eclipse.core.runtime.IPath; |
23 |
import org.eclipse.core.runtime.Path; |
24 |
import org.eclipse.jdt.core.ICompilationUnit; |
25 |
import org.eclipse.jdt.core.IJavaProject; |
26 |
import org.eclipse.jdt.core.IPackageFragment; |
27 |
import org.eclipse.jdt.core.IPackageFragmentRoot; |
28 |
import org.eclipse.jdt.core.IRegion; |
29 |
import org.eclipse.jdt.core.JavaCore; |
30 |
import org.eclipse.jdt.core.JavaModelException; |
31 |
import org.eclipse.jdt.core.tests.util.Util; |
32 |
|
33 |
/** |
34 |
* Basic tests of {@link JavaCore#getGeneratedResources(IRegion, boolean)}. |
35 |
*/ |
36 |
public class GetResourcesTests extends BuilderTests { |
37 |
|
38 |
private static final Comparator COMPARATOR = new Comparator() { |
39 |
public int compare(Object o1, Object o2) { |
40 |
IResource resource1 = (IResource) o1; |
41 |
IResource resource2 = (IResource) o2; |
42 |
String path1 = resource1.getFullPath().toString(); |
43 |
String path2 = resource2.getFullPath().toString(); |
44 |
int length1 = path1.length(); |
45 |
int length2 = path2.length(); |
46 |
|
47 |
if (length1 != length2) { |
48 |
return length1 - length2; |
49 |
} |
50 |
return path1.toString().compareTo(path2.toString()); |
51 |
} |
52 |
}; |
53 |
|
54 |
public GetResourcesTests(String name) { |
55 |
super(name); |
56 |
} |
57 |
|
58 |
public static Test suite() { |
59 |
if (true) |
60 |
return buildTestSuite(GetResourcesTests.class); |
61 |
TestSuite suite = new TestSuite(GetResourcesTests.class.getName()); |
62 |
suite.addTest(new GetResourcesTests("test015")); |
63 |
return suite; |
64 |
} |
65 |
|
66 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
67 |
public void test001() throws JavaModelException { |
68 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
69 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
70 |
fullBuild(projectPath); |
71 |
|
72 |
// remove old package fragment root so that names don't collide |
73 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
74 |
|
75 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
76 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
77 |
|
78 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
79 |
"package p1;\n"+ //$NON-NLS-1$ |
80 |
"public class Hello {\n"+ //$NON-NLS-1$ |
81 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
82 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
83 |
" }\n"+ //$NON-NLS-1$ |
84 |
"}\n" //$NON-NLS-1$ |
85 |
); |
86 |
|
87 |
incrementalBuild(projectPath); |
88 |
|
89 |
IJavaProject project = env.getJavaProject(projectPath); |
90 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
91 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
92 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
93 |
IRegion region = JavaCore.newRegion(); |
94 |
region.add(compilationUnit); |
95 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
96 |
assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$ |
97 |
String actualOutput = getResourceOuput(resources); |
98 |
String expectedOutput = "/Project/bin/p1/Hello.class\n"; |
99 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
100 |
env.removeProject(projectPath); |
101 |
} |
102 |
|
103 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
104 |
public void test002() throws JavaModelException { |
105 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
106 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
107 |
fullBuild(projectPath); |
108 |
|
109 |
// remove old package fragment root so that names don't collide |
110 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
111 |
|
112 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
113 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
114 |
|
115 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
116 |
"package p1;\n"+ //$NON-NLS-1$ |
117 |
"public class Hello {\n"+ //$NON-NLS-1$ |
118 |
" Object foo() {\n" + //$NON-NLS-1$ |
119 |
" return new Object() {};\n" + //$NON-NLS-1$ |
120 |
" }\n" + //$NON-NLS-1$ |
121 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
122 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
123 |
" }\n"+ //$NON-NLS-1$ |
124 |
"}\n" //$NON-NLS-1$ |
125 |
); |
126 |
|
127 |
incrementalBuild(projectPath); |
128 |
|
129 |
IJavaProject project = env.getJavaProject(projectPath); |
130 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
131 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
132 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
133 |
|
134 |
IRegion region = JavaCore.newRegion(); |
135 |
region.add(compilationUnit); |
136 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
137 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
138 |
Arrays.sort(resources, COMPARATOR); |
139 |
String actualOutput = getResourceOuput(resources); |
140 |
String expectedOutput = |
141 |
"/Project/bin/p1/Hello.class\n" + |
142 |
"/Project/bin/p1/Hello$1.class\n"; |
143 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
144 |
env.removeProject(projectPath); |
145 |
} |
146 |
|
147 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
148 |
public void test003() throws JavaModelException { |
149 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
150 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
151 |
fullBuild(projectPath); |
152 |
|
153 |
// remove old package fragment root so that names don't collide |
154 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
155 |
|
156 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
157 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
158 |
|
159 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
160 |
"package p1;\n"+ //$NON-NLS-1$ |
161 |
"public class Hello {\n"+ //$NON-NLS-1$ |
162 |
" Object foo() {\n" + |
163 |
" if(false) {\n" + //$NON-NLS-1$ |
164 |
" return new Object() {};\n" + |
165 |
" }\n" + |
166 |
" return null;\n" + //$NON-NLS-1$ |
167 |
" }\n" + //$NON-NLS-1$ |
168 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
169 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
170 |
" }\n"+ //$NON-NLS-1$ |
171 |
"}\n" //$NON-NLS-1$ |
172 |
); |
173 |
|
174 |
incrementalBuild(projectPath); |
175 |
|
176 |
IJavaProject project = env.getJavaProject(projectPath); |
177 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
178 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
179 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
180 |
IRegion region = JavaCore.newRegion(); |
181 |
region.add(compilationUnit); |
182 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
183 |
assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$ |
184 |
String actualOutput = getResourceOuput(resources); |
185 |
String expectedOutput = "/Project/bin/p1/Hello.class\n"; |
186 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
187 |
env.removeProject(projectPath); |
188 |
} |
189 |
|
190 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
191 |
public void test004() throws JavaModelException { |
192 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
193 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
194 |
fullBuild(projectPath); |
195 |
|
196 |
// remove old package fragment root so that names don't collide |
197 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
198 |
|
199 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
200 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
201 |
|
202 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
203 |
"package p1;\n"+ //$NON-NLS-1$ |
204 |
"public class Hello {\n"+ //$NON-NLS-1$ |
205 |
" Object foo() {\n" + |
206 |
" return new Object() {};\n" + |
207 |
" }\n" + //$NON-NLS-1$ |
208 |
" Object foo2() {\n" + |
209 |
" return new Object() {};\n" + |
210 |
" }\n" + //$NON-NLS-1$ |
211 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
212 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
213 |
" }\n"+ //$NON-NLS-1$ |
214 |
"}\n" //$NON-NLS-1$ |
215 |
); |
216 |
|
217 |
incrementalBuild(projectPath); |
218 |
|
219 |
IJavaProject project = env.getJavaProject(projectPath); |
220 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
221 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
222 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
223 |
IRegion region = JavaCore.newRegion(); |
224 |
region.add(compilationUnit); |
225 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
226 |
assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$ |
227 |
Arrays.sort(resources, COMPARATOR); |
228 |
String actualOutput = getResourceOuput(resources); |
229 |
String expectedOutput = |
230 |
"/Project/bin/p1/Hello.class\n" + |
231 |
"/Project/bin/p1/Hello$1.class\n" + |
232 |
"/Project/bin/p1/Hello$2.class\n"; |
233 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
234 |
env.removeProject(projectPath); |
235 |
} |
236 |
|
237 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
238 |
public void test005() throws JavaModelException { |
239 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
240 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
241 |
fullBuild(projectPath); |
242 |
|
243 |
// remove old package fragment root so that names don't collide |
244 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
245 |
|
246 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
247 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
248 |
|
249 |
env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$ |
250 |
"package a;\n" + |
251 |
"\n" + |
252 |
"public class Anon {\n" + |
253 |
"\n" + |
254 |
" Anon() {\n" + |
255 |
" Object o1 = new Object() {\n" + |
256 |
" public String toString() {\n" + |
257 |
" return \"1\"; // a/Anon$3 in 1.5, a/Anon$11 in 1.4\n" + |
258 |
" }\n" + |
259 |
" };\n" + |
260 |
" Object o2 = new Object() {\n" + |
261 |
" public String toString() {\n" + |
262 |
" return \"2\"; // a/Anon$4 in 1.5, a/Anon$12 in 1.4\n" + |
263 |
" }\n" + |
264 |
" };\n" + |
265 |
" }\n" + |
266 |
"\n" + |
267 |
" void hello() {\n" + |
268 |
" Object o3 = new Object() {\n" + |
269 |
" public String toString() {\n" + |
270 |
" return \"3\"; // a/Anon$5 in 1.5, a/Anon$13 in 1.4\n" + |
271 |
" }\n" + |
272 |
" };\n" + |
273 |
" Object o4 = new Object() {\n" + |
274 |
" public String toString() {\n" + |
275 |
" return \"4\"; // a/Anon$6 in 1.5, a/Anon$14 in 1.4\n" + |
276 |
" }\n" + |
277 |
" };\n" + |
278 |
" }\n" + |
279 |
"\n" + |
280 |
" static void hello2() {\n" + |
281 |
" Object o5 = new Object() {\n" + |
282 |
" public String toString() {\n" + |
283 |
" return \"5\"; // a/Anon$7 in 1.5, a/Anon$15 in 1.4\n" + |
284 |
" }\n" + |
285 |
" };\n" + |
286 |
" Object o6 = new Object() {\n" + |
287 |
" public String toString() {\n" + |
288 |
" return \"6\"; // a/Anon$8 in 1.5, a/Anon$16 in 1.4\n" + |
289 |
" }\n" + |
290 |
" };\n" + |
291 |
" }\n" + |
292 |
"\n" + |
293 |
" static {\n" + |
294 |
" Object o7 = new Object() {\n" + |
295 |
" public String toString() {\n" + |
296 |
" return \"7\"; // a/Anon$1 in 1.5, a/Anon$1 in 1.4\n" + |
297 |
" }\n" + |
298 |
" };\n" + |
299 |
"\n" + |
300 |
" Object o8 = new Object() {\n" + |
301 |
" public String toString() {\n" + |
302 |
" return \"8\"; // a/Anon$2 in 1.5, a/Anon$2 in 1.4\n" + |
303 |
" }\n" + |
304 |
" };\n" + |
305 |
" }\n" + |
306 |
"\n" + |
307 |
" static class Anon2 {\n" + |
308 |
" // it\'s an object init block which has different prio as constructor!\n" + |
309 |
" {\n" + |
310 |
" Object o1 = new Object() {\n" + |
311 |
" public String toString() {\n" + |
312 |
" return \"1\"; // a/Anon$Anon2$1 in 1.5, a/Anon$3 in 1.4\n" + |
313 |
" }\n" + |
314 |
" };\n" + |
315 |
" Object o2 = new Object() {\n" + |
316 |
" public String toString() {\n" + |
317 |
" return \"2\"; // a/Anon$Anon2$2 in 1.5, a/Anon$4 in 1.4\n" + |
318 |
" }\n" + |
319 |
" };\n" + |
320 |
" }\n" + |
321 |
"\n" + |
322 |
" void hello() {\n" + |
323 |
" Object o3 = new Object() {\n" + |
324 |
" public String toString() {\n" + |
325 |
" return \"3\"; // a/Anon$Anon2$5 in 1.5, a/Anon$7 in 1.4\n" + |
326 |
" }\n" + |
327 |
" };\n" + |
328 |
" Object o4 = new Object() {\n" + |
329 |
" public String toString() {\n" + |
330 |
" return \"4\"; // a/Anon$Anon2$6 in 1.5, a/Anon$8 in 1.4\n" + |
331 |
" }\n" + |
332 |
" };\n" + |
333 |
" }\n" + |
334 |
"\n" + |
335 |
" static void hello2() {\n" + |
336 |
" Object o5 = new Object() {\n" + |
337 |
" public String toString() {\n" + |
338 |
" return \"5\"; // a/Anon$Anon2$7 in 1.5, a/Anon$9 in 1.4\n" + |
339 |
" }\n" + |
340 |
" };\n" + |
341 |
" Object o6 = new Object() {\n" + |
342 |
" public String toString() {\n" + |
343 |
" return \"6\"; // a/Anon$Anon2$8 in 1.5, a/Anon$10 in 1.4\n" + |
344 |
" }\n" + |
345 |
" };\n" + |
346 |
" }\n" + |
347 |
"\n" + |
348 |
" static {\n" + |
349 |
" Object o7 = new Object() {\n" + |
350 |
" public String toString() {\n" + |
351 |
" return \"7\"; // a/Anon$Anon2$3 in 1.5, a/Anon$5 in 1.4\n" + |
352 |
" }\n" + |
353 |
" };\n" + |
354 |
"\n" + |
355 |
" Object o8 = new Object() {\n" + |
356 |
" public String toString() {\n" + |
357 |
" return \"8\"; // a/Anon$Anon2$4 in 1.5, a/Anon$6 in 1.4\n" + |
358 |
" }\n" + |
359 |
" };\n" + |
360 |
" }\n" + |
361 |
" }\n" + |
362 |
"}"); |
363 |
|
364 |
incrementalBuild(projectPath); |
365 |
|
366 |
IJavaProject project = env.getJavaProject(projectPath); |
367 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
368 |
IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$ |
369 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$ |
370 |
IRegion region = JavaCore.newRegion(); |
371 |
region.add(compilationUnit); |
372 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
373 |
assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$ |
374 |
Arrays.sort(resources, COMPARATOR); |
375 |
String actualOutput = getResourceOuput(resources); |
376 |
String expectedOutput = |
377 |
"/Project/bin/a/Anon.class\n" + |
378 |
"/Project/bin/a/Anon$1.class\n" + |
379 |
"/Project/bin/a/Anon$2.class\n" + |
380 |
"/Project/bin/a/Anon$3.class\n" + |
381 |
"/Project/bin/a/Anon$4.class\n" + |
382 |
"/Project/bin/a/Anon$5.class\n" + |
383 |
"/Project/bin/a/Anon$6.class\n" + |
384 |
"/Project/bin/a/Anon$7.class\n" + |
385 |
"/Project/bin/a/Anon$8.class\n" + |
386 |
"/Project/bin/a/Anon$9.class\n" + |
387 |
"/Project/bin/a/Anon$10.class\n" + |
388 |
"/Project/bin/a/Anon$11.class\n" + |
389 |
"/Project/bin/a/Anon$12.class\n" + |
390 |
"/Project/bin/a/Anon$13.class\n" + |
391 |
"/Project/bin/a/Anon$14.class\n" + |
392 |
"/Project/bin/a/Anon$15.class\n" + |
393 |
"/Project/bin/a/Anon$16.class\n" + |
394 |
"/Project/bin/a/Anon$Anon2.class\n"; |
395 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
396 |
env.removeProject(projectPath); |
397 |
} |
398 |
|
399 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
400 |
public void test006() throws JavaModelException { |
401 |
IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ |
402 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
403 |
fullBuild(projectPath); |
404 |
|
405 |
// remove old package fragment root so that names don't collide |
406 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
407 |
|
408 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
409 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
410 |
|
411 |
env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$ |
412 |
"package a;\n" + |
413 |
"\n" + |
414 |
"public class Anon {\n" + |
415 |
"\n" + |
416 |
" Anon() {\n" + |
417 |
" Object o1 = new Object() {\n" + |
418 |
" public String toString() {\n" + |
419 |
" return \"1\"; // a/Anon$3 in 1.5, a/Anon$11 in 1.4\n" + |
420 |
" }\n" + |
421 |
" };\n" + |
422 |
" Object o2 = new Object() {\n" + |
423 |
" public String toString() {\n" + |
424 |
" return \"2\"; // a/Anon$4 in 1.5, a/Anon$12 in 1.4\n" + |
425 |
" }\n" + |
426 |
" };\n" + |
427 |
" }\n" + |
428 |
"\n" + |
429 |
" void hello() {\n" + |
430 |
" Object o3 = new Object() {\n" + |
431 |
" public String toString() {\n" + |
432 |
" return \"3\"; // a/Anon$5 in 1.5, a/Anon$13 in 1.4\n" + |
433 |
" }\n" + |
434 |
" };\n" + |
435 |
" Object o4 = new Object() {\n" + |
436 |
" public String toString() {\n" + |
437 |
" return \"4\"; // a/Anon$6 in 1.5, a/Anon$14 in 1.4\n" + |
438 |
" }\n" + |
439 |
" };\n" + |
440 |
" }\n" + |
441 |
"\n" + |
442 |
" static void hello2() {\n" + |
443 |
" Object o5 = new Object() {\n" + |
444 |
" public String toString() {\n" + |
445 |
" return \"5\"; // a/Anon$7 in 1.5, a/Anon$15 in 1.4\n" + |
446 |
" }\n" + |
447 |
" };\n" + |
448 |
" Object o6 = new Object() {\n" + |
449 |
" public String toString() {\n" + |
450 |
" return \"6\"; // a/Anon$8 in 1.5, a/Anon$16 in 1.4\n" + |
451 |
" }\n" + |
452 |
" };\n" + |
453 |
" }\n" + |
454 |
"\n" + |
455 |
" static {\n" + |
456 |
" Object o7 = new Object() {\n" + |
457 |
" public String toString() {\n" + |
458 |
" return \"7\"; // a/Anon$1 in 1.5, a/Anon$1 in 1.4\n" + |
459 |
" }\n" + |
460 |
" };\n" + |
461 |
"\n" + |
462 |
" Object o8 = new Object() {\n" + |
463 |
" public String toString() {\n" + |
464 |
" return \"8\"; // a/Anon$2 in 1.5, a/Anon$2 in 1.4\n" + |
465 |
" }\n" + |
466 |
" };\n" + |
467 |
" }\n" + |
468 |
"\n" + |
469 |
" static class Anon2 {\n" + |
470 |
" // it\'s an object init block which has different prio as constructor!\n" + |
471 |
" {\n" + |
472 |
" Object o1 = new Object() {\n" + |
473 |
" public String toString() {\n" + |
474 |
" return \"1\"; // a/Anon$Anon2$1 in 1.5, a/Anon$3 in 1.4\n" + |
475 |
" }\n" + |
476 |
" };\n" + |
477 |
" Object o2 = new Object() {\n" + |
478 |
" public String toString() {\n" + |
479 |
" return \"2\"; // a/Anon$Anon2$2 in 1.5, a/Anon$4 in 1.4\n" + |
480 |
" }\n" + |
481 |
" };\n" + |
482 |
" }\n" + |
483 |
"\n" + |
484 |
" void hello() {\n" + |
485 |
" Object o3 = new Object() {\n" + |
486 |
" public String toString() {\n" + |
487 |
" return \"3\"; // a/Anon$Anon2$5 in 1.5, a/Anon$7 in 1.4\n" + |
488 |
" }\n" + |
489 |
" };\n" + |
490 |
" Object o4 = new Object() {\n" + |
491 |
" public String toString() {\n" + |
492 |
" return \"4\"; // a/Anon$Anon2$6 in 1.5, a/Anon$8 in 1.4\n" + |
493 |
" }\n" + |
494 |
" };\n" + |
495 |
" }\n" + |
496 |
"\n" + |
497 |
" static void hello2() {\n" + |
498 |
" Object o5 = new Object() {\n" + |
499 |
" public String toString() {\n" + |
500 |
" return \"5\"; // a/Anon$Anon2$7 in 1.5, a/Anon$9 in 1.4\n" + |
501 |
" }\n" + |
502 |
" };\n" + |
503 |
" Object o6 = new Object() {\n" + |
504 |
" public String toString() {\n" + |
505 |
" return \"6\"; // a/Anon$Anon2$8 in 1.5, a/Anon$10 in 1.4\n" + |
506 |
" }\n" + |
507 |
" };\n" + |
508 |
" }\n" + |
509 |
"\n" + |
510 |
" static {\n" + |
511 |
" Object o7 = new Object() {\n" + |
512 |
" public String toString() {\n" + |
513 |
" return \"7\"; // a/Anon$Anon2$3 in 1.5, a/Anon$5 in 1.4\n" + |
514 |
" }\n" + |
515 |
" };\n" + |
516 |
"\n" + |
517 |
" Object o8 = new Object() {\n" + |
518 |
" public String toString() {\n" + |
519 |
" return \"8\"; // a/Anon$Anon2$4 in 1.5, a/Anon$6 in 1.4\n" + |
520 |
" }\n" + |
521 |
" };\n" + |
522 |
" }\n" + |
523 |
" }\n" + |
524 |
"}"); |
525 |
|
526 |
incrementalBuild(projectPath); |
527 |
|
528 |
IJavaProject project = env.getJavaProject(projectPath); |
529 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
530 |
IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$ |
531 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$ |
532 |
IRegion region = JavaCore.newRegion(); |
533 |
region.add(compilationUnit); |
534 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
535 |
assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$ |
536 |
Arrays.sort(resources, COMPARATOR); |
537 |
String actualOutput = getResourceOuput(resources); |
538 |
String expectedOutput = |
539 |
"/Project/bin/a/Anon.class\n" + |
540 |
"/Project/bin/a/Anon$1.class\n" + |
541 |
"/Project/bin/a/Anon$2.class\n" + |
542 |
"/Project/bin/a/Anon$3.class\n" + |
543 |
"/Project/bin/a/Anon$4.class\n" + |
544 |
"/Project/bin/a/Anon$5.class\n" + |
545 |
"/Project/bin/a/Anon$6.class\n" + |
546 |
"/Project/bin/a/Anon$7.class\n" + |
547 |
"/Project/bin/a/Anon$8.class\n" + |
548 |
"/Project/bin/a/Anon$Anon2.class\n" + |
549 |
"/Project/bin/a/Anon$Anon2$1.class\n" + |
550 |
"/Project/bin/a/Anon$Anon2$2.class\n" + |
551 |
"/Project/bin/a/Anon$Anon2$3.class\n" + |
552 |
"/Project/bin/a/Anon$Anon2$4.class\n" + |
553 |
"/Project/bin/a/Anon$Anon2$5.class\n" + |
554 |
"/Project/bin/a/Anon$Anon2$6.class\n" + |
555 |
"/Project/bin/a/Anon$Anon2$7.class\n" + |
556 |
"/Project/bin/a/Anon$Anon2$8.class\n"; |
557 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
558 |
env.removeProject(projectPath); |
559 |
} |
560 |
|
561 |
private String getResourceOuput(IResource[] resources) { |
562 |
StringWriter stringWriter = new StringWriter(); |
563 |
PrintWriter writer = new PrintWriter(stringWriter); |
564 |
for (int i = 0, max = resources.length; i < max; i++) { |
565 |
writer.println(resources[i].getFullPath().toString()); |
566 |
} |
567 |
writer.flush(); |
568 |
writer.close(); |
569 |
return Util.convertToIndependantLineDelimiter(String.valueOf(stringWriter)); |
570 |
} |
571 |
|
572 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
573 |
public void test007() throws JavaModelException { |
574 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
575 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
576 |
fullBuild(projectPath); |
577 |
|
578 |
// remove old package fragment root so that names don't collide |
579 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
580 |
|
581 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
582 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
583 |
|
584 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
585 |
"package p1;\n"+ //$NON-NLS-1$ |
586 |
"public class Hello {\n"+ //$NON-NLS-1$ |
587 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
588 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
589 |
" }\n"+ //$NON-NLS-1$ |
590 |
"}\n" + //$NON-NLS-1$ |
591 |
"class Foo {\n"+ //$NON-NLS-1$ |
592 |
"}\n" //$NON-NLS-1$ |
593 |
); |
594 |
|
595 |
incrementalBuild(projectPath); |
596 |
|
597 |
IJavaProject project = env.getJavaProject(projectPath); |
598 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
599 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
600 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
601 |
IRegion region = JavaCore.newRegion(); |
602 |
region.add(compilationUnit); |
603 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
604 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
605 |
env.removeProject(projectPath); |
606 |
} |
607 |
|
608 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
609 |
public void test008() throws JavaModelException { |
610 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
611 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
612 |
fullBuild(projectPath); |
613 |
|
614 |
// remove old package fragment root so that names don't collide |
615 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
616 |
|
617 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
618 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
619 |
|
620 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
621 |
"package p1;\n"+ //$NON-NLS-1$ |
622 |
"public class Hello {\n" + |
623 |
" public class Z {}\n"+ //$NON-NLS-1$ |
624 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
625 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
626 |
" }\n"+ //$NON-NLS-1$ |
627 |
"}\n" //$NON-NLS-1$ |
628 |
); |
629 |
|
630 |
incrementalBuild(projectPath); |
631 |
|
632 |
IJavaProject project = env.getJavaProject(projectPath); |
633 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
634 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
635 |
IRegion region = JavaCore.newRegion(); |
636 |
region.add(packageFragment); |
637 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
638 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
639 |
Arrays.sort(resources, COMPARATOR); |
640 |
String actualOutput = getResourceOuput(resources); |
641 |
String expectedOutput = |
642 |
"/Project/bin/p1/Hello.class\n" + |
643 |
"/Project/bin/p1/Hello$Z.class\n"; |
644 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
645 |
env.removeProject(projectPath); |
646 |
} |
647 |
|
648 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
649 |
public void test009() throws JavaModelException { |
650 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
651 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
652 |
fullBuild(projectPath); |
653 |
|
654 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
655 |
|
656 |
env.addClass(projectPath, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
657 |
"package p1;\n"+ //$NON-NLS-1$ |
658 |
"public class Hello {\n"+ //$NON-NLS-1$ |
659 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
660 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
661 |
" }\n"+ //$NON-NLS-1$ |
662 |
"}\n" //$NON-NLS-1$ |
663 |
); |
664 |
|
665 |
incrementalBuild(projectPath); |
666 |
|
667 |
IJavaProject project = env.getJavaProject(projectPath); |
668 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getUnderlyingResource()); |
669 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
670 |
ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$ |
671 |
IRegion region = JavaCore.newRegion(); |
672 |
region.add(compilationUnit); |
673 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
674 |
assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$ |
675 |
String actualOutput = getResourceOuput(resources); |
676 |
String expectedOutput = |
677 |
"/Project/bin/p1/Hello.class\n"; |
678 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
679 |
env.removeProject(projectPath); |
680 |
} |
681 |
|
682 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
683 |
public void test010() throws JavaModelException { |
684 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
685 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
686 |
fullBuild(projectPath); |
687 |
|
688 |
// remove old package fragment root so that names don't collide |
689 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
690 |
|
691 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
692 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
693 |
|
694 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
695 |
"package p1;\n"+ //$NON-NLS-1$ |
696 |
"public class Hello {\n" + |
697 |
" public class Z {}\n"+ //$NON-NLS-1$ |
698 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
699 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
700 |
" }\n"+ //$NON-NLS-1$ |
701 |
"}\n" //$NON-NLS-1$ |
702 |
); |
703 |
|
704 |
env.addFile(root, "p1/Test.txt", "This is a non-java resource"); |
705 |
incrementalBuild(projectPath); |
706 |
|
707 |
IJavaProject project = env.getJavaProject(projectPath); |
708 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
709 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
710 |
IRegion region = JavaCore.newRegion(); |
711 |
region.add(packageFragment); |
712 |
IResource[] resources = JavaCore.getGeneratedResources(region, false); |
713 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
714 |
Arrays.sort(resources, COMPARATOR); |
715 |
String actualOutput = getResourceOuput(resources); |
716 |
String expectedOutput = |
717 |
"/Project/bin/p1/Hello.class\n" + |
718 |
"/Project/bin/p1/Hello$Z.class\n"; |
719 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
720 |
|
721 |
resources = JavaCore.getGeneratedResources(region, true); |
722 |
assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$ |
723 |
Arrays.sort(resources, COMPARATOR); |
724 |
actualOutput = getResourceOuput(resources); |
725 |
expectedOutput = |
726 |
"/Project/bin/p1/Test.txt\n" + |
727 |
"/Project/bin/p1/Hello.class\n" + |
728 |
"/Project/bin/p1/Hello$Z.class\n"; |
729 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
730 |
|
731 |
env.removeProject(projectPath); |
732 |
} |
733 |
|
734 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
735 |
public void test011() throws JavaModelException { |
736 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
737 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
738 |
fullBuild(projectPath); |
739 |
|
740 |
// remove old package fragment root so that names don't collide |
741 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
742 |
|
743 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
744 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
745 |
|
746 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
747 |
"package p1;\n"+ //$NON-NLS-1$ |
748 |
"public class Hello {\n" + |
749 |
" public class Z {}\n"+ //$NON-NLS-1$ |
750 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
751 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
752 |
" }\n"+ //$NON-NLS-1$ |
753 |
"}\n" //$NON-NLS-1$ |
754 |
); |
755 |
|
756 |
incrementalBuild(projectPath); |
757 |
|
758 |
IJavaProject project = env.getJavaProject(projectPath); |
759 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
760 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
761 |
IRegion region = JavaCore.newRegion(); |
762 |
region.add(packageFragment); |
763 |
IResource[] resources = JavaCore.getGeneratedResources(region, true); |
764 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
765 |
Arrays.sort(resources, COMPARATOR); |
766 |
String actualOutput = getResourceOuput(resources); |
767 |
String expectedOutput = |
768 |
"/Project/bin/p1/Hello.class\n" + |
769 |
"/Project/bin/p1/Hello$Z.class\n"; |
770 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
771 |
|
772 |
env.addFile(root, "p1/Test.txt", "This is a non-java resource"); |
773 |
incrementalBuild(projectPath); |
774 |
|
775 |
resources = JavaCore.getGeneratedResources(region, true); |
776 |
assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$ |
777 |
Arrays.sort(resources, COMPARATOR); |
778 |
actualOutput = getResourceOuput(resources); |
779 |
expectedOutput = |
780 |
"/Project/bin/p1/Test.txt\n" + |
781 |
"/Project/bin/p1/Hello.class\n" + |
782 |
"/Project/bin/p1/Hello$Z.class\n"; |
783 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
784 |
|
785 |
env.removeProject(projectPath); |
786 |
} |
787 |
|
788 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
789 |
public void test012() throws JavaModelException { |
790 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
791 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
792 |
fullBuild(projectPath); |
793 |
|
794 |
// remove old package fragment root so that names don't collide |
795 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
796 |
|
797 |
IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ |
798 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
799 |
|
800 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
801 |
"package p1;\n"+ //$NON-NLS-1$ |
802 |
"public class Hello {\n" + |
803 |
" public class Z {}\n"+ //$NON-NLS-1$ |
804 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
805 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
806 |
" }\n"+ //$NON-NLS-1$ |
807 |
"}\n" //$NON-NLS-1$ |
808 |
); |
809 |
|
810 |
incrementalBuild(projectPath); |
811 |
|
812 |
IJavaProject project = env.getJavaProject(projectPath); |
813 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
814 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
815 |
IRegion region = JavaCore.newRegion(); |
816 |
region.add(packageFragment); |
817 |
IResource[] resources = JavaCore.getGeneratedResources(region, true); |
818 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
819 |
Arrays.sort(resources, COMPARATOR); |
820 |
String actualOutput = getResourceOuput(resources); |
821 |
String expectedOutput = |
822 |
"/Project/bin/p1/Hello.class\n" + |
823 |
"/Project/bin/p1/Hello$Z.class\n"; |
824 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
825 |
|
826 |
env.addFile(root, "p1/Test.txt", "This is a non-java resource"); |
827 |
|
828 |
resources = JavaCore.getGeneratedResources(region, true); |
829 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
830 |
Arrays.sort(resources, COMPARATOR); |
831 |
actualOutput = getResourceOuput(resources); |
832 |
expectedOutput = |
833 |
"/Project/bin/p1/Hello.class\n" + |
834 |
"/Project/bin/p1/Hello$Z.class\n"; |
835 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
836 |
|
837 |
env.removeProject(projectPath); |
838 |
} |
839 |
|
840 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
841 |
public void test013() throws JavaModelException { |
842 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
843 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
844 |
fullBuild(projectPath); |
845 |
|
846 |
// remove old package fragment root so that names don't collide |
847 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
848 |
|
849 |
IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$ |
850 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
851 |
|
852 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
853 |
"package p1;\n"+ //$NON-NLS-1$ |
854 |
"public class Hello {\n" + |
855 |
" public class Z {}\n"+ //$NON-NLS-1$ |
856 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
857 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
858 |
" }\n"+ //$NON-NLS-1$ |
859 |
"}\n" //$NON-NLS-1$ |
860 |
); |
861 |
|
862 |
incrementalBuild(projectPath); |
863 |
|
864 |
IJavaProject project = env.getJavaProject(projectPath); |
865 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
866 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
867 |
IRegion region = JavaCore.newRegion(); |
868 |
region.add(packageFragment); |
869 |
IResource[] resources = JavaCore.getGeneratedResources(region, true); |
870 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
871 |
Arrays.sort(resources, COMPARATOR); |
872 |
String actualOutput = getResourceOuput(resources); |
873 |
String expectedOutput = |
874 |
"/Project/bin/p1/Hello.class\n" + |
875 |
"/Project/bin/p1/Hello$Z.class\n"; |
876 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
877 |
|
878 |
env.addFile(root, "p1/Test.txt", "This is a non-java resource"); |
879 |
incrementalBuild(projectPath); |
880 |
|
881 |
resources = JavaCore.getGeneratedResources(region, true); |
882 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
883 |
Arrays.sort(resources, COMPARATOR); |
884 |
actualOutput = getResourceOuput(resources); |
885 |
expectedOutput = |
886 |
"/Project/bin/p1/Hello.class\n" + |
887 |
"/Project/bin/p1/Hello$Z.class\n"; |
888 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
889 |
|
890 |
env.removeProject(projectPath); |
891 |
} |
892 |
|
893 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
894 |
public void test014() throws JavaModelException { |
895 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
896 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
897 |
fullBuild(projectPath); |
898 |
|
899 |
// remove old package fragment root so that names don't collide |
900 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
901 |
|
902 |
IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$ |
903 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
904 |
|
905 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
906 |
"package p1;\n"+ //$NON-NLS-1$ |
907 |
"public class Hello {\n" + |
908 |
" public class Z {}\n"+ //$NON-NLS-1$ |
909 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
910 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
911 |
" }\n"+ //$NON-NLS-1$ |
912 |
"}\n" //$NON-NLS-1$ |
913 |
); |
914 |
|
915 |
incrementalBuild(projectPath); |
916 |
|
917 |
IJavaProject project = env.getJavaProject(projectPath); |
918 |
IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); |
919 |
IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$ |
920 |
IRegion region = JavaCore.newRegion(); |
921 |
region.add(packageFragment); |
922 |
IResource[] resources = JavaCore.getGeneratedResources(region, true); |
923 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
924 |
Arrays.sort(resources, COMPARATOR); |
925 |
String actualOutput = getResourceOuput(resources); |
926 |
String expectedOutput = |
927 |
"/Project/bin/p1/Hello.class\n" + |
928 |
"/Project/bin/p1/Hello$Z.class\n"; |
929 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
930 |
|
931 |
env.addFile(root, "p1/Test.txt", "This is an excluded non-java resource"); |
932 |
env.addFile(root, "p1/Test.log", "This is an included non-java resource"); |
933 |
incrementalBuild(projectPath); |
934 |
|
935 |
resources = JavaCore.getGeneratedResources(region, true); |
936 |
assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$ |
937 |
Arrays.sort(resources, COMPARATOR); |
938 |
actualOutput = getResourceOuput(resources); |
939 |
expectedOutput = |
940 |
"/Project/bin/p1/Test.log\n" + |
941 |
"/Project/bin/p1/Hello.class\n" + |
942 |
"/Project/bin/p1/Hello$Z.class\n"; |
943 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
944 |
|
945 |
env.removeProject(projectPath); |
946 |
} |
947 |
|
948 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
949 |
public void test015() throws JavaModelException { |
950 |
IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ |
951 |
env.addExternalJars(projectPath, Util.getJavaClassLibs()); |
952 |
fullBuild(projectPath); |
953 |
|
954 |
// remove old package fragment root so that names don't collide |
955 |
env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ |
956 |
|
957 |
IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$ |
958 |
env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ |
959 |
|
960 |
env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$ |
961 |
"package p1;\n"+ //$NON-NLS-1$ |
962 |
"public class Hello {\n" + |
963 |
" public class Z {}\n"+ //$NON-NLS-1$ |
964 |
" public static void main(String args[]) {\n"+ //$NON-NLS-1$ |
965 |
" System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$ |
966 |
" }\n"+ //$NON-NLS-1$ |
967 |
"}\n" //$NON-NLS-1$ |
968 |
); |
969 |
|
970 |
incrementalBuild(projectPath); |
971 |
|
972 |
IJavaProject project = env.getJavaProject(projectPath); |
973 |
IRegion region = JavaCore.newRegion(); |
974 |
region.add(project); |
975 |
IResource[] resources = JavaCore.getGeneratedResources(region, true); |
976 |
assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$ |
977 |
Arrays.sort(resources, COMPARATOR); |
978 |
String actualOutput = getResourceOuput(resources); |
979 |
String expectedOutput = |
980 |
"/Project/bin/p1/Hello.class\n" + |
981 |
"/Project/bin/p1/Hello$Z.class\n"; |
982 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
983 |
|
984 |
env.addFile(root, "p1/Test.txt", "This is an excluded non-java resource"); |
985 |
env.addFile(root, "p1/Test.log", "This is an included non-java resource"); |
986 |
incrementalBuild(projectPath); |
987 |
|
988 |
resources = JavaCore.getGeneratedResources(region, true); |
989 |
assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$ |
990 |
Arrays.sort(resources, COMPARATOR); |
991 |
actualOutput = getResourceOuput(resources); |
992 |
expectedOutput = |
993 |
"/Project/bin/p1/Test.log\n" + |
994 |
"/Project/bin/p1/Hello.class\n" + |
995 |
"/Project/bin/p1/Hello$Z.class\n"; |
996 |
assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); |
997 |
|
998 |
env.removeProject(projectPath); |
999 |
} |
1000 |
|
1001 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 |
1002 |
public void test016() throws JavaModelException { |
1003 |
try { |
1004 |
JavaCore.getGeneratedResources(null, true); |
1005 |
assertTrue("Region cannot be null", false); |
1006 |
} catch(IllegalArgumentException e) { |
1007 |
// ignore: expected exception |
1008 |
} |
1009 |
} |
1010 |
} |