diff options
author | Andrew Gvozdev | 2012-07-18 21:08:10 +0000 |
---|---|---|
committer | Andrew Gvozdev | 2012-07-19 18:50:22 +0000 |
commit | 4c0af173c9f790f3b50aaa79a6ab14657edf539e (patch) | |
tree | 8e3f21aa89f0505f16188bcf845af9b73e0f0eee | |
parent | a8f38bba36430ed456383d26001f30b6896b641c (diff) | |
download | org.eclipse.cdt-4c0af173c9f790f3b50aaa79a6ab14657edf539e.tar.gz org.eclipse.cdt-4c0af173c9f790f3b50aaa79a6ab14657edf539e.tar.xz org.eclipse.cdt-4c0af173c9f790f3b50aaa79a6ab14657edf539e.zip |
bug 357442: avoid adding default drive letter to unresolved paths by language settings providers
2 files changed, 223 insertions, 392 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java index b719fbf4312..bd56882895e 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/language/settings/providers/tests/GCCBuildCommandParserTest.java @@ -417,8 +417,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); { - IPath path = new Path("/path0").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); + CIncludePathEntry expected = new CIncludePathEntry("/path0", 0); CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); assertEquals(expected.getName(), entry.getName()); assertEquals(expected.getValue(), entry.getValue()); @@ -469,46 +468,45 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file1, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file2, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file3, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file4, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file5, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file6, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file7, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file8, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file9, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file10, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } } @@ -549,40 +547,18 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath path = new Path("/path0").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); - assertEquals(expected.getName(), entry.getName()); - assertEquals(expected.getValue(), entry.getValue()); - assertEquals(expected.getKind(), entry.getKind()); - assertEquals(expected.getFlags(), entry.getFlags()); - assertEquals(expected, entry); - } - { - IPath path = new Path("/path1").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(1); - assertEquals(expected, entry); - } - { - IPath path = new Path("/path with spaces").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(2); - assertEquals(expected, entry); - } - { - IPath path = new Path("/path with spaces2").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(3); - assertEquals(expected, entry); - } - { - IPath path = new Path("/path with spaces3").setDevice(project.getLocation().getDevice()); - CIncludePathEntry expected = new CIncludePathEntry(path, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(4); - assertEquals(expected, entry); - } + CIncludePathEntry expected = new CIncludePathEntry("/path0", 0); + CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); + assertEquals(expected.getName(), entry.getName()); + assertEquals(expected.getValue(), entry.getValue()); + assertEquals(expected.getKind(), entry.getKind()); + assertEquals(expected.getFlags(), entry.getFlags()); + assertEquals(expected, entry); + + assertEquals(new CIncludePathEntry("/path1", 0), entries.get(1)); + assertEquals(new CIncludePathEntry("/path with spaces", 0), entries.get(2)); + assertEquals(new CIncludePathEntry("/path with spaces2", 0), entries.get(3)); + assertEquals(new CIncludePathEntry("/path with spaces3", 0), entries.get(4)); } /** @@ -616,18 +592,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath path = new Path("/Framework").setDevice(project.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, ICSettingEntry.FRAMEWORKS_MAC), entries.get(0)); - } - { - IPath path = new Path("/framework/system").setDevice(project.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, ICSettingEntry.FRAMEWORKS_MAC), entries.get(1)); - } - { - IPath path = new Path("/Framework with spaces").setDevice(project.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, ICSettingEntry.FRAMEWORKS_MAC), entries.get(2)); - } + assertEquals(new CIncludePathEntry("/Framework", ICSettingEntry.FRAMEWORKS_MAC), entries.get(0)); + assertEquals(new CIncludePathEntry("/framework/system", ICSettingEntry.FRAMEWORKS_MAC), entries.get(1)); + assertEquals(new CIncludePathEntry("/Framework with spaces", ICSettingEntry.FRAMEWORKS_MAC), entries.get(2)); } /** @@ -663,50 +630,21 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - CMacroEntry expected = new CMacroEntry("MACRO0", "", 0); - CMacroEntry entry = (CMacroEntry)entries.get(0); - assertEquals(expected.getName(), entry.getName()); - assertEquals(expected.getValue(), entry.getValue()); - assertEquals(expected.getKind(), entry.getKind()); - assertEquals(expected.getFlags(), entry.getFlags()); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO1", "value", 0); - CMacroEntry entry = (CMacroEntry)entries.get(1); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO2", "value with spaces", 0); - CMacroEntry entry = (CMacroEntry)entries.get(2); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO3", "value with spaces", 0); - CMacroEntry entry = (CMacroEntry)entries.get(3); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO4", "\"quoted value\"", 0); - CMacroEntry entry = (CMacroEntry)entries.get(4); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO5", "\"quoted value\"", 0); - CMacroEntry entry = (CMacroEntry)entries.get(5); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO6", "\"escape-quoted value\"", 0); - CMacroEntry entry = (CMacroEntry)entries.get(6); - assertEquals(expected, entry); - } - { - CMacroEntry expected = new CMacroEntry("MACRO7", "'single-quoted value'", 0); - CMacroEntry entry = (CMacroEntry)entries.get(7); - assertEquals(expected, entry); - } + CMacroEntry expected = new CMacroEntry("MACRO0", "", 0); + CMacroEntry entry = (CMacroEntry)entries.get(0); + assertEquals(expected.getName(), entry.getName()); + assertEquals(expected.getValue(), entry.getValue()); + assertEquals(expected.getKind(), entry.getKind()); + assertEquals(expected.getFlags(), entry.getFlags()); + assertEquals(expected, entry); + + assertEquals(new CMacroEntry("MACRO1", "value", 0), entries.get(1)); + assertEquals(new CMacroEntry("MACRO2", "value with spaces", 0), entries.get(2)); + assertEquals(new CMacroEntry("MACRO3", "value with spaces", 0), entries.get(3)); + assertEquals(new CMacroEntry("MACRO4", "\"quoted value\"", 0), entries.get(4)); + assertEquals(new CMacroEntry("MACRO5", "\"quoted value\"", 0), entries.get(5)); + assertEquals(new CMacroEntry("MACRO6", "\"escape-quoted value\"", 0), entries.get(6)); + assertEquals(new CMacroEntry("MACRO7", "'single-quoted value'", 0), entries.get(7)); } /** @@ -735,9 +673,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CMacroEntry("MACRO", null, ICSettingEntry.UNDEFINED), entries.get(0)); - } + assertEquals(new CMacroEntry("MACRO", null, ICSettingEntry.UNDEFINED), entries.get(0)); } /** @@ -770,26 +706,18 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath incFile = new Path("/include.file1").setDevice(project.getLocation().getDevice()); - CIncludeFileEntry expected = new CIncludeFileEntry(incFile, 0); - CIncludeFileEntry entry = (CIncludeFileEntry)entries.get(0); - assertEquals(expected.getName(), entry.getName()); - assertEquals(expected.getValue(), entry.getValue()); - assertEquals(expected.getKind(), entry.getKind()); - assertEquals(expected.getFlags(), entry.getFlags()); - assertEquals(expected, entry); - } + CIncludeFileEntry expected = new CIncludeFileEntry("/include.file1", 0); + CIncludeFileEntry entry = (CIncludeFileEntry)entries.get(0); + assertEquals(expected.getName(), entry.getName()); + assertEquals(expected.getValue(), entry.getValue()); + assertEquals(expected.getKind(), entry.getKind()); + assertEquals(expected.getFlags(), entry.getFlags()); + assertEquals(expected, entry); - { - IPath incFile = new Path("/include.file with spaces").setDevice(project.getLocation().getDevice()); - assertEquals(new CIncludeFileEntry(incFile, 0), entries.get(1)); - } - { - assertEquals(new CIncludeFileEntry(project.getLocation().removeLastSegments(2).append("include.file2"), 0), entries.get(2)); - assertEquals(new CIncludeFileEntry(project.getFullPath().append("include.file3"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); - assertEquals(new CIncludeFileEntry(project.getLocation().removeLastSegments(2).append("include-file-with-dashes"), 0), entries.get(4)); - } + assertEquals(new CIncludeFileEntry("/include.file with spaces", 0), entries.get(1)); + assertEquals(new CIncludeFileEntry(project.getLocation().removeLastSegments(2).append("include.file2"), 0), entries.get(2)); + assertEquals(new CIncludeFileEntry(project.getFullPath().append("include.file3"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); + assertEquals(new CIncludeFileEntry(project.getLocation().removeLastSegments(2).append("include-file-with-dashes"), 0), entries.get(4)); } /** @@ -820,22 +748,16 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath path = new Path("/macro.file").setDevice(project.getLocation().getDevice()); - CMacroFileEntry expected = new CMacroFileEntry(path, 0); - CMacroFileEntry entry = (CMacroFileEntry)entries.get(0); - assertEquals(expected.getName(), entry.getName()); - assertEquals(expected.getValue(), entry.getValue()); - assertEquals(expected.getKind(), entry.getKind()); - assertEquals(expected.getFlags(), entry.getFlags()); - assertEquals(expected, entry); - } - { - IPath path = new Path("/macro.file with spaces").setDevice(project.getLocation().getDevice()); - CMacroFileEntry expected = new CMacroFileEntry(path, 0); - CMacroFileEntry entry = (CMacroFileEntry)entries.get(1); - assertEquals(expected, entry); - } + CMacroFileEntry expected = new CMacroFileEntry("/macro.file", 0); + CMacroFileEntry entry = (CMacroFileEntry)entries.get(0); + assertEquals(expected.getName(), entry.getName()); + assertEquals(expected.getValue(), entry.getValue()); + assertEquals(expected.getKind(), entry.getKind()); + assertEquals(expected.getFlags(), entry.getFlags()); + assertEquals(expected, entry); + + assertEquals(new CMacroFileEntry("/macro.file with spaces", 0), entries.get(1)); + } /** @@ -865,22 +787,15 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath path = new Path("/path0").setDevice(project.getLocation().getDevice()); - CLibraryPathEntry expected = new CLibraryPathEntry(path, 0); - CLibraryPathEntry entry = (CLibraryPathEntry)entries.get(0); - assertEquals(expected.getName(), entry.getName()); - assertEquals(expected.getValue(), entry.getValue()); - assertEquals(expected.getKind(), entry.getKind()); - assertEquals(expected.getFlags(), entry.getFlags()); - assertEquals(expected, entry); - } - { - IPath path = new Path("/path with spaces").setDevice(project.getLocation().getDevice()); - CLibraryPathEntry expected = new CLibraryPathEntry(path, 0); - CLibraryPathEntry entry = (CLibraryPathEntry)entries.get(1); - assertEquals(expected, entry); - } + CLibraryPathEntry expected = new CLibraryPathEntry("/path0", 0); + CLibraryPathEntry entry = (CLibraryPathEntry)entries.get(0); + assertEquals(expected.getName(), entry.getName()); + assertEquals(expected.getValue(), entry.getValue()); + assertEquals(expected.getKind(), entry.getKind()); + assertEquals(expected.getFlags(), entry.getFlags()); + assertEquals(expected, entry); + + assertEquals(new CLibraryPathEntry("/path with spaces", 0), entries.get(1)); } /** @@ -953,20 +868,12 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - String device = project.getLocation().getDevice(); -// + " -I/path0 " - assertEquals(new CIncludePathEntry(new Path("/path0").setDevice(device), 0), entries.get(0)); -// + " -I /path1 " - assertEquals(new CIncludePathEntry(new Path("/path1").setDevice(device), 0), entries.get(1)); -// + " -I\"/path with spaces\"" - assertEquals(new CIncludePathEntry(new Path("/path with spaces").setDevice(device), 0), entries.get(2)); -// + " -DMACRO1=value" + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); + assertEquals(new CIncludePathEntry("/path1", 0), entries.get(1)); + assertEquals(new CIncludePathEntry("/path with spaces", 0), entries.get(2)); assertEquals(new CMacroEntry("MACRO1", "value", 0), entries.get(3)); -// + " -DMACRO2=\"value with spaces\"" assertEquals(new CMacroEntry("MACRO2", "value with spaces", 0), entries.get(4)); -// + " -L/usr/lib" - assertEquals(new CLibraryPathEntry(new Path("/usr/lib").setDevice(device), 0), entries.get(5)); -// + " -ldomain" + assertEquals(new CLibraryPathEntry("/usr/lib", 0), entries.get(5)); assertEquals(new CLibraryFileEntry("libdomain.a", 0), entries.get(6)); assertEquals(7, entries.size()); } @@ -1019,12 +926,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); - assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } + List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); + assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); } /** @@ -1053,12 +957,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(null, file, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); - assertEquals(new CIncludePathEntry(file.getParent().getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(null, file, languageId).get(0)); + assertEquals(new CIncludePathEntry(file.getParent().getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), parser.getSettingEntries(null, file, languageId).get(1)); } /** @@ -1090,31 +990,14 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - // in single quotes - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file1, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } - { - // in double quotes - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file2, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } - { - // Unix EOL - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file3, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } - { - // Windows EOL - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file4, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } + // in single quotes + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file1, languageId).get(0)); + // in double quotes + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file2, languageId).get(0)); + // Unix EOL + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file3, languageId).get(0)); + // Windows EOL + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file4, languageId).get(0)); } /** @@ -1150,13 +1033,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(new CIncludePathEntry(path0, 0), entries.get(0)); - // Information from build output should take precedence over build dir - assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file, languageId).get(0)); + // Information from build output should take precedence over build dir + assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), parser.getSettingEntries(cfgDescription, file, languageId).get(1)); } /** @@ -1186,24 +1065,17 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file0, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); - assertEquals(expected, entry); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file1, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); - assertEquals(expected, entry); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } { List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file2, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - CIncludePathEntry entry = (CIncludePathEntry)entries.get(0); - assertEquals(expected, entry); + assertEquals(new CIncludePathEntry("/path0", 0), entries.get(0)); } } @@ -1273,13 +1145,11 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - // check that relative paths are relative to CWD which is the location of the project - assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(project.getLocation().removeLastSegments(1), 0), entries.get(1)); - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); - assertEquals(new CIncludePathEntry(folderComposite.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); - } + // check that relative paths are relative to CWD which is the location of the project + assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(project.getLocation().removeLastSegments(1), 0), entries.get(1)); + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); + assertEquals(new CIncludePathEntry(folderComposite.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); } /** @@ -1313,11 +1183,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(".", 0), entries.get(0)); - assertEquals(new CIncludePathEntry("..", 0), entries.get(1)); - assertEquals(new CIncludePathEntry("Folder", 0), entries.get(2)); - } + assertEquals(new CIncludePathEntry(".", 0), entries.get(0)); + assertEquals(new CIncludePathEntry("..", 0), entries.get(1)); + assertEquals(new CIncludePathEntry("Folder", 0), entries.get(2)); } /** @@ -1349,10 +1217,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(1, entries.size()); - } + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(1, entries.size()); } /** @@ -1392,13 +1258,11 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().removeLastSegments(1), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - assertEquals(new CIncludePathEntry(buildDir.getLocation().removeLastSegments(3), 0), entries.get(2)); - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("MissingFolder"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(4)); - } + assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(buildDir.getFullPath().removeLastSegments(1), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); + assertEquals(new CIncludePathEntry(buildDir.getLocation().removeLastSegments(3), 0), entries.get(2)); + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); + assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("MissingFolder"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(4)); } /** @@ -1467,11 +1331,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().removeLastSegments(1), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("Folder"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); - } + assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(buildDir.getFullPath().removeLastSegments(1), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); + assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("Folder"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); } /** @@ -1509,12 +1371,10 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - IPath buildPath = new Path(uriBuildDir.getPath()).setDevice(project.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(buildPath, 0), entries.get(0)); - assertEquals(new CIncludePathEntry(buildPath.removeLastSegments(1), 0), entries.get(1)); - assertEquals(new CIncludePathEntry(buildPath.append("Folder"), 0), entries.get(2)); - } + IPath buildPath = new Path(uriBuildDir.getPath()).setDevice(project.getLocation().getDevice()); + assertEquals(new CIncludePathEntry(buildPath, 0), entries.get(0)); + assertEquals(new CIncludePathEntry(buildPath.removeLastSegments(1), 0), entries.get(1)); + assertEquals(new CIncludePathEntry(buildPath.append("Folder"), 0), entries.get(2)); } /** @@ -1555,13 +1415,11 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - assertEquals(new CIncludePathEntry(folder2.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("MissingFolder"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(3)); - assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("MissingFolder2"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(4)); - } + assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); + assertEquals(new CIncludePathEntry(folder2.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(2)); + assertEquals(new CIncludePathEntry("/BuildDir/MissingFolder", 0), entries.get(3)); + assertEquals(new CIncludePathEntry(buildDir.getFullPath().append("MissingFolder2"), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(4)); } /** @@ -1601,18 +1459,10 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(mappedFolder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } - { - IPath path = new Path("/Ambiguous/Folder").setDevice(file.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, 0), entries.get(2)); - } - { - IPath path = new Path("/Missing/Folder").setDevice(file.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, 0), entries.get(3)); - } + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(mappedFolder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); + assertEquals(new CIncludePathEntry("/Ambiguous/Folder", 0), entries.get(2)); + assertEquals(new CIncludePathEntry("/Missing/Folder", 0), entries.get(3)); } /** @@ -1654,17 +1504,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - } - { - IPath path = new Path("/Ambiguous/Folder").setDevice(file.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, 0), entries.get(1)); - } - { - IPath path = new Path("/Missing/Folder").setDevice(file.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, 0), entries.get(2)); - } + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry("/Ambiguous/Folder", 0), entries.get(1)); + assertEquals(new CIncludePathEntry("/Missing/Folder", 0), entries.get(2)); } /** @@ -1713,12 +1555,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(folderInReferencedProject.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - - IPath path = new Path("/Ambiguous/Folder").setDevice(file.getLocation().getDevice()); - assertEquals(new CIncludePathEntry(path, 0), entries.get(1)); - } + assertEquals(new CIncludePathEntry(folderInReferencedProject.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry("/Ambiguous/Folder", 0), entries.get(1)); } /** @@ -1755,11 +1593,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - CIncludePathEntry expected = new CIncludePathEntry(dir2.removeLastSegments(1), 0); - assertEquals(expected, entries.get(0)); - } + List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); + CIncludePathEntry expected = new CIncludePathEntry(dir2.removeLastSegments(1), 0); + assertEquals(expected, entries.get(0)); } /** @@ -1796,11 +1632,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - CIncludePathEntry expected = new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED); - assertEquals(expected, entries.get(0)); - } + List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); + CIncludePathEntry expected = new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED); + assertEquals(expected, entries.get(0)); } /** @@ -1841,10 +1675,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(includeDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } + assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(includeDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); } /** @@ -1886,11 +1718,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(includeDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); - } - + assertEquals(new CIncludePathEntry(buildDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(includeDir.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(1)); } /** @@ -1964,12 +1793,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file, languageId).get(0)); // cleanup contentType.removeFileSpec("x++", IContentTypeSettings.FILE_EXTENSION_SPEC); @@ -1999,12 +1823,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - IPath path0 = new Path("/path0").setDevice(project.getLocation().getDevice()); - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - CIncludePathEntry expected = new CIncludePathEntry(path0, 0); - assertEquals(expected, entries.get(0)); - } + assertEquals(new CIncludePathEntry("/path0", 0), parser.getSettingEntries(cfgDescription, file, languageId).get(0)); } /** @@ -2039,15 +1858,15 @@ public class GCCBuildCommandParserTest extends BaseTestCase { parser.shutdown(); // check populated entries - { - List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(new Path("/Python1025/Include").setDevice(project.getLocation().getDevice()), 0), entries.get(1)); - assertEquals(new CMacroEntry("BOOST_ALL_NO_LIB", "1", 0), entries.get(2)); - assertEquals(new CMacroEntry("BOOST_PYTHON_SOURCE", "", 0), entries.get(3)); - assertEquals(new CMacroEntry("BOOST_PYTHON_STATIC_LIB", "", 0), entries.get(4)); - assertEquals(5, entries.size()); - } + List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); + assertEquals(new CIncludePathEntry(project.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + // "/Python1025/Include" not expected to be there + assertFalse(new java.io.File("/Python1025/Include").exists()); + assertEquals(new CIncludePathEntry("/Python1025/Include", 0), entries.get(1)); + assertEquals(new CMacroEntry("BOOST_ALL_NO_LIB", "1", 0), entries.get(2)); + assertEquals(new CMacroEntry("BOOST_PYTHON_SOURCE", "", 0), entries.get(3)); + assertEquals(new CMacroEntry("BOOST_PYTHON_STATIC_LIB", "", 0), entries.get(4)); + assertEquals(5, entries.size()); } /** @@ -2082,11 +1901,9 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - String device = project.getLocation().getDevice(); - assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); - assertEquals(new CIncludePathEntry(new Path("/Absolute/Folder").setDevice(device), 0), entries.get(1)); - } + String device = project.getLocation().getDevice(); + assertEquals(new CIncludePathEntry(folder.getFullPath(), ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED), entries.get(0)); + assertEquals(new CIncludePathEntry(new Path("/Absolute/Folder").setDevice(device), 0), entries.get(1)); } /** @@ -2121,10 +1938,8 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> entries = parser.getSettingEntries(cfgDescription, file, languageId); - { - String device = project.getLocation().getDevice(); - assertEquals(new CIncludePathEntry(new Path("/LocallyMappedTo/Folder").setDevice(device), 0), entries.get(0)); - } + String device = project.getLocation().getDevice(); + assertEquals(new CIncludePathEntry(new Path("/LocallyMappedTo/Folder").setDevice(device), 0), entries.get(0)); } /** @@ -2153,14 +1968,10 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>(); - expected.add(new CIncludePathEntry(new Path("/path0").setDevice(project.getLocation().getDevice()), 0)); - - List<ICLanguageSettingEntry> entriesFile = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(expected, entriesFile); - List<ICLanguageSettingEntry> entriesFolder = parser.getSettingEntries(cfgDescription, folder, languageId); - assertEquals(null, entriesFolder); - List<ICLanguageSettingEntry> entriesProject = parser.getSettingEntries(cfgDescription, project, languageId); - assertEquals(null, entriesProject); + expected.add(new CIncludePathEntry("/path0", 0)); + assertEquals(expected, parser.getSettingEntries(cfgDescription, file, languageId)); + assertEquals(null, parser.getSettingEntries(cfgDescription, folder, languageId)); + assertEquals(null, parser.getSettingEntries(cfgDescription, project, languageId)); } /** @@ -2189,14 +2000,10 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>(); - expected.add(new CIncludePathEntry(new Path("/path0").setDevice(project.getLocation().getDevice()), 0)); - - List<ICLanguageSettingEntry> entriesFile = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(null, entriesFile); - List<ICLanguageSettingEntry> entriesFolder = parser.getSettingEntries(cfgDescription, folder, languageId); - assertEquals(expected, entriesFolder); - List<ICLanguageSettingEntry> entriesProject = parser.getSettingEntries(cfgDescription, project, languageId); - assertEquals(null, entriesProject); + expected.add(new CIncludePathEntry("/path0", 0)); + assertEquals(null, parser.getSettingEntries(cfgDescription, file, languageId)); + assertEquals(expected, parser.getSettingEntries(cfgDescription, folder, languageId)); + assertEquals(null, parser.getSettingEntries(cfgDescription, project, languageId)); } /** @@ -2225,14 +2032,11 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>(); - expected.add(new CIncludePathEntry(new Path("/path0").setDevice(project.getLocation().getDevice()), 0)); - - List<ICLanguageSettingEntry> entriesFile = parser.getSettingEntries(cfgDescription, file, languageId); - assertEquals(null, entriesFile); - List<ICLanguageSettingEntry> entriesFolder = parser.getSettingEntries(cfgDescription, folder, languageId); - assertEquals(null, entriesFolder); - List<ICLanguageSettingEntry> entriesProject = parser.getSettingEntries(cfgDescription, project, languageId); - assertEquals(expected, entriesProject); + expected.add(new CIncludePathEntry("/path0", 0)); + + assertEquals(null, parser.getSettingEntries(cfgDescription, file, languageId)); + assertEquals(null, parser.getSettingEntries(cfgDescription, folder, languageId)); + assertEquals(expected, parser.getSettingEntries(cfgDescription, project, languageId)); } /** @@ -2261,7 +2065,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase { // check populated entries List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>(); - expected.add(new CIncludePathEntry(new Path("/path0").setDevice(project.getLocation().getDevice()), 0)); + expected.add(new CIncludePathEntry("/path0", 0)); assertEquals(expected, parser.getSettingEntries(null, project, languageId)); } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java index b6c51da59f0..9d8d5347644 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractLanguageSettingsOutputScanner.java @@ -12,7 +12,6 @@ package org.eclipse.cdt.managedbuilder.language.settings.providers; import java.io.File; -import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -741,38 +740,61 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett } /** - * The manipulations here are done to resolve "../" navigation for symbolic links where "link/.." cannot - * be collapsed as it must follow the real file-system path. {@link java.io.File#getCanonicalPath()} deals - * with that correctly but {@link Path} or {@link URI} try to normalize the path which would be incorrect - * here. + * The manipulations here are done to resolve problems such as "../" navigation for symbolic links where + * "link/.." cannot be collapsed as it must follow the real file-system path. {@link java.io.File#getCanonicalPath()} + * deals with that correctly but {@link Path} or {@link URI} try to normalize the path which would be incorrect here. + * Another issue being resolved here is fixing drive letters in URI syntax. */ - private static URI resolvePathFromBaseLocation(String name, IPath baseLocation) { - String pathName = name; + private static URI resolvePathFromBaseLocation(String pathStr0, IPath baseLocation) { + String pathStr = pathStr0; if (baseLocation != null && !baseLocation.isEmpty()) { - pathName = pathName.replace(File.separatorChar, '/'); - String device = new Path(pathName).getDevice(); - if (device==null || device.equals(baseLocation.getDevice())) { + pathStr = pathStr.replace(File.separatorChar, '/'); + String device = new Path(pathStr).getDevice(); + if (device == null || device.equals(baseLocation.getDevice())) { if (device != null && device.length() > 0) { - pathName = pathName.substring(device.length()); + pathStr = pathStr.substring(device.length()); } baseLocation = baseLocation.addTrailingSeparator(); - if (pathName.startsWith("/")) { //$NON-NLS-1$ - pathName = pathName.substring(1); + if (pathStr.startsWith("/")) { //$NON-NLS-1$ + pathStr = pathStr.substring(1); } - pathName = baseLocation.toString() + pathName; + pathStr = baseLocation.toString() + pathStr; } } try { - File file = new File(pathName); + File file = new File(pathStr); file = file.getCanonicalFile(); - return file.toURI(); - } catch (IOException e) { - // if error just leave it as is + URI uri = file.toURI(); + if (file.exists()) { + return uri; + } + + IPath path0 = new Path(pathStr0); + if (!path0.isAbsolute()) { + return uri; + } + + String device = path0.getDevice(); + if (device == null || device.isEmpty()) { + // Avoid spurious adding of drive letters on Windows + pathStr = path0.setDevice(null).toString(); + } else { + // On Windows "C:/folder/" -> "/C:/folder/" + if (pathStr.charAt(0) != IPath.SEPARATOR) { + pathStr = IPath.SEPARATOR + pathStr; + } + } + + return new URI(uri.getScheme(), uri.getAuthority(), pathStr, uri.getQuery(), uri.getFragment()); + + } catch (Exception e) { + // if error will leave it as is + ManagedBuilderCorePlugin.log(e); } - return org.eclipse.core.filesystem.URIUtil.toURI(pathName); + return org.eclipse.core.filesystem.URIUtil.toURI(pathStr); } /** @@ -916,12 +938,17 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett String pathStr = EFSExtensionManager.getDefault().getMappedPath(uri); uri = org.eclipse.core.filesystem.URIUtil.toURI(pathStr); - try { - File file = new java.io.File(uri); - String canonicalPathStr = file.getCanonicalPath(); - return new Path(canonicalPathStr); - } catch (Exception e) { - ManagedBuilderCorePlugin.log(e); + if (uri != null && uri.isAbsolute()) { + try { + File file = new java.io.File(uri); + String canonicalPathStr = file.getCanonicalPath(); + if (new Path(pathStr).getDevice() == null) { + return new Path(canonicalPathStr).setDevice(null); + } + return new Path(canonicalPathStr); + } catch (Exception e) { + ManagedBuilderCorePlugin.log(e); + } } return null; } |