Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 298870 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/core/tests/resources/LinkedResourceSyncMoveAndCopyTest.java (-136 / +332 lines)
Lines 65-90 Link Here
65
		super.tearDown();
65
		super.tearDown();
66
	}
66
	}
67
67
68
	public void internalMovedAndCopyTest(IResource resource, int copyMoveFlag, boolean copyMoveSucceeds) {
68
	public void internalCopyTest(IResource resource, int copyFlag, boolean copyOk) {
69
		//		try {
69
		try {
70
		//			resource.copy(otherExistingProject.getFullPath().append(resource.getProjectRelativePath()), copyMoveFlag, getMonitor());
70
			resource.copy(otherExistingProject.getFullPath().append(resource.getProjectRelativePath()), copyFlag, getMonitor());
71
		//			if (!copyMoveSucceeds)
71
			if (!copyOk)
72
		//				fail("1.0");
72
				fail("1.0");
73
		//		} catch (CoreException e) {
73
		} catch (CoreException e) {
74
		//			if (copyMoveSucceeds)
74
			if (copyOk)
75
		//				fail("4.99", e);
75
				fail("2.0", e);
76
		//		} finally {
76
		} finally {
77
		//			if (otherExistingProject.findMember(resource.getProjectRelativePath()) != null)
77
			if (otherExistingProject.findMember(resource.getProjectRelativePath()) != null)
78
		//				ensureDoesNotExistInWorkspace(otherExistingProject.findMember(resource.getProjectRelativePath()));
78
				ensureDoesNotExistInWorkspace(otherExistingProject.findMember(resource.getProjectRelativePath()));
79
		//		}
79
		}
80
	}
80
81
82
	public void internalMoveTest(IResource resource, int moveFlag, boolean moveOk) {
81
		//		try {
83
		//		try {
82
		//			resource.move(otherExistingProject.getFullPath().append(resource.getProjectRelativePath()), copyMoveFlag, getMonitor());
84
		//			resource.move(otherExistingProject.getFullPath().append(resource.getProjectRelativePath()), moveFlag, getMonitor());
83
		//			if (!copyMoveSucceeds)
85
		//			if (!moveOk)
84
		//				fail("1.0");
86
		//				fail("1.0");
85
		//		} catch (CoreException e) {
87
		//		} catch (CoreException e) {
86
		//			if (copyMoveSucceeds)
88
		//			if (moveOk)
87
		//				fail("4.99", e);
89
		//				fail("2.0", e);
88
		//		} finally {
90
		//		} finally {
89
		//			if (otherExistingProject.findMember(resource.getProjectRelativePath()) != null)
91
		//			if (otherExistingProject.findMember(resource.getProjectRelativePath()) != null)
90
		//				ensureDoesNotExistInWorkspace(otherExistingProject.findMember(resource.getProjectRelativePath()));
92
		//				ensureDoesNotExistInWorkspace(otherExistingProject.findMember(resource.getProjectRelativePath()));
Lines 100-138 Link Here
100
			fail("1.0", e);
102
			fail("1.0", e);
101
		}
103
		}
102
104
105
		assertTrue("2.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
106
		internalCopyTest(fileLink, IResource.NONE, false);
107
		internalMoveTest(fileLink, IResource.NONE, false);
108
	}
109
110
	public void testFileLinkedToNonExistent_Deep2() {
111
		IFile fileLink = existingProject.getFile(getUniqueString());
112
		IPath fileLocation = getRandomLocation();
113
		try {
114
			fileLink.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
115
		} catch (CoreException e) {
116
			fail("1.0", e);
117
		}
118
103
		try {
119
		try {
104
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
120
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
105
			fail("1.1");
121
			fail("2.0");
106
		} catch (CoreException e) {
122
		} catch (CoreException e) {
107
			// should fail
123
			// should fail
108
			assertEquals("1.2", IResourceStatus.NOT_FOUND_LOCAL, e.getStatus().getCode());
124
			assertEquals("2.1", IResourceStatus.NOT_FOUND_LOCAL, e.getStatus().getCode());
109
		}
125
		}
110
126
111
		assertTrue("2.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
112
		internalMovedAndCopyTest(fileLink, IResource.NONE, false);
113
114
		createFileInFileSystem(fileLocation);
127
		createFileInFileSystem(fileLocation);
115
128
116
		try {
129
		try {
117
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
130
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
118
			fail("2.1");
131
			fail("3.0");
119
		} catch (CoreException e) {
132
		} catch (CoreException e) {
120
			// should fail
133
			// should fail
121
			assertEquals("2.2", IResourceStatus.OUT_OF_SYNC_LOCAL, e.getStatus().getCode());
134
			assertEquals("3.1", IResourceStatus.OUT_OF_SYNC_LOCAL, e.getStatus().getCode());
122
		}
135
		}
123
136
124
		try {
137
		try {
125
			assertFalse("3.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
138
			assertFalse("4.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
126
			internalMovedAndCopyTest(fileLink, IResource.NONE, false);
139
			internalCopyTest(fileLink, IResource.NONE, false);
140
			internalMoveTest(fileLink, IResource.NONE, false);
141
		} finally {
142
			Workspace.clear(resolve(fileLocation).toFile());
143
		}
144
	}
127
145
146
	public void testFileLinkedToNonExistent_Deep3() {
147
		IFile fileLink = existingProject.getFile(getUniqueString());
148
		IPath fileLocation = getRandomLocation();
149
		try {
150
			fileLink.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
151
		} catch (CoreException e) {
152
			fail("1.0", e);
153
		}
154
155
		createFileInFileSystem(fileLocation);
156
157
		try {
128
			try {
158
			try {
129
				fileLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
159
				fileLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
130
			} catch (CoreException e) {
160
			} catch (CoreException e) {
131
				fail("4.0", e);
161
				fail("2.0", e);
132
			}
162
			}
133
163
134
			assertTrue("5.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
164
			assertTrue("3.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
135
			internalMovedAndCopyTest(fileLink, IResource.NONE, true);
165
			internalCopyTest(fileLink, IResource.NONE, true);
166
			internalMoveTest(fileLink, IResource.NONE, true);
136
		} finally {
167
		} finally {
137
			Workspace.clear(resolve(fileLocation).toFile());
168
			Workspace.clear(resolve(fileLocation).toFile());
138
		}
169
		}
Lines 148-169 Link Here
148
		}
179
		}
149
180
150
		assertTrue("2.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
181
		assertTrue("2.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
151
		internalMovedAndCopyTest(fileLink, IResource.SHALLOW, true);
182
		internalCopyTest(fileLink, IResource.SHALLOW, true);
183
		internalMoveTest(fileLink, IResource.SHALLOW, true);
184
	}
185
186
	public void testFileLinkedToNonExistent_Shallow2() {
187
		IFile fileLink = existingProject.getFile(getUniqueString());
188
		IPath fileLocation = getRandomLocation();
189
		try {
190
			fileLink.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
191
		} catch (CoreException e) {
192
			fail("1.0", e);
193
		}
194
195
		try {
196
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
197
			fail("2.0");
198
		} catch (CoreException e) {
199
			// should fail
200
			assertEquals("2.1", IResourceStatus.NOT_FOUND_LOCAL, e.getStatus().getCode());
201
		}
152
202
153
		createFileInFileSystem(fileLocation);
203
		createFileInFileSystem(fileLocation);
154
204
155
		try {
205
		try {
156
			assertFalse("3.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
206
			fileLink.setContents(new ByteArrayInputStream(getRandomString().getBytes()), IResource.NONE, getMonitor());
157
			internalMovedAndCopyTest(fileLink, IResource.SHALLOW, true);
207
			fail("3.0");
208
		} catch (CoreException e) {
209
			// should fail
210
			assertEquals("3.1", IResourceStatus.OUT_OF_SYNC_LOCAL, e.getStatus().getCode());
211
		}
212
213
		try {
214
			assertFalse("4.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
215
			internalCopyTest(fileLink, IResource.SHALLOW, true);
216
			internalMoveTest(fileLink, IResource.SHALLOW, true);
217
		} finally {
218
			Workspace.clear(resolve(fileLocation).toFile());
219
		}
220
	}
221
222
	public void testFileLinkedToNonExistent_Shallow3() {
223
		IFile fileLink = existingProject.getFile(getUniqueString());
224
		IPath fileLocation = getRandomLocation();
225
		try {
226
			fileLink.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
227
		} catch (CoreException e) {
228
			fail("1.0", e);
229
		}
230
231
		createFileInFileSystem(fileLocation);
158
232
233
		try {
159
			try {
234
			try {
160
				fileLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
235
				fileLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
161
			} catch (CoreException e) {
236
			} catch (CoreException e) {
162
				fail("4.0", e);
237
				fail("2.0", e);
163
			}
238
			}
164
239
165
			assertTrue("5.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
240
			assertTrue("3.0", fileLink.isSynchronized(IResource.DEPTH_INFINITE));
166
			internalMovedAndCopyTest(fileLink, IResource.SHALLOW, true);
241
			internalCopyTest(fileLink, IResource.SHALLOW, true);
242
			internalMoveTest(fileLink, IResource.SHALLOW, true);
167
		} finally {
243
		} finally {
168
			Workspace.clear(resolve(fileLocation).toFile());
244
			Workspace.clear(resolve(fileLocation).toFile());
169
		}
245
		}
Lines 178-206 Link Here
178
			fail("1.0", e);
254
			fail("1.0", e);
179
		}
255
		}
180
256
181
		assertTrue("3.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
257
		assertTrue("2.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
182
		internalMovedAndCopyTest(folderLink, IResource.NONE, false);
258
		internalCopyTest(folderLink, IResource.NONE, true);
183
259
		internalMoveTest(folderLink, IResource.NONE, true);
184
		folderLocation.toFile().mkdir();
260
	}
185
261
262
	public void testFolderLinkedToNonExistent_Deep2() {
263
		IFolder folderLink = existingProject.getFolder(getUniqueString());
264
		IPath folderLocation = getRandomLocation();
186
		try {
265
		try {
187
			assertFalse("3.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
266
			folderLink.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
188
			internalMovedAndCopyTest(folderLink, IResource.NONE, true);
267
		} catch (CoreException e) {
268
			fail("1.0", e);
269
		}
189
270
190
			try {
271
		folderLocation.toFile().mkdir();
191
				folderLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
192
			} catch (CoreException e) {
193
				fail("4.0", e);
194
			}
195
272
196
			assertTrue("5.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
273
		try {
197
			internalMovedAndCopyTest(folderLink, IResource.NONE, true);
274
			assertFalse("2.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
275
			internalCopyTest(folderLink, IResource.NONE, false);
276
			internalMoveTest(folderLink, IResource.NONE, false);
198
		} finally {
277
		} finally {
199
			Workspace.clear(resolve(folderLocation).toFile());
278
			Workspace.clear(resolve(folderLocation).toFile());
200
		}
279
		}
201
	}
280
	}
202
281
203
	public void testFolderLinkedToNonExistent_Shallow() {
282
	public void testFolderLinkedToNonExistent_Deep3() {
204
		IFolder folderLink = existingProject.getFolder(getUniqueString());
283
		IFolder folderLink = existingProject.getFolder(getUniqueString());
205
		IPath folderLocation = getRandomLocation();
284
		IPath folderLocation = getRandomLocation();
206
		try {
285
		try {
Lines 209-322 Link Here
209
			fail("1.0", e);
288
			fail("1.0", e);
210
		}
289
		}
211
290
212
		assertTrue("2.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
213
		internalMovedAndCopyTest(folderLink, IResource.SHALLOW, true);
214
215
		folderLocation.toFile().mkdir();
291
		folderLocation.toFile().mkdir();
216
292
217
		try {
293
		try {
218
			assertFalse("3.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
219
			internalMovedAndCopyTest(folderLink, IResource.SHALLOW, true);
220
221
			try {
294
			try {
222
				folderLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
295
				folderLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
223
			} catch (CoreException e) {
296
			} catch (CoreException e) {
224
				fail("4.0", e);
297
				fail("2.0", e);
225
			}
298
			}
226
299
227
			assertTrue("5.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
300
			assertTrue("3.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
228
			internalMovedAndCopyTest(folderLink, IResource.SHALLOW, true);
301
			internalCopyTest(folderLink, IResource.NONE, true);
302
			internalMoveTest(folderLink, IResource.NONE, true);
229
		} finally {
303
		} finally {
230
			Workspace.clear(resolve(folderLocation).toFile());
304
			Workspace.clear(resolve(folderLocation).toFile());
231
		}
305
		}
232
	}
306
	}
233
307
234
	/**
308
	public void testFolderLinkedToNonExistent_Shallow() {
235
	 * Tests bug 299024.
309
		IFolder folderLink = existingProject.getFolder(getUniqueString());
236
	 */
310
		IPath folderLocation = getRandomLocation();
237
	public void _testMoveFolderWithLinksToNonExisitngLocations_withShallow() {
238
		// create a folder
239
		IFolder folderWithLinks = existingProject.getFolder(getUniqueString());
240
		try {
311
		try {
241
			folderWithLinks.create(true, true, getMonitor());
312
			folderLink.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
242
		} catch (CoreException e) {
313
		} catch (CoreException e) {
243
			fail("1.0", e);
314
			fail("1.0", e);
244
		}
315
		}
245
316
246
		// non-exisitng location
317
		assertTrue("2.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
247
		IPath fileLocation = getRandomLocation();
318
		internalCopyTest(folderLink, IResource.SHALLOW, true);
319
		internalMoveTest(folderLink, IResource.SHALLOW, true);
320
	}
248
321
249
		// create a linked file in the folder
322
	public void testFolderLinkedToNonExistent_Shallow2() {
250
		IFile linkedFile = folderWithLinks.getFile(getUniqueString());
323
		IFolder folderLink = existingProject.getFolder(getUniqueString());
324
		IPath folderLocation = getRandomLocation();
251
		try {
325
		try {
252
			linkedFile.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
326
			folderLink.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
253
		} catch (CoreException e) {
327
		} catch (CoreException e) {
254
			fail("2.0", e);
328
			fail("1.0", e);
255
		}
329
		}
256
330
257
		// move the folder
331
		folderLocation.toFile().mkdir();
258
		try {
259
			folderWithLinks.move(otherExistingProject.getFolder(getUniqueString()).getFullPath(), IResource.SHALLOW, getMonitor());
260
		} catch (CoreException e) {
261
			fail("3.0", e);
262
		}
263
332
264
		// move the folder
265
		try {
333
		try {
266
			folderWithLinks.move(otherExistingProject.getFolder(getUniqueString()).getFullPath(), IResource.NONE, getMonitor());
334
			assertFalse("2.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
267
			fail("3.0");
335
			internalCopyTest(folderLink, IResource.SHALLOW, true);
268
		} catch (CoreException e) {
336
			internalMoveTest(folderLink, IResource.SHALLOW, true);
269
337
		} finally {
338
			Workspace.clear(resolve(folderLocation).toFile());
270
		}
339
		}
271
272
		// both the folder and link in the source project should not exist
273
		assertFalse("5.0", folderWithLinks.exists());
274
		assertFalse("6.0", linkedFile.exists());
275
	}
340
	}
276
341
277
	/**
342
	public void testFolderLinkedToNonExistent_Shallow3() {
278
	 * Tests bug 299024.
343
		IFolder folderLink = existingProject.getFolder(getUniqueString());
279
	 */
344
		IPath folderLocation = getRandomLocation();
280
	public void _testCopyFolderWithLinksToNonExisitngLocations_withShallow() {
281
		// create a folder
282
		IFolder folderWithLinks = existingProject.getFolder(getUniqueString());
283
		try {
345
		try {
284
			folderWithLinks.create(true, true, getMonitor());
346
			folderLink.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
285
		} catch (CoreException e) {
347
		} catch (CoreException e) {
286
			fail("1.0", e);
348
			fail("1.0", e);
287
		}
349
		}
288
350
289
		// non-exisitng location
351
		folderLocation.toFile().mkdir();
290
		IPath fileLocation = getRandomLocation();
291
352
292
		// create a linked file in the folder
293
		IFile linkedFile = folderWithLinks.getFile(getUniqueString());
294
		try {
353
		try {
295
			linkedFile.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
354
			try {
296
		} catch (CoreException e) {
355
				folderLink.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
297
			fail("2.0", e);
356
			} catch (CoreException e) {
298
		}
357
				fail("2.0", e);
358
			}
299
359
300
		// copy the folder
360
			assertTrue("3.0", folderLink.isSynchronized(IResource.DEPTH_INFINITE));
301
		try {
361
			internalCopyTest(folderLink, IResource.SHALLOW, true);
302
			folderWithLinks.copy(otherExistingProject.getFolder(getUniqueString()).getFullPath(), IResource.SHALLOW, getMonitor());
362
			internalMoveTest(folderLink, IResource.SHALLOW, true);
303
		} catch (CoreException e) {
363
		} finally {
304
			fail("3.0", e);
364
			Workspace.clear(resolve(folderLocation).toFile());
305
		}
365
		}
366
	}
306
367
307
		try {
368
	public void testFolderWithFileLinkedToNonExistent_Deep() {
308
			folderWithLinks.copy(otherExistingProject.getFolder(getUniqueString()).getFullPath(), IResource.NONE, getMonitor());
369
		IFolder folder = existingProject.getFolder(getUniqueString());
309
			fail("3.0");
370
		ensureExistsInWorkspace(folder, true);
310
		} catch (CoreException e) {
371
372
		IFile fileLinkInFolder = folder.getFile(getUniqueString());
311
373
374
		IPath fileLocation = getRandomLocation();
375
		try {
376
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
377
		} catch (CoreException e1) {
378
			fail("1.0", e1);
312
		}
379
		}
313
380
314
		// both the folder and link in the source project should exist
381
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
315
		assertTrue("5.0", folderWithLinks.exists());
382
		internalCopyTest(folder, IResource.NONE, false);
316
		assertTrue("6.0", linkedFile.exists());
383
		internalMoveTest(folder, IResource.NONE, false);
317
	}
384
	}
318
385
319
	public void testFolderWithFileLinkedToNonExistent_Deep() {
386
	public void testFolderWithFileLinkedToNonExistent_Deep2() {
320
		IFolder folder = existingProject.getFolder(getUniqueString());
387
		IFolder folder = existingProject.getFolder(getUniqueString());
321
		ensureExistsInWorkspace(folder, true);
388
		ensureExistsInWorkspace(folder, true);
322
389
Lines 326-351 Link Here
326
		try {
393
		try {
327
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
394
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
328
		} catch (CoreException e1) {
395
		} catch (CoreException e1) {
329
			fail("4.99", e1);
396
			fail("1.0", e1);
330
		}
397
		}
331
398
332
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
333
		internalMovedAndCopyTest(folder, IResource.NONE, false);
334
335
		createFileInFileSystem(fileLocation);
399
		createFileInFileSystem(fileLocation);
336
400
337
		try {
401
		try {
338
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
402
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
339
			internalMovedAndCopyTest(folder, IResource.NONE, false);
403
			internalCopyTest(folder, IResource.NONE, false);
404
			internalMoveTest(folder, IResource.NONE, false);
405
		} finally {
406
			Workspace.clear(resolve(fileLocation).toFile());
407
		}
408
	}
340
409
410
	public void testFolderWithFileLinkedToNonExistent_Deep3() {
411
		IFolder folder = existingProject.getFolder(getUniqueString());
412
		ensureExistsInWorkspace(folder, true);
413
414
		IFile fileLinkInFolder = folder.getFile(getUniqueString());
415
416
		IPath fileLocation = getRandomLocation();
417
		try {
418
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
419
		} catch (CoreException e1) {
420
			fail("1.0", e1);
421
		}
422
423
		createFileInFileSystem(fileLocation);
424
425
		try {
341
			try {
426
			try {
342
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
427
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
343
			} catch (CoreException e) {
428
			} catch (CoreException e) {
344
				fail("4.99", e);
429
				fail("2.0", e);
345
			}
430
			}
346
431
347
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
432
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
348
			internalMovedAndCopyTest(folder, IResource.NONE, true);
433
			internalCopyTest(folder, IResource.NONE, true);
434
			internalMoveTest(folder, IResource.NONE, true);
349
		} finally {
435
		} finally {
350
			Workspace.clear(resolve(fileLocation).toFile());
436
			Workspace.clear(resolve(fileLocation).toFile());
351
		}
437
		}
Lines 361-386 Link Here
361
		try {
447
		try {
362
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
448
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
363
		} catch (CoreException e1) {
449
		} catch (CoreException e1) {
364
			fail("4.99", e1);
450
			fail("1.0", e1);
365
		}
451
		}
366
452
367
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
453
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
368
		internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
454
		internalCopyTest(folder, IResource.SHALLOW, true);
455
		internalMoveTest(folder, IResource.SHALLOW, true);
456
	}
457
458
	public void testFolderWithFileLinkedToNonExistent_Shallow2() {
459
		IFolder folder = existingProject.getFolder(getUniqueString());
460
		ensureExistsInWorkspace(folder, true);
461
462
		IFile fileLinkInFolder = folder.getFile(getUniqueString());
463
464
		IPath fileLocation = getRandomLocation();
465
		try {
466
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
467
		} catch (CoreException e1) {
468
			fail("1.0", e1);
469
		}
369
470
370
		createFileInFileSystem(fileLocation);
471
		createFileInFileSystem(fileLocation);
371
472
372
		try {
473
		try {
373
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
474
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
374
			internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
475
			internalCopyTest(folder, IResource.SHALLOW, true);
476
			internalMoveTest(folder, IResource.SHALLOW, true);
477
		} finally {
478
			Workspace.clear(resolve(fileLocation).toFile());
479
		}
480
	}
481
482
	public void testFolderWithFileLinkedToNonExistent_Shallow3() {
483
		IFolder folder = existingProject.getFolder(getUniqueString());
484
		ensureExistsInWorkspace(folder, true);
485
486
		IFile fileLinkInFolder = folder.getFile(getUniqueString());
487
488
		IPath fileLocation = getRandomLocation();
489
		try {
490
			fileLinkInFolder.createLink(fileLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
491
		} catch (CoreException e1) {
492
			fail("1.0", e1);
493
		}
494
495
		createFileInFileSystem(fileLocation);
375
496
497
		try {
376
			try {
498
			try {
377
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
499
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
378
			} catch (CoreException e) {
500
			} catch (CoreException e) {
379
				fail("4.99", e);
501
				fail("2.0", e);
380
			}
502
			}
381
503
382
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
504
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
383
			internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
505
			internalCopyTest(folder, IResource.SHALLOW, true);
506
			internalMoveTest(folder, IResource.SHALLOW, true);
384
		} finally {
507
		} finally {
385
			Workspace.clear(resolve(fileLocation).toFile());
508
			Workspace.clear(resolve(fileLocation).toFile());
386
		}
509
		}
Lines 396-421 Link Here
396
		try {
519
		try {
397
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
520
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
398
		} catch (CoreException e1) {
521
		} catch (CoreException e1) {
399
			fail("4.99", e1);
522
			fail("1.0", e1);
400
		}
523
		}
401
524
402
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
525
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
403
		internalMovedAndCopyTest(folder, IResource.NONE, false);
526
		internalCopyTest(folder, IResource.NONE, true);
527
		internalMoveTest(folder, IResource.NONE, true);
528
	}
529
530
	public void testFolderWithFolderLinkedToNonExistent_Deep2() {
531
		IFolder folder = existingProject.getFolder(getUniqueString());
532
		ensureExistsInWorkspace(folder, true);
533
534
		IFolder folderLinkInFolder = folder.getFolder(getUniqueString());
535
536
		IPath folderLocation = getRandomLocation();
537
		try {
538
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
539
		} catch (CoreException e1) {
540
			fail("1.0", e1);
541
		}
404
542
405
		folderLocation.toFile().mkdir();
543
		folderLocation.toFile().mkdir();
406
544
407
		try {
545
		try {
408
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
546
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
409
			internalMovedAndCopyTest(folder, IResource.NONE, true);
547
			internalCopyTest(folder, IResource.NONE, false);
548
			internalMoveTest(folder, IResource.NONE, false);
549
		} finally {
550
			Workspace.clear(resolve(folderLocation).toFile());
551
		}
552
	}
553
554
	public void testFolderWithFolderLinkedToNonExistent_Deep3() {
555
		IFolder folder = existingProject.getFolder(getUniqueString());
556
		ensureExistsInWorkspace(folder, true);
557
558
		IFolder folderLinkInFolder = folder.getFolder(getUniqueString());
559
560
		IPath folderLocation = getRandomLocation();
561
		try {
562
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
563
		} catch (CoreException e1) {
564
			fail("1.0", e1);
565
		}
566
567
		folderLocation.toFile().mkdir();
410
568
569
		try {
411
			try {
570
			try {
412
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
571
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
413
			} catch (CoreException e) {
572
			} catch (CoreException e) {
414
				fail("4.99", e);
573
				fail("2.0", e);
415
			}
574
			}
416
575
417
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
576
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
418
			internalMovedAndCopyTest(folder, IResource.NONE, true);
577
			internalCopyTest(folder, IResource.NONE, true);
578
			internalMoveTest(folder, IResource.NONE, true);
419
		} finally {
579
		} finally {
420
			Workspace.clear(resolve(folderLocation).toFile());
580
			Workspace.clear(resolve(folderLocation).toFile());
421
		}
581
		}
Lines 431-459 Link Here
431
		try {
591
		try {
432
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
592
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
433
		} catch (CoreException e1) {
593
		} catch (CoreException e1) {
434
			fail("4.99", e1);
594
			fail("1.0", e1);
435
		}
595
		}
436
596
437
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
597
		assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
438
		internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
598
		internalCopyTest(folder, IResource.SHALLOW, true);
599
		internalMoveTest(folder, IResource.SHALLOW, true);
600
	}
601
602
	public void testFolderWithFolderLinkedToNonExistent_Shallow2() {
603
		IFolder folder = existingProject.getFolder(getUniqueString());
604
		ensureExistsInWorkspace(folder, true);
605
606
		IFolder folderLinkInFolder = folder.getFolder(getUniqueString());
607
608
		IPath folderLocation = getRandomLocation();
609
		try {
610
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
611
		} catch (CoreException e1) {
612
			fail("1.0", e1);
613
		}
439
614
440
		folderLocation.toFile().mkdir();
615
		folderLocation.toFile().mkdir();
441
616
442
		try {
617
		try {
443
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
618
			assertFalse(folder.isSynchronized(IResource.DEPTH_INFINITE));
444
			internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
619
			internalCopyTest(folder, IResource.SHALLOW, true);
620
			internalMoveTest(folder, IResource.SHALLOW, true);
621
		} finally {
622
			Workspace.clear(resolve(folderLocation).toFile());
623
		}
624
	}
625
626
	public void testFolderWithFolderLinkedToNonExistent_Shallow3() {
627
		IFolder folder = existingProject.getFolder(getUniqueString());
628
		ensureExistsInWorkspace(folder, true);
629
630
		IFolder folderLinkInFolder = folder.getFolder(getUniqueString());
631
632
		IPath folderLocation = getRandomLocation();
633
		try {
634
			folderLinkInFolder.createLink(folderLocation, IResource.ALLOW_MISSING_LOCAL, getMonitor());
635
		} catch (CoreException e1) {
636
			fail("1.0", e1);
637
		}
445
638
639
		folderLocation.toFile().mkdir();
640
641
		try {
446
			try {
642
			try {
447
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
643
				folder.refreshLocal(IResource.DEPTH_INFINITE, getMonitor());
448
			} catch (CoreException e) {
644
			} catch (CoreException e) {
449
				fail("4.99", e);
645
				fail("2.0", e);
450
			}
646
			}
451
647
452
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
648
			assertTrue(folder.isSynchronized(IResource.DEPTH_INFINITE));
453
			internalMovedAndCopyTest(folder, IResource.SHALLOW, true);
649
			internalCopyTest(folder, IResource.SHALLOW, true);
650
			internalMoveTest(folder, IResource.SHALLOW, true);
454
		} finally {
651
		} finally {
455
			Workspace.clear(resolve(folderLocation).toFile());
652
			Workspace.clear(resolve(folderLocation).toFile());
456
		}
653
		}
457
	}
654
	}
458
459
}
655
}

Return to bug 298870