1
/*******************************************************************************
2
* Copyright (c) 2009 Andrew Gvozdev 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
9
* Andrew Gvozdev - Initial API and implementation
10
*******************************************************************************/
12
package org.eclipse.cdt.core.internal.errorparsers.tests;
14
import java.io.ByteArrayInputStream;
15
import java.util.ArrayList;
17
import junit.framework.Assert;
18
import junit.framework.TestCase;
19
import junit.framework.TestSuite;
21
import org.eclipse.cdt.core.CCorePlugin;
22
import org.eclipse.cdt.core.ErrorParserManager;
23
import org.eclipse.cdt.core.IErrorParser;
24
import org.eclipse.cdt.core.IMarkerGenerator;
25
import org.eclipse.cdt.core.ProblemMarkerInfo;
26
import org.eclipse.cdt.core.errorparsers.AbstractErrorParser;
27
import org.eclipse.cdt.core.errorparsers.ErrorPattern;
28
import org.eclipse.cdt.core.testplugin.CTestPlugin;
29
import org.eclipse.core.internal.registry.ExtensionRegistry;
30
import org.eclipse.core.resources.IFile;
31
import org.eclipse.core.resources.IFolder;
32
import org.eclipse.core.resources.IProject;
33
import org.eclipse.core.resources.IResource;
34
import org.eclipse.core.resources.ResourcesPlugin;
35
import org.eclipse.core.runtime.ContributorFactoryOSGi;
36
import org.eclipse.core.runtime.IContributor;
37
import org.eclipse.core.runtime.IPath;
38
import org.eclipse.core.runtime.Path;
39
import org.eclipse.core.runtime.Platform;
42
* The test case includes a few tests checking that {@link AbstractErrorParser}/{@link ErrorPattern}
43
* properly locate and resolve filenames found in build output.
45
public class ErrorParserFileMatchingTest extends TestCase {
46
private static final String MAKE_ERRORPARSER_ID = "org.eclipse.cdt.core.MakeErrorParser";
47
private String mockErrorParserId = null;
49
private final static String testName = "FindMatchingFilesTest";
51
// Default project gets created once then used by all test cases.
52
private IProject fProject = null;
53
private ArrayList<ProblemMarkerInfo> errorList;
55
private final IMarkerGenerator markerGenerator = new IMarkerGenerator() {
57
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {}
59
public void addMarker(ProblemMarkerInfo problemMarkerInfo) {
60
errorList.add(problemMarkerInfo);
65
* Simple error parser parsing line like "file:line:description"
67
public static class MockErrorParser extends AbstractErrorParser {
69
* Constructor to set the error pattern.
71
public MockErrorParser() {
72
super(new ErrorPattern[] {
73
new ErrorPattern("(.*):(.*):(.*)", 1, 2, 3, 0, IMarkerGenerator.SEVERITY_ERROR_RESOURCE)
81
* @param name - name of the test.
83
public ErrorParserFileMatchingTest(String name) {
89
protected void setUp() throws Exception {
91
fProject = ResourceHelper.createCDTProject(testName);
92
Assert.assertNotNull(fProject);
93
mockErrorParserId = addErrorParserExtension("MockErrorParser", MockErrorParser.class);
95
errorList = new ArrayList<ProblemMarkerInfo>();
99
protected void tearDown() throws Exception {
100
ResourceHelper.cleanUp();
105
* @return - new TestSuite.
107
public static TestSuite suite() {
108
return new TestSuite(ErrorParserFileMatchingTest.class);
112
* main function of the class.
114
* @param args - arguments
116
public static void main(String[] args) {
117
junit.textui.TestRunner.run(suite());
121
* Adds Error Parser extension to the global repository.
122
* Note that this function will "pollute" the working environment and
123
* the error parser will be seen by other test cases as well.
125
* @param shortId - last portion of ID with which error parser will be added.
126
* @param cl - Error Parser class
127
* @return - full ID of the error parser (generated by the method).
129
private static String addErrorParserExtension(String shortId, Class cl) {
130
String ext = "<plugin><extension id=\"" + shortId + "\" name=\"" + shortId
131
+ "\" point=\"org.eclipse.cdt.core.ErrorParser\">" + "<errorparser class=\"" + cl.getName() + "\"/>"
132
+ "</extension></plugin>";
133
IContributor contributor = ContributorFactoryOSGi.createContributor(CTestPlugin.getDefault().getBundle());
134
boolean added = Platform.getExtensionRegistry().addContribution(new ByteArrayInputStream(ext.getBytes()),
135
contributor, false, shortId, null,
136
((ExtensionRegistry) Platform.getExtensionRegistry()).getTemporaryUserToken());
137
assertTrue("failed to add extension", added);
138
String fullId = "org.eclipse.cdt.core.tests." + shortId;
139
IErrorParser[] errorParser = CCorePlugin.getDefault().getErrorParser(fullId);
140
assertTrue(errorParser.length > 0);
145
* Convenience method to let {@link ErrorParserManager} parse one line of output.
146
* This method goes through the whole working cycle every time creating
147
* new {@link ErrorParserManager}.
149
* @param project - for which project to parse output.
150
* @param buildDir - location of build for {@link ErrorParserManager}.
151
* @param errorParsers - error parsers used.
152
* @param line - one line of output.
155
private void parseOutput(IProject project, IPath buildDir, String[] errorParsers, String line) throws Exception {
156
ErrorParserManager epManager = new ErrorParserManager(project, buildDir, markerGenerator, errorParsers);
158
epManager.write(line.getBytes(), 0, line.length());
160
epManager.reportProblems();
164
* Convenience method to parse one line of output.
166
private void parseOutput(IProject project, String buildDir, String line) throws Exception {
167
parseOutput(project, new Path(buildDir), new String[] {mockErrorParserId}, line);
171
* Convenience method to parse one line of output.
172
* Search is done in project location.
174
private void parseOutput(IProject project, String line) throws Exception {
175
parseOutput(project, project.getLocation(), new String[] {mockErrorParserId}, line);
179
* Convenience method to parse one line of output.
180
* Search is done for current project in default location.
182
private void parseOutput(String line) throws Exception {
183
parseOutput(fProject, fProject.getLocation(), new String[] {mockErrorParserId}, line);
187
* Checks if a file from error output can be found.
188
* @throws Exception...
190
public void testSingle() throws Exception {
191
ResourceHelper.createFile(fProject, "testSingle.c");
193
parseOutput("testSingle.c:1:error");
194
assertEquals(1, errorList.size());
196
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
197
assertEquals("L/FindMatchingFilesTest/testSingle.c",problemMarkerInfo.file.toString());
198
assertEquals(1,problemMarkerInfo.lineNumber);
199
assertEquals("error",problemMarkerInfo.description);
203
* Checks that no false positive for missing file generated.
204
* @throws Exception...
206
public void testMissing() throws Exception {
208
parseOutput("testMissing.c:1:error");
209
assertEquals(1, errorList.size());
211
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
213
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
214
assertEquals(1,problemMarkerInfo.lineNumber);
215
assertEquals("error",problemMarkerInfo.description);
216
assertEquals(new Path("testMissing.c"),problemMarkerInfo.externalPath);
220
* Checks if duplicate files give ambiguous match.
221
* @throws Exception...
223
public void testDuplicate() throws Exception {
224
ResourceHelper.createFolder(fProject, "FolderA");
225
ResourceHelper.createFile(fProject, "FolderA/testDuplicate.c");
227
ResourceHelper.createFolder(fProject, "FolderB");
228
ResourceHelper.createFile(fProject, "FolderB/testDuplicate.c");
230
parseOutput("testDuplicate.c:1:error");
231
assertEquals(1, errorList.size());
233
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
235
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
236
assertEquals("error",problemMarkerInfo.description);
237
assertEquals(new Path("testDuplicate.c"),problemMarkerInfo.externalPath);
241
* Checks if a file from error output can be found.
242
* @throws Exception...
244
public void testInFolder() throws Exception {
245
ResourceHelper.createFolder(fProject, "Folder");
246
ResourceHelper.createFile(fProject, "Folder/testInFolder.c");
248
parseOutput("testInFolder.c:1:error");
249
assertEquals(1, errorList.size());
251
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
252
assertEquals("L/FindMatchingFilesTest/Folder/testInFolder.c",problemMarkerInfo.file.toString());
253
assertEquals("error",problemMarkerInfo.description);
257
* Checks if a file from error output can be found.
258
* @throws Exception...
260
public void testDuplicateInRoot() throws Exception {
261
ResourceHelper.createFile(fProject, "testDuplicateInRoot.c");
263
ResourceHelper.createFolder(fProject, "Folder");
264
ResourceHelper.createFile(fProject, "Folder/testDuplicateInRoot.c");
266
// Resolved to the file in root folder
267
parseOutput("testDuplicateInRoot.c:1:error");
268
assertEquals(1, errorList.size());
270
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
271
assertEquals(1,problemMarkerInfo.lineNumber);
272
assertEquals("L/FindMatchingFilesTest/testDuplicateInRoot.c",problemMarkerInfo.file.toString());
273
assertEquals("error",problemMarkerInfo.description);
277
* Checks if a file from error output can be found.
278
* @throws Exception...
280
public void testLinkedFile() throws Exception {
281
ResourceHelper.createWorkspaceFolder("OutsideFolder");
282
IPath realFile = ResourceHelper.createWorkspaceFile("OutsideFolder/testLinkedFile.c");
283
ResourceHelper.createFolder(fProject, "Folder");
284
ResourceHelper.createLinkedFile(fProject, "Folder/testLinkedFile.c", realFile);
286
parseOutput("testLinkedFile.c:1:error");
287
assertEquals(1, errorList.size());
289
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
290
assertEquals("L/FindMatchingFilesTest/Folder/testLinkedFile.c",problemMarkerInfo.file.toString());
291
assertEquals("error",problemMarkerInfo.description);
295
* Checks if a file from error output can be found.
296
* @throws Exception...
298
public void testLinkedFileWithDifferentName() throws Exception {
299
ResourceHelper.createWorkspaceFolder("OutsideFolder");
300
IPath realFile = ResourceHelper.createWorkspaceFile("OutsideFolder/RealFileWithDifferentName.c");
301
ResourceHelper.createFolder(fProject, "Folder");
302
ResourceHelper.createLinkedFile(fProject, "Folder/testLinkedFileWithDifferentName.c", realFile);
304
parseOutput("RealFileWithDifferentName.c:1:error");
305
assertEquals(1, errorList.size());
307
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
308
assertEquals("L/FindMatchingFilesTest/Folder/testLinkedFileWithDifferentName.c",problemMarkerInfo.file.toString());
309
assertEquals("error",problemMarkerInfo.description);
313
* Checks if a file from error output can be found.
314
* @throws Exception...
316
public void testDuplicateLinkedFile() throws Exception {
317
ResourceHelper.createWorkspaceFolder("OutsideFolderA");
318
ResourceHelper.createWorkspaceFolder("OutsideFolderB");
319
IPath fileA = ResourceHelper.createWorkspaceFile("OutsideFolderA/testDuplicateLinkedFile.c");
320
IPath fileB = ResourceHelper.createWorkspaceFile("OutsideFolderB/testDuplicateLinkedFile.c");
322
ResourceHelper.createFolder(fProject, "FolderA");
323
ResourceHelper.createLinkedFile(fProject, "FolderA/DuplicateLinkedFileA.c", fileA);
324
ResourceHelper.createFolder(fProject, "FolderB");
325
ResourceHelper.createLinkedFile(fProject, "FolderB/DuplicateLinkedFileB.c", fileB);
327
parseOutput("testDuplicateLinkedFile.c:1:error");
328
assertEquals(1, errorList.size());
330
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
332
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
333
assertEquals("error",problemMarkerInfo.description);
334
assertEquals(new Path("testDuplicateLinkedFile.c"),problemMarkerInfo.externalPath);
338
* Checks if a file from error output can be found.
339
* @throws Exception...
341
public void testDuplicateLinkedFileDifferentName() throws Exception {
342
ResourceHelper.createWorkspaceFolder("OutsideFolderA");
343
ResourceHelper.createWorkspaceFolder("OutsideFolderB");
344
IPath fileA = ResourceHelper.createWorkspaceFile("OutsideFolderA/testDuplicateLinkedFileDifferentName.c");
345
IPath fileB = ResourceHelper.createWorkspaceFile("OutsideFolderB/testDuplicateLinkedFileDifferentName.c");
346
ResourceHelper.createFolder(fProject, "FolderA");
347
ResourceHelper.createLinkedFile(fProject, "FolderA/DuplicateLinkedFileA.c", fileA);
348
ResourceHelper.createFolder(fProject, "FolderB");
349
ResourceHelper.createLinkedFile(fProject, "FolderB/DuplicateLinkedFileB.c", fileB);
351
parseOutput("testDuplicateLinkedFileDifferentName.c:1:error");
352
assertEquals(1, errorList.size());
354
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
356
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
357
assertEquals("error",problemMarkerInfo.description);
358
assertEquals(new Path("testDuplicateLinkedFileDifferentName.c"),problemMarkerInfo.externalPath);
362
* Checks if a file from error output can be found.
363
* @throws Exception...
365
public void testInLinkedFolder() throws Exception {
366
IPath outsideFolder = ResourceHelper.createWorkspaceFolder("OutsideFolder");
367
ResourceHelper.createWorkspaceFile("OutsideFolder/testInLinkedFolder.c");
368
ResourceHelper.createLinkedFolder(fProject, "LinkedFolder", outsideFolder);
370
parseOutput("testInLinkedFolder.c:1:error");
371
assertEquals(1, errorList.size());
373
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
374
assertEquals("L/FindMatchingFilesTest/LinkedFolder/testInLinkedFolder.c",problemMarkerInfo.file.toString());
375
assertEquals("error",problemMarkerInfo.description);
379
* Checks if a file from error output can be found.
380
* @throws Exception...
382
public void testDuplicateInLinkedFolder() throws Exception {
383
IPath folderA = ResourceHelper.createWorkspaceFolder("OutsideFolderA");
384
ResourceHelper.createWorkspaceFile("OutsideFolderA/testDuplicateInLinkedFolder.c");
385
IPath folderB = ResourceHelper.createWorkspaceFolder("OutsideFolderB");
386
ResourceHelper.createWorkspaceFile("OutsideFolderB/testDuplicateInLinkedFolder.c");
388
ResourceHelper.createLinkedFolder(fProject, "LinkedFolderA", folderA);
389
ResourceHelper.createLinkedFolder(fProject, "LinkedFolderB", folderB);
391
parseOutput("testDuplicateInLinkedFolder.c:1:error");
392
assertEquals(1, errorList.size());
394
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
396
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
397
assertEquals("error",problemMarkerInfo.description);
398
assertEquals(new Path("testDuplicateInLinkedFolder.c"),problemMarkerInfo.externalPath);
402
* Checks if a file from error output can be found.
403
* @throws Exception...
405
public void testLinkedFolderInAnotherProject() throws Exception {
406
ResourceHelper.createFolder(fProject,"Folder");
407
ResourceHelper.createFile(fProject,"Folder/testLinkedFolderInAnotherProject.c");
409
IProject anotherProject = ResourceHelper.createCDTProject("AnotherProjectWithLinkedFolder");
410
ResourceHelper.createLinkedFolder(anotherProject, "LinkedFolder", fProject.getLocation()+"/Folder");
413
parseOutput(fProject, "testLinkedFolderInAnotherProject.c:1:error");
414
assertEquals(1, errorList.size());
416
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
417
assertEquals("L/FindMatchingFilesTest/Folder/testLinkedFolderInAnotherProject.c",problemMarkerInfo.file.toString());
418
assertEquals("error",problemMarkerInfo.description);
422
parseOutput(anotherProject, "testLinkedFolderInAnotherProject.c:1:error");
423
assertEquals(2, errorList.size());
425
ProblemMarkerInfo problemMarkerInfo = errorList.get(1);
426
assertEquals("L/AnotherProjectWithLinkedFolder/LinkedFolder/testLinkedFolderInAnotherProject.c",problemMarkerInfo.file.toString());
427
assertEquals("error",problemMarkerInfo.description);
432
* Checks if a file from error output can be found.
433
* @throws Exception...
435
public void testSymbolicLink() throws Exception {
436
ResourceHelper.createWorkspaceFolder("OutsideFolder");
437
IPath realFile = ResourceHelper.createWorkspaceFile("OutsideFolder/RealFile.c");
440
ResourceHelper.createFolder(fProject,"Folder");
441
ResourceHelper.createSymbolicLink(fProject, "Folder/testSymbolicLink.c", realFile);
442
} catch (UnsupportedOperationException e) {
443
// Do not run the test on Windows system where links are not supported.
447
parseOutput("testSymbolicLink.c:1:error");
448
assertEquals(1, errorList.size());
450
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
451
assertEquals("L/FindMatchingFilesTest/Folder/testSymbolicLink.c",problemMarkerInfo.file.toString());
452
assertEquals("error",problemMarkerInfo.description);
456
* Checks if a file from error output can be found.
457
* @throws Exception...
459
public void testDuplicateSymbolicLink() throws Exception {
460
ResourceHelper.createWorkspaceFolder("OutsideFolder");
461
IPath realFile = ResourceHelper.createWorkspaceFile("OutsideFolder/RealFile.c");
464
ResourceHelper.createFolder(fProject,"FolderA");
465
ResourceHelper.createSymbolicLink(fProject, "FolderA/testDuplicateSymbolicLink.c", realFile);
467
ResourceHelper.createFolder(fProject,"FolderB");
468
ResourceHelper.createSymbolicLink(fProject, "FolderB/testDuplicateSymbolicLink.c", realFile);
469
} catch (UnsupportedOperationException e) {
470
// Do not run the test on Windows system where links are not supported.
474
parseOutput("testDuplicateSymbolicLink.c:1:error");
475
assertEquals(1, errorList.size());
477
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
479
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
480
assertEquals(new Path("testDuplicateSymbolicLink.c"),problemMarkerInfo.externalPath);
481
assertEquals("error",problemMarkerInfo.description);
485
* Checks if a file from error output can be found.
486
* @throws Exception...
488
public void testFolderSymbolicLink() throws Exception {
489
IPath realFolder = ResourceHelper.createWorkspaceFolder("OutsideFolderForSymbolicLink");
490
ResourceHelper.createWorkspaceFile("OutsideFolderForSymbolicLink/testFolderSymbolicLink.c");
493
ResourceHelper.createSymbolicLink(fProject, "FolderSymbolicLink", realFolder);
494
} catch (UnsupportedOperationException e) {
495
// Do not run the test on Windows system where links are not supported.
499
parseOutput("testFolderSymbolicLink.c:1:error");
500
assertEquals(1, errorList.size());
502
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
503
assertEquals("L/FindMatchingFilesTest/FolderSymbolicLink/testFolderSymbolicLink.c",problemMarkerInfo.file.toString());
504
assertEquals("error",problemMarkerInfo.description);
508
* Checks if a file from error output can be found.
509
* @throws Exception...
511
public void testDuplicateFolderSymbolicLink() throws Exception {
512
IPath realFolder = ResourceHelper.createWorkspaceFolder("OutsideFolder");
513
ResourceHelper.createWorkspaceFile("OutsideFolder/testDuplicateFolderSymbolicLink.c");
516
ResourceHelper.createSymbolicLink(fProject, "FolderSymbolicLinkA", realFolder);
517
ResourceHelper.createSymbolicLink(fProject, "FolderSymbolicLinkB", realFolder);
518
} catch (UnsupportedOperationException e) {
519
// Do not run the test on Windows system where links are not supported.
523
parseOutput("testDuplicateFolderSymbolicLink.c:1:error");
524
assertEquals(1, errorList.size());
526
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
528
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
529
assertEquals(new Path("testDuplicateFolderSymbolicLink.c"),problemMarkerInfo.externalPath);
530
assertEquals("error",problemMarkerInfo.description);
534
* Checks if a file from error output can be found.
535
* @throws Exception...
537
public void testAbsolutePathSingle() throws Exception {
538
ResourceHelper.createFile(fProject, "testAbsolutePathSingle.c");
539
String fullName = fProject.getLocation().append("testAbsolutePathSingle.c").toOSString();
541
parseOutput(fullName+":1:error");
542
assertEquals(1, errorList.size());
544
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
545
assertEquals("L/FindMatchingFilesTest/testAbsolutePathSingle.c",problemMarkerInfo.file.toString());
546
assertEquals(1,problemMarkerInfo.lineNumber);
547
assertEquals("error",problemMarkerInfo.description);
551
* Checks if a file from error output can be found.
552
* @throws Exception...
554
public void testAbsolutePathInOtherProject() throws Exception {
555
IProject anotherProject = ResourceHelper.createCDTProject("ProjectAbsolutePathInOtherProject");
556
ResourceHelper.createFile(anotherProject, "testAbsolutePathInOtherProject.c");
557
String fullName = anotherProject.getLocation().append("testAbsolutePathInOtherProject.c").toOSString();
559
parseOutput(fullName+":1:error");
560
assertEquals(1, errorList.size());
562
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
563
assertEquals("L/ProjectAbsolutePathInOtherProject/testAbsolutePathInOtherProject.c",problemMarkerInfo.file.toString());
564
assertEquals(1,problemMarkerInfo.lineNumber);
565
assertEquals("error",problemMarkerInfo.description);
569
* Checks if a file from error output can be found.
570
* @throws Exception...
572
public void testAbsolutePathOutsideWorkspace() throws Exception {
574
ResourceHelper.createWorkspaceFolder("OutsideFolder");
575
IPath outsideFile = ResourceHelper.createWorkspaceFile("OutsideFolder/testAbsolutePathOutsideWorkspace.c");
577
String fullName = ResourcesPlugin.getWorkspace().getRoot().getLocation()
578
.append("OutsideFolder/testAbsolutePathOutsideWorkspace.c").toOSString();
580
parseOutput(fullName+":1:error");
581
assertEquals(1, errorList.size());
583
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
584
// Can't assign marker to non-IResource
585
assertEquals(1,problemMarkerInfo.lineNumber);
586
assertEquals("error",problemMarkerInfo.description);
587
assertEquals(outsideFile, problemMarkerInfo.externalPath);
591
* Checks if a file from error output can be found.
592
* @throws Exception...
594
public void testRelativePathFromProjectRoot() throws Exception {
595
ResourceHelper.createFolder(fProject, "Folder");
596
ResourceHelper.createFile(fProject, "Folder/testRelativePathFromProjectRoot.c");
598
parseOutput("Folder/testRelativePathFromProjectRoot.c:1:error");
599
assertEquals(1, errorList.size());
601
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
602
assertEquals("L/FindMatchingFilesTest/Folder/testRelativePathFromProjectRoot.c",problemMarkerInfo.file.toString());
603
assertEquals(1,problemMarkerInfo.lineNumber);
604
assertEquals("error",problemMarkerInfo.description);
608
* Checks if a file from error output can be found.
609
* @throws Exception...
611
public void testRelativePathFromSubfolder() throws Exception {
612
ResourceHelper.createFolder(fProject, "Folder");
613
ResourceHelper.createFolder(fProject, "Folder/SubFolder");
614
ResourceHelper.createFile(fProject, "Folder/SubFolder/testRelativePathFromSubfolder.c");
616
parseOutput("SubFolder/testRelativePathFromSubfolder.c:1:error");
617
assertEquals(1, errorList.size());
619
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
620
assertEquals("L/FindMatchingFilesTest/Folder/SubFolder/testRelativePathFromSubfolder.c",problemMarkerInfo.file.toString());
621
assertEquals(1,problemMarkerInfo.lineNumber);
622
assertEquals("error",problemMarkerInfo.description);
626
* Checks if a file from error output can be found.
627
* @throws Exception...
629
public void testRelativePathNotMatchingFolder() throws Exception {
630
ResourceHelper.createFolder(fProject, "Folder");
631
ResourceHelper.createFile(fProject, "Folder/testRelativePathNotMatchingFolder.c");
633
parseOutput("NotMatchingFolder/testRelativePathNotMatchingFolder.c:1:error");
634
assertEquals(1, errorList.size());
636
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
638
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
639
assertEquals(1,problemMarkerInfo.lineNumber);
640
assertEquals("error",problemMarkerInfo.description);
641
assertEquals(new Path("NotMatchingFolder/testRelativePathNotMatchingFolder.c"),problemMarkerInfo.externalPath);
645
* Checks if a file from error output can be found.
646
* @throws Exception...
648
public void testRelativePathDuplicate() throws Exception {
649
ResourceHelper.createFolder(fProject, "SubfolderA");
650
ResourceHelper.createFolder(fProject, "SubfolderA/Folder");
651
ResourceHelper.createFile(fProject, "SubfolderA/Folder/testRelativePathDuplicate.c");
652
ResourceHelper.createFolder(fProject, "SubfolderB");
653
ResourceHelper.createFolder(fProject, "SubfolderB/Folder");
654
ResourceHelper.createFile(fProject, "SubfolderB/Folder/testRelativePathDuplicate.c");
656
parseOutput("Folder/testRelativePathDuplicate.c:1:error");
657
assertEquals(1, errorList.size());
659
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
661
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
662
assertEquals(1,problemMarkerInfo.lineNumber);
663
assertEquals("error",problemMarkerInfo.description);
664
assertEquals(new Path("Folder/testRelativePathDuplicate.c"),problemMarkerInfo.externalPath);
668
* Checks if a file from error output can be found.
669
* @throws Exception...
671
public void testRelativePathUp() throws Exception {
672
ResourceHelper.createFile(fProject, "testRelativePathUp.c");
674
parseOutput("../FindMatchingFilesTest/testRelativePathUp.c:1:error");
675
assertEquals(1, errorList.size());
677
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
678
assertEquals("L/FindMatchingFilesTest/testRelativePathUp.c",problemMarkerInfo.file.toString());
679
assertEquals(1,problemMarkerInfo.lineNumber);
680
assertEquals("error",problemMarkerInfo.description);
684
* Checks if a file from error output can be found.
685
* @throws Exception...
687
public void testRelativePathUpSubfolderBug262988() throws Exception {
688
ResourceHelper.createFolder(fProject, "Folder");
689
ResourceHelper.createFile(fProject, "Folder/testRelativePathUpSubfolder.c");
691
parseOutput("../Folder/testRelativePathUpSubfolder.c:1:error");
692
assertEquals(1, errorList.size());
694
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
695
assertEquals("L/FindMatchingFilesTest/Folder/testRelativePathUpSubfolder.c",problemMarkerInfo.file.toString());
696
assertEquals(1,problemMarkerInfo.lineNumber);
697
assertEquals("error",problemMarkerInfo.description);
701
* Checks if a file from error output can be found.
702
* @throws Exception...
704
public void testRelativePathUpOtherProject() throws Exception {
705
IProject anotherProject = ResourceHelper.createCDTProject("AnotherProject");
706
ResourceHelper.createFile(anotherProject, "testRelativePathUpOtherProject.c");
708
parseOutput("../AnotherProject/testRelativePathUpOtherProject.c:1:error");
709
assertEquals(1, errorList.size());
711
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
712
assertEquals("L/AnotherProject/testRelativePathUpOtherProject.c",problemMarkerInfo.file.toString());
713
assertEquals(1,problemMarkerInfo.lineNumber);
714
assertEquals("error",problemMarkerInfo.description);
718
* Checks if a file from error output can be found.
719
* @throws Exception...
721
public void testRelativePathUpDuplicate() throws Exception {
722
ResourceHelper.createFolder(fProject, "FolderA/SubFolder");
723
ResourceHelper.createFolder(fProject, "FolderB/SubFolder");
724
ResourceHelper.createFile(fProject, "FolderA/SubFolder/testRelativePathUpDuplicate.c");
725
ResourceHelper.createFile(fProject, "FolderB/SubFolder/testRelativePathUpDuplicate.c");
727
parseOutput("../SubFolder/testRelativePathUpDuplicate.c:1:error");
728
assertEquals(1, errorList.size());
730
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
732
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
733
assertEquals(1,problemMarkerInfo.lineNumber);
734
assertEquals("error",problemMarkerInfo.description);
735
assertEquals(new Path("../SubFolder/testRelativePathUpDuplicate.c"),problemMarkerInfo.externalPath);
739
* Checks if a file from error output can be found.
740
* @throws Exception...
742
public void testRelativePathDotFromProjectRoot() throws Exception {
743
ResourceHelper.createFolder(fProject, "Folder");
744
ResourceHelper.createFile(fProject, "Folder/testRelativePathDotFromProjectRoot.c");
746
parseOutput("./Folder/testRelativePathDotFromProjectRoot.c:1:error");
747
assertEquals(1, errorList.size());
749
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
750
assertEquals("L/FindMatchingFilesTest/Folder/testRelativePathDotFromProjectRoot.c",problemMarkerInfo.file.toString());
751
assertEquals(1,problemMarkerInfo.lineNumber);
752
assertEquals("error",problemMarkerInfo.description);
756
* Checks if a file from error output can be found.
757
* @throws Exception...
759
public void testRelativePathDotFromSubfolder() throws Exception {
760
ResourceHelper.createFolder(fProject, "Subfolder");
761
ResourceHelper.createFolder(fProject, "Subfolder/Folder");
762
ResourceHelper.createFile(fProject, "Subfolder/Folder/testRelativePathDotFromSubfolder.c");
764
parseOutput("./Folder/testRelativePathDotFromSubfolder.c:1:error");
765
assertEquals(1, errorList.size());
767
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
768
assertEquals("L/FindMatchingFilesTest/Subfolder/Folder/testRelativePathDotFromSubfolder.c",problemMarkerInfo.file.toString());
769
assertEquals(1,problemMarkerInfo.lineNumber);
770
assertEquals("error",problemMarkerInfo.description);
774
* Checks if a file from error output can be found.
775
* @throws Exception...
777
public void testRelativePathDotNotMatchingFolder() throws Exception {
778
ResourceHelper.createFolder(fProject, "Folder");
779
ResourceHelper.createFile(fProject, "Subfolder/Folder/testRelativePathDotNotMatchingFolder.c");
781
parseOutput("./NotMatchingFolder/testRelativePathDotNotMatchingFolder.c:1:error");
782
assertEquals(1, errorList.size());
784
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
786
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
787
assertEquals(1,problemMarkerInfo.lineNumber);
788
assertEquals("error",problemMarkerInfo.description);
789
assertEquals(new Path("./NotMatchingFolder/testRelativePathDotNotMatchingFolder.c"),problemMarkerInfo.externalPath);
793
* Checks if a file from error output can be found.
794
* @throws Exception...
796
public void testRelativePathDotDuplicate() throws Exception {
797
ResourceHelper.createFolder(fProject, "SubfolderA");
798
ResourceHelper.createFolder(fProject, "SubfolderA/Folder");
799
ResourceHelper.createFile(fProject, "SubfolderA/Folder/testRelativePathDotDuplicate.c");
801
ResourceHelper.createFolder(fProject, "SubfolderB");
802
ResourceHelper.createFolder(fProject, "SubfolderB/Folder");
803
ResourceHelper.createFile(fProject, "SubfolderB/Folder/testRelativePathDotDuplicate.c");
805
parseOutput("./Folder/testRelativePathDotDuplicate.c:1:error");
806
assertEquals(1, errorList.size());
808
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
810
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
811
assertEquals(1,problemMarkerInfo.lineNumber);
812
assertEquals("error",problemMarkerInfo.description);
813
assertEquals(new Path("./Folder/testRelativePathDotDuplicate.c"),problemMarkerInfo.externalPath);
818
* Checks if a file from error output can be found.
819
* @throws Exception...
821
public void testUppercase1() throws Exception {
822
if (!Platform.getOS().equals(Platform.OS_WIN32)) {
823
// This test is valid on Windows platform only
826
// Note that old MSDOS can handle only 8 characters in file name
827
ResourceHelper.createFile(fProject, "upcase1.c");
829
parseOutput("UPCASE1.c:1:error");
830
assertEquals(1, errorList.size());
832
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
833
assertEquals("L/FindMatchingFilesTest/upcase1.c",problemMarkerInfo.file.toString());
834
assertEquals(1,problemMarkerInfo.lineNumber);
835
assertEquals("error",problemMarkerInfo.description);
839
* Checks if a file from error output can be found.
840
* @throws Exception...
842
public void testUppercase2InSubFolder() throws Exception {
843
// Note that old MSDOS can handle only 8 characters in file name
844
ResourceHelper.createFolder(fProject, "Folder");
845
ResourceHelper.createFile(fProject, "Folder/UPCASE2.c");
847
parseOutput("UpCase2.c:1:error");
848
assertEquals(1, errorList.size());
850
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
851
assertEquals("L/FindMatchingFilesTest/Folder/UPCASE2.c",problemMarkerInfo.file.toString());
852
assertEquals(1,problemMarkerInfo.lineNumber);
853
assertEquals("error",problemMarkerInfo.description);
857
* Checks if a file from error output can be found.
858
* @throws Exception...
860
public void testUppercase3ResolveCase() throws Exception {
861
// Note that old MSDOS can handle only 8 characters in file name
862
ResourceHelper.createFolder(fProject, "FolderA");
863
ResourceHelper.createFolder(fProject, "FolderB");
864
ResourceHelper.createFile(fProject, "FolderA/UPCASE3.c");
865
ResourceHelper.createFile(fProject, "FolderB/UpCase3.c");
867
parseOutput("UpCase3.c:1:error");
868
assertEquals(1, errorList.size());
870
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
871
assertEquals("L/FindMatchingFilesTest/FolderB/UpCase3.c",problemMarkerInfo.file.toString());
872
assertEquals(1,problemMarkerInfo.lineNumber);
873
assertEquals("error",problemMarkerInfo.description);
877
* Checks if a file from error output can be found.
878
* @throws Exception...
880
public void testUppercase4Duplicate() throws Exception {
881
// Note that old MSDOS can handle only 8 characters in file name
882
ResourceHelper.createFolder(fProject, "FolderA");
883
ResourceHelper.createFolder(fProject, "FolderB");
884
ResourceHelper.createFile(fProject, "FolderA/UPCASE4.c");
885
ResourceHelper.createFile(fProject, "FolderB/upcase4.c");
887
parseOutput("UpCase4.c:1:error");
888
assertEquals(1, errorList.size());
890
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
892
assertEquals("P/FindMatchingFilesTest",problemMarkerInfo.file.toString());
893
assertEquals(1,problemMarkerInfo.lineNumber);
894
assertEquals("error",problemMarkerInfo.description);
895
assertEquals(new Path("UpCase4.c"),problemMarkerInfo.externalPath);
899
* Checks if a file from error output can be found.
900
* @throws Exception...
902
public void testCygwinCygdrive() throws Exception {
903
String fileName = "testCygwinCygdrive.c";
904
String windowsFileName = fProject.getLocation().append(fileName).toOSString();
905
String cygwinFileName;
907
cygwinFileName = ResourceHelper.windowsToCygwinPath(windowsFileName);
908
} catch (UnsupportedOperationException e) {
909
// Skip the test if Cygwin is not available.
912
assertTrue("cygwinFileName=["+cygwinFileName+"]", cygwinFileName.startsWith("/cygdrive/"));
914
ResourceHelper.createFile(fProject, fileName);
916
parseOutput(cygwinFileName+":1:error");
917
assertEquals(1, errorList.size());
919
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
920
assertEquals("L/FindMatchingFilesTest/"+fileName,problemMarkerInfo.file.toString());
921
assertEquals(1,problemMarkerInfo.lineNumber);
922
assertEquals("error",problemMarkerInfo.description);
926
* Checks if a file from error output can be found.
927
* @throws Exception...
929
public void testCygwinUsrUnclude() throws Exception {
930
String cygwinFolder = "/usr/include/";
931
String fileName = "stdio.h";
933
String usrIncludeWindowsPath;
935
usrIncludeWindowsPath = ResourceHelper.cygwinToWindowsPath(cygwinFolder);
936
} catch (UnsupportedOperationException e) {
937
// Skip the test if Cygwin is not available.
940
assertTrue("usrIncludeWindowsPath=["+usrIncludeWindowsPath+"]",
941
usrIncludeWindowsPath.charAt(1)==IPath.DEVICE_SEPARATOR);
943
ResourceHelper.createLinkedFolder(fProject, "include", usrIncludeWindowsPath);
945
parseOutput(cygwinFolder+fileName+":1:error");
946
assertEquals(1, errorList.size());
948
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
949
assertEquals("L/FindMatchingFilesTest/include/"+fileName,problemMarkerInfo.file.toString());
950
assertEquals(1,problemMarkerInfo.lineNumber);
951
assertEquals("error",problemMarkerInfo.description);
955
* Checks if a file from error output can be found.
956
* @throws Exception...
958
public void testCygwinAnotherProject() throws Exception {
959
String fileName = "testCygwinAnotherProject.c";
960
IProject anotherProject = ResourceHelper.createCDTProject("AnotherProject");
962
String windowsFileName = anotherProject.getLocation().append(fileName).toOSString();
963
String cygwinFileName;
965
cygwinFileName = ResourceHelper.windowsToCygwinPath(windowsFileName);
966
} catch (UnsupportedOperationException e) {
967
// Skip the test if Cygwin is not available.
970
assertTrue("cygwinFileName=["+cygwinFileName+"]", cygwinFileName.startsWith("/cygdrive/"));
972
ResourceHelper.createFile(anotherProject, fileName);
974
parseOutput(cygwinFileName+":1:error");
975
assertEquals(1, errorList.size());
977
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
978
assertEquals("L/AnotherProject/"+fileName,problemMarkerInfo.file.toString());
979
assertEquals(1,problemMarkerInfo.lineNumber);
980
assertEquals("error",problemMarkerInfo.description);
984
* Checks if a file from error output can be found.
985
* @throws Exception...
987
public void testCustomProjectLocation() throws Exception {
988
ResourceHelper.createWorkspaceFolder("Custom");
989
ResourceHelper.createWorkspaceFolder("Custom/ProjectLocation");
990
IProject anotherProject = ResourceHelper.createCDTProject("AnotherProject", "Custom/ProjectLocation");
992
ResourceHelper.createFolder(anotherProject, "Folder");
993
ResourceHelper.createFile(anotherProject, "Folder/testCustomProjectLocation.c");
995
parseOutput(anotherProject, "testCustomProjectLocation.c:1:error");
996
assertEquals(1, errorList.size());
998
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
999
assertEquals("L/AnotherProject/Folder/testCustomProjectLocation.c",problemMarkerInfo.file.toString());
1000
assertEquals(1,problemMarkerInfo.lineNumber);
1001
assertEquals("error",problemMarkerInfo.description);
1005
* Checks if a file from error output can be found.
1007
* @throws Exception...
1009
public void testCygwinAndMakeErrorParserBug270772() throws Exception {
1010
String fileName = "testCygwinAndMakeErrorParser.c";
1011
String windowsFileName = fProject.getLocation().append(fileName).toOSString();
1012
String cygwinFileName;
1014
cygwinFileName = ResourceHelper.windowsToCygwinPath(windowsFileName);
1015
} catch (UnsupportedOperationException e) {
1016
// Skip the test if Cygwin is not available.
1019
assertTrue("cygwinFileName=["+cygwinFileName+"]", cygwinFileName.startsWith("/cygdrive/"));
1021
ResourceHelper.createFile(fProject, fileName);
1023
String lines = "make[0]: Entering directory `dir'\n"
1024
+ cygwinFileName+":1:error\n";
1026
String[] errorParsers = {MAKE_ERRORPARSER_ID, mockErrorParserId };
1027
parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
1028
assertEquals(1, errorList.size());
1030
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1031
assertEquals("L/FindMatchingFilesTest/"+fileName,problemMarkerInfo.file.toString());
1032
assertEquals(1,problemMarkerInfo.lineNumber);
1033
assertEquals("error",problemMarkerInfo.description);
1037
* Checks if a file from error output can be found.
1038
* @throws Exception...
1040
public void testInNestedProject() throws Exception {
1041
ResourceHelper.createFolder(fProject, "NestedProjectFolder");
1042
IProject nestedProject = ResourceHelper.createCDTProject("NestedProject", "FindMatchingFilesTest/NestedProject");
1044
ResourceHelper.createFolder(nestedProject, "Folder");
1045
ResourceHelper.createFile(nestedProject, "Folder/testInNestedProject.c");
1048
parseOutput(fProject, "testInNestedProject.c:1:error");
1049
assertEquals(1, errorList.size());
1051
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1052
assertEquals("L/FindMatchingFilesTest/NestedProject/Folder/testInNestedProject.c",problemMarkerInfo.file.toString());
1053
assertEquals(1,problemMarkerInfo.lineNumber);
1054
assertEquals("error",problemMarkerInfo.description);
1058
parseOutput(nestedProject, "testInNestedProject.c:1:error");
1059
assertEquals(2, errorList.size());
1061
ProblemMarkerInfo problemMarkerInfo = errorList.get(1);
1062
assertEquals("L/NestedProject/Folder/testInNestedProject.c",problemMarkerInfo.file.toString());
1063
assertEquals(1,problemMarkerInfo.lineNumber);
1064
assertEquals("error",problemMarkerInfo.description);
1069
* Checks if a file from error output can be found.
1070
* @throws Exception...
1072
public void testBuildDir() throws Exception {
1073
ResourceHelper.createFolder(fProject, "Folder");
1074
ResourceHelper.createFile(fProject, "Folder/testBuildDir.c");
1075
ResourceHelper.createFolder(fProject, "BuildDir");
1076
ResourceHelper.createFile(fProject, "BuildDir/testBuildDir.c");
1078
String buildDir = fProject.getLocation().append("BuildDir").toOSString();
1079
parseOutput(fProject, buildDir, "testBuildDir.c:1:error");
1080
assertEquals(1, errorList.size());
1082
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1083
assertEquals("L/FindMatchingFilesTest/BuildDir/testBuildDir.c",problemMarkerInfo.file.toString());
1084
assertEquals(1,problemMarkerInfo.lineNumber);
1085
assertEquals("error",problemMarkerInfo.description);
1089
* Checks if a file from error output can be found.
1090
* @throws Exception...
1092
public void testBuildDirVsProjectRoot() throws Exception {
1093
ResourceHelper.createFile(fProject, "testBuildDirVsProjectRoot.c");
1094
ResourceHelper.createFolder(fProject, "BuildDir");
1095
ResourceHelper.createFile(fProject, "BuildDir/testBuildDirVsProjectRoot.c");
1097
String buildDir = fProject.getLocation().append("BuildDir").toOSString();
1098
parseOutput(fProject, buildDir, "testBuildDirVsProjectRoot.c:1:error");
1099
assertEquals(1, errorList.size());
1101
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1102
assertEquals("L/FindMatchingFilesTest/BuildDir/testBuildDirVsProjectRoot.c",problemMarkerInfo.file.toString());
1103
assertEquals(1,problemMarkerInfo.lineNumber);
1104
assertEquals("error",problemMarkerInfo.description);
1108
* Checks if a file from error output can be found.
1110
* @throws Exception...
1112
public void testAbsoluteFileVsLink() throws Exception {
1113
ResourceHelper.createFolder(fProject, "Folder");
1114
IFile file = ResourceHelper.createFile(fProject, "Folder/testAbsoluteFileVsLink.c");
1115
String fullName = file.getLocation().toOSString();
1116
ResourceHelper.createLinkedFile(fProject, "testAbsoluteFileVsLink.c", file.getLocation());
1118
parseOutput(fullName+":1:error");
1119
assertEquals(1, errorList.size());
1121
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1122
assertEquals("L/FindMatchingFilesTest/Folder/testAbsoluteFileVsLink.c",problemMarkerInfo.file.toString());
1123
assertEquals(1,problemMarkerInfo.lineNumber);
1124
assertEquals("error",problemMarkerInfo.description);
1128
* Checks if a file from error output can be found.
1130
* @throws Exception...
1132
public void testPushDirectory() throws Exception {
1133
String fileName = "testPushDirectory.c";
1134
ResourceHelper.createFolder(fProject, "Folder");
1135
ResourceHelper.createFile(fProject, fileName);
1136
ResourceHelper.createFile(fProject, "Folder/"+fileName);
1138
String lines = "make[0]: Entering directory `Folder'\n"
1139
+ fileName+":1:error\n";
1141
String[] errorParsers = {MAKE_ERRORPARSER_ID, mockErrorParserId };
1142
parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
1143
assertEquals(1, errorList.size());
1145
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1146
assertEquals("L/FindMatchingFilesTest/Folder/"+fileName,problemMarkerInfo.file.toString());
1147
assertEquals(1,problemMarkerInfo.lineNumber);
1148
assertEquals("error",problemMarkerInfo.description);
1152
* Checks if a file from error output can be found.
1154
* @throws Exception...
1156
public void testPushAbsoluteDirectory() throws Exception {
1157
String fileName = "testPushAbsoluteDirectory.c";
1158
IFolder folder = ResourceHelper.createFolder(fProject, "Folder");
1159
ResourceHelper.createFile(fProject, fileName);
1160
ResourceHelper.createFile(fProject, "Folder/"+fileName);
1162
IPath absoluteDir = folder.getLocation();
1163
Assert.assertTrue(absoluteDir.isAbsolute());
1165
String lines = "make[0]: Entering directory `" + absoluteDir + "'\n"
1166
+ fileName+":1:error\n";
1168
String[] errorParsers = {MAKE_ERRORPARSER_ID, mockErrorParserId };
1169
parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
1170
assertEquals(1, errorList.size());
1172
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1173
assertEquals("L/FindMatchingFilesTest/Folder/"+fileName,problemMarkerInfo.file.toString());
1174
assertEquals(1,problemMarkerInfo.lineNumber);
1175
assertEquals("error",problemMarkerInfo.description);
1179
* Checks if a file from error output can be found.
1181
* @throws Exception...
1183
public void testPopDirectory() throws Exception {
1184
String fileName = "testPopDirectory.c";
1186
ResourceHelper.createFolder(fProject, "Folder");
1187
ResourceHelper.createFolder(fProject, "Folder/SubFolder");
1189
ResourceHelper.createFile(fProject, fileName);
1190
ResourceHelper.createFile(fProject, "Folder/"+fileName);
1191
ResourceHelper.createFile(fProject, "Folder/SubFolder/"+fileName);
1193
String lines = "make[1]: Entering directory `Folder'\n"
1194
+ "make[2]: Entering directory `SubFolder'\n"
1195
+ "make[2]: Leaving directory `SubFolder'\n"
1196
+ fileName+":1:error\n";
1198
String[] errorParsers = {MAKE_ERRORPARSER_ID, mockErrorParserId };
1199
parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
1200
assertEquals(1, errorList.size());
1202
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1203
assertEquals("L/FindMatchingFilesTest/Folder/"+fileName,problemMarkerInfo.file.toString());
1204
assertEquals(1,problemMarkerInfo.lineNumber);
1205
assertEquals("error",problemMarkerInfo.description);
1209
* Checks if a file from error output can be found.
1211
* @throws Exception...
1213
public void testPushDirectoryAndCache() throws Exception {
1214
String fileName = "testPushDirectoryCacheProblem.c";
1215
ResourceHelper.createFolder(fProject, "Folder");
1216
ResourceHelper.createFile(fProject, fileName);
1217
ResourceHelper.createFile(fProject, "Folder/"+fileName);
1219
String lines = fileName+":1:error\n"
1220
+ "make[0]: Entering directory `Folder'\n"
1221
+ fileName+":1:error\n";
1223
String[] errorParsers = {MAKE_ERRORPARSER_ID, mockErrorParserId };
1224
parseOutput(fProject, fProject.getLocation(), errorParsers, lines);
1225
assertEquals(2, errorList.size());
1228
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1229
assertEquals("L/FindMatchingFilesTest/"+fileName,problemMarkerInfo.file.toString());
1230
assertEquals(1,problemMarkerInfo.lineNumber);
1231
assertEquals("error",problemMarkerInfo.description);
1235
ProblemMarkerInfo problemMarkerInfo = errorList.get(1);
1236
assertEquals("L/FindMatchingFilesTest/Folder/"+fileName,problemMarkerInfo.file.toString());
1237
assertEquals(1,problemMarkerInfo.lineNumber);
1238
assertEquals("error",problemMarkerInfo.description);
1243
* Checks if a file from error output can be found.
1245
* @throws Exception...
1247
public void testMappedRemoteAbsolutePath_Bug264704() throws Exception {
1248
ResourceHelper.createFolder(fProject, "Folder");
1249
ResourceHelper.createFolder(fProject, "Folder/AbsoluteRemoteFolder");
1250
IFile file = ResourceHelper.createFile(fProject, "Folder/AbsoluteRemoteFolder/testMappedRemoteAbsolutePath.h");
1252
parseOutput("/AbsoluteRemoteFolder/testMappedRemoteAbsolutePath.h:1:error");
1253
assertEquals(1, errorList.size());
1255
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1256
assertEquals("L/FindMatchingFilesTest/Folder/AbsoluteRemoteFolder/testMappedRemoteAbsolutePath.h",problemMarkerInfo.file.toString());
1257
assertEquals(1,problemMarkerInfo.lineNumber);
1258
assertEquals("error",problemMarkerInfo.description);
1262
* Checks if a file from error output can be found.
1264
* @throws Exception...
1266
public void testMappedRemoteAbsolutePathAnotherProject_Bug264704() throws Exception {
1268
IProject anotherProject = ResourceHelper.createCDTProject("ProjectMappedRemoteAbsolutePathAnotherProject");
1270
ResourceHelper.createFolder(anotherProject, "Folder");
1271
ResourceHelper.createFolder(anotherProject, "Folder/AbsoluteRemoteFolder");
1272
IFile file = ResourceHelper.createFile(anotherProject, "Folder/AbsoluteRemoteFolder/testMappedRemoteAbsolutePathAnotherProject.h");
1274
parseOutput("/AbsoluteRemoteFolder/testMappedRemoteAbsolutePathAnotherProject.h:1:error");
1275
assertEquals(1, errorList.size());
1277
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1278
assertEquals("L/ProjectMappedRemoteAbsolutePathAnotherProject/Folder/AbsoluteRemoteFolder/testMappedRemoteAbsolutePathAnotherProject.h",problemMarkerInfo.file.toString());
1279
assertEquals(1,problemMarkerInfo.lineNumber);
1280
assertEquals("error",problemMarkerInfo.description);
1284
* Checks if a file from error output can be found.
1286
* @throws Exception...
1288
public void testWindowsPathOnLinux_Bug263977() throws Exception {
1289
// This test is valid on Unix platforms only
1290
boolean isUnix = Platform.getOS().equals(Platform.OS_LINUX)
1291
|| Platform.getOS().equals(Platform.OS_AIX)
1292
|| Platform.getOS().equals(Platform.OS_SOLARIS)
1293
|| Platform.getOS().equals(Platform.OS_HPUX)
1294
|| Platform.getOS().equals(Platform.OS_QNX)
1295
|| Platform.getOS().equals(Platform.OS_MACOSX);
1300
String fileName = "testWindowsPathOnLinux_Bug263977.c";
1302
ResourceHelper.createFolder(fProject, "w:/Folder/Subfolder");
1303
ResourceHelper.createFile(fProject, "w:/Folder/Subfolder/"+fileName);
1305
// Note that main intention of this test is to run on *Linux*, see bug 263977
1306
parseOutput("W:\\Folder\\Subfolder\\"+fileName+":1:error");
1307
assertEquals(1, errorList.size());
1309
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
1310
assertEquals("L/FindMatchingFilesTest/w:/Folder/Subfolder/"+fileName,problemMarkerInfo.file.toString());
1311
assertEquals("error",problemMarkerInfo.description);