1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 01:45:33 +02:00

Bug 559674: Migrating from a ILanguageSettingsProvider implementation to IIndexerInfoConsumer (4/6)

Adjust core tests to new implementation.

This is piece four of change https://git.eclipse.org/r/c/159828 being split into pieces.
Splitting is done for code reviewing reasons.

Change-Id: I925fd5e56cbf6bf3e6d14322c738c0ff412b8b1d
Signed-off-by: Martin Weber <fifteenknots505@gmail.com>
This commit is contained in:
Martin Weber 2020-05-07 21:29:23 +02:00 committed by Alexander Fedorov
parent f80235d0e0
commit 636691a404
9 changed files with 315 additions and 578 deletions

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015 Martin Weber.
* Copyright (c) 2015-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -11,9 +11,7 @@ package org.eclipse.cdt.cmake.is.core.internal;
import static org.junit.Assert.assertEquals;
import org.eclipse.cdt.cmake.is.core.Arglets.IncludePath_C_POSIX;
import org.eclipse.cdt.cmake.is.core.IArglet.IParseContext;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.cmake.is.core.IArglet.IArgumentCollector;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
@ -36,178 +34,141 @@ public class IncludePath_C_POSIXTest {
/**
* Test method for
* {@link IncludePath_C_POSIX#processArgument(IParseContext, IPath, java.lang.String)}
* {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
* .
*/
@Test
public final void testProcessArgument() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
String name = "/an/Include/Path";
IPath cwd = new Path("");
// -I/an/Include/Path
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I'/an/Include/Path'
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-I" + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I"/an/Include/Path"
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I /an/Include/Path
entries = new ParseContext();
assertEquals(2 + name.length() + 3, testee.processArgument(entries, cwd, "-I " + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 3, testee.processArgument(result, cwd, "-I " + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I '/an/Include/Path'
entries = new ParseContext();
assertEquals(2 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-I " + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 3 + 2, testee.processArgument(result, cwd, "-I " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I "/an/Include/Path"
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-I " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-I " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
name = (new Path("A:an\\Include/Path")).toOSString();
// -IA:an\Include/Path
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
}
/**
* Test method for
* {@link IncludePath_C_POSIX#processArgument(IParseContext, IPath, java.lang.String)}
* {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
*/
@Test
public final void testProcessArgument_WS() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries = new ParseContext();
ICLanguageSettingEntry parsed;
ParseContext result = new ParseContext();
String name = "/ye olde/In clu de/Pa the";
IPath cwd = new Path("");
// -I'/ye olde/In clu de/Pa the'
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-I" + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I"/ye olde/In clu de/Pa the"
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I '/ye olde/In clu de/Pa the'
entries = new ParseContext();
assertEquals(2 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-I " + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 3 + 2, testee.processArgument(result, cwd, "-I " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
// -I "/ye olde/In clu de/Pa the"
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-I " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-I " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
// -I'A:an\In CLU de/Pat h'
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-I" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
}
/**
* Test method for
* {@link IncludePath_C_POSIX#processArgument(IParseContext, IPath, java.lang.String)}
* {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
* .
*/
@Test
public final void testProcessArgument_RelativePath() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ICLanguageSettingEntry parsed;
String name = (new Path("a/relative/Include/Path")).toOSString();
IPath cwd = new Path("/compiler/working/dir");
ParseContext entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
ParseContext result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
String absPath = cwd.append(name).toString();
assertEquals("name", absPath, parsed.getName());
assertEquals("name", absPath, result.getIncludePaths().get(0));
name = (new Path("a\\relative\\Include\\Path")).toOSString();
cwd = new Path("\\compiler\\working\\dir");
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
absPath = cwd.append(name).toString();
assertEquals("name", absPath, parsed.getName());
assertEquals("name", absPath, result.getIncludePaths().get(0));
name = (new Path("../../src/Include/Path")).toOSString();
cwd = new Path("/compiler/working/dir");
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
absPath = cwd.append(name).toString();
assertEquals("name", absPath, parsed.getName());
assertEquals("name", absPath, result.getIncludePaths().get(0));
name = (new Path("..\\..\\src\\Include\\Path")).toOSString();
cwd = new Path("\\compiler\\working\\dir");
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-I" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-I" + name + more));
assertEquals("#entries", 1, result.getIncludePaths().size());
absPath = cwd.append(name).toString();
assertEquals("name", absPath, parsed.getName());
assertEquals("name", absPath, result.getIncludePaths().get(0));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015 Martin Weber.
* Copyright (c) 2015-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -9,11 +9,12 @@
package org.eclipse.cdt.cmake.is.core.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import org.eclipse.cdt.cmake.is.core.Arglets;
import org.eclipse.cdt.cmake.is.core.Arglets.MacroDefine_C_POSIX;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
@ -41,8 +42,7 @@ public class MacroDefine_C_POSIXTest {
public final void testProcessArgument() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
int len;
@ -50,23 +50,17 @@ public class MacroDefine_C_POSIXTest {
String name = "FOO";
String arg = "-D" + name;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", "", parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", "", result.getDefines().get(name));
assertEquals(2 + name.length(), len);
// -D FOO
entries = new ParseContext();
result = new ParseContext();
arg = "-D " + name;
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", "", parsed.getValue());
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", "", result.getDefines().get(name));
assertEquals(2 + name.length() + 3, len);
}
@ -77,52 +71,39 @@ public class MacroDefine_C_POSIXTest {
public final void testProcessArgument_Value() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
final String name = "FOO";
String val = "noWhiteSpace";
// -DFOO=noWhiteSpace
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 1 + val.length(),
testee.processArgument(entries, cwd, "-D" + name + "=" + val + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D" + name + "=" + val + more));
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
// -D FOO=noWhiteSpace
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 1 + 3 + val.length(),
testee.processArgument(entries, cwd, "-D " + name + "=" + val + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D " + name + "=" + val + more));
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
// ----------------------------------------
val = "Wh it e s ap ac ";
// -D 'FOO=Wh it e s ap ac '
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 1 + 2 + 3 + val.length(),
testee.processArgument(entries, cwd, "-D " + "'" + name + "=" + val + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D " + "'" + name + "=" + val + "'" + more));
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
// -D "FOO=Wh it e s ap ac "
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + 1 + 2 + 3 + val.length(),
testee.processArgument(entries, cwd, "-D " + "\"" + name + "=" + val + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D " + "\"" + name + "=" + val + "\"" + more));
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
}
/**
@ -132,8 +113,7 @@ public class MacroDefine_C_POSIXTest {
public final void testProcessArgument_Value_CharLiteral() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
int len;
String val, arg;
@ -144,90 +124,66 @@ public class MacroDefine_C_POSIXTest {
// -DFOO='noWhiteSpace'
val = "'noWhiteSpace'";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -D FOO='noWhiteSpace'
arg = "-D " + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// ----------------------------------------
// -DFOO='noWhite\'escapedQuoteChar' (values with single quotes)
val = "'noWhite\\'escapedQuoteChar'";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO='noWhite\\escapedEscapeChar'
val = "'noWhite\\\\escapedEscapeChar'";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// ----------------------------------------
// -DFOO='Wh it e s ap ac '
val = "'Wh it e s ap ac '";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -D FOO='Wh it e s ap ac '
arg = "-D " + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO='Wh it e s ap ac \'escaped Quote Char' (values with single quotes)
val = "'Wh it e s ap ac \\'escaped Quote Char'";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO='Wh it e s ap ac \\escaped Escape Char'
val = "'Wh it e s ap ac \\\\escaped Escape Char'";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
}
@ -238,8 +194,7 @@ public class MacroDefine_C_POSIXTest {
public final void testProcessArgument_Value_StringLiteral() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
int len;
String val, arg;
@ -249,90 +204,66 @@ public class MacroDefine_C_POSIXTest {
// -DFOO="noWhiteSpace"
val = "\"noWhiteSpace\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -D FOO="noWhiteSpace"
arg = "-D " + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// ----------------------------------------
// -DFOO="noWhite\"escapedQuoteChar" (values with single quotes)
val = "\"noWhite\\\"escapedQuoteChar\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO="noWhite\\escapedEscapeChar"
val = "\"noWhite\\\\escapedEscapeChar\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// ----------------------------------------
// -DFOO="Wh it e s ap ac "
val = "\"Wh it e s ap ac \"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -D FOO="Wh it e s ap ac "
arg = "-D " + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO="Wh it e s ap ac \"escaped Quote Char" (values with single quotes)
val = "\"Wh it e s ap ac \\\"escaped Quote Char\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// -DFOO="Wh it e s ap ac \\escaped Escape Char"
val = "\"Wh it e s ap ac \\\\escaped Escape Char\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
assertEquals(arg.length(), len);
// ----------------------------------------
@ -340,14 +271,11 @@ public class MacroDefine_C_POSIXTest {
// -DFOO="2(vtkIOMySQL,vtkIOPostgreSQL)"
val = "\"2(vtkIOMySQL,vtkIOPostgreSQL)\"";
arg = "-D" + name + "=" + val;
entries = new ParseContext();
len = testee.processArgument(entries, cwd, arg + " " + arg + more);
result = new ParseContext();
len = testee.processArgument(result, cwd, arg + " " + arg + more);
assertEquals(arg.length(), len);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
assertTrue("found", result.getDefines().containsKey(name));
assertEquals("value", val, result.getDefines().get(name));
}
/**
@ -357,8 +285,7 @@ public class MacroDefine_C_POSIXTest {
public final void testProcessArgument_MacroWithArgs() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
// -DFOO=noWhiteSpace
@ -367,22 +294,18 @@ public class MacroDefine_C_POSIXTest {
String val = "(a)/((b)+(c))";
// -DFOO(a,b,c)=(a)/((b)+(c))
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + args.length() + 1 + val.length(),
testee.processArgument(entries, cwd, "-D" + name + args + "=" + val + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D" + name + args + "=" + val + more));
Map<String, String> defines = result.getDefines();
assertEquals("#entries", 1, defines.size());
assertEquals("value", val, result.getDefines().get(name));
// -D FOO(a,b,c)=(a)/((b)+(c))
entries = new ParseContext();
result = new ParseContext();
assertEquals(2 + name.length() + args.length() + 1 + 3 + val.length(),
testee.processArgument(entries, cwd, "-D " + name + args + "=" + val + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", name, parsed.getName());
assertEquals("value", val, parsed.getValue());
testee.processArgument(result, cwd, "-D " + name + args + "=" + val + more));
defines = result.getDefines();
assertEquals("#entries", 1, defines.size());
assertEquals("value", val, result.getDefines().get(name));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015 Martin Weber.
* Copyright (c) 2015-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -11,9 +11,7 @@ package org.eclipse.cdt.cmake.is.core.internal;
import static org.junit.Assert.assertEquals;
import org.eclipse.cdt.cmake.is.core.Arglets.MacroUndefine_C_POSIX;
import org.eclipse.cdt.cmake.is.core.IArglet.IParseContext;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.cmake.is.core.IArglet.IArgumentCollector;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
@ -36,35 +34,26 @@ public class MacroUndefine_C_POSIXTest {
/**
* Test method for
* {@link MacroUndefine_C_POSIX#processArgument(IParseContext, IPath, java.lang.String)}
* {@link MacroUndefine_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
* .
*/
@Test
public final void testProcessArgument() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
String name = "FOO";
// -UFOO
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-U" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("kind", ICSettingEntry.UNDEFINED, (parsed.getFlags() & ICSettingEntry.UNDEFINED));
assertEquals("name", name, parsed.getName());
assertEquals("value", "", parsed.getValue());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-U" + name + more));
assertEquals("#entries", 1, result.getUndefines().size());
assertEquals("name", name, result.getUndefines().get(0));
// -U FOO
entries = new ParseContext();
assertEquals(2 + 2 + name.length(), testee.processArgument(entries, cwd, "-U " + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("kind", ICSettingEntry.UNDEFINED, (parsed.getFlags() & ICSettingEntry.UNDEFINED));
assertEquals("name", name, parsed.getName());
assertEquals("value", "", parsed.getValue());
result = new ParseContext();
assertEquals(2 + 2 + name.length(), testee.processArgument(result, cwd, "-U " + name + more));
assertEquals("#entries", 1, result.getUndefines().size());
assertEquals("name", name, result.getUndefines().get(0));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016-2018 Martin Weber.
* Copyright (c) 2016-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -31,9 +31,6 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/clang -C blah.c",
null, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
@Test
@ -41,9 +38,6 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/clang++ -C blah.c",
null, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
@Test
@ -51,9 +45,6 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("clang++ -C blah.c", null,
false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
/**
@ -66,15 +57,9 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection
.determineDetector("/usr/bin/arm-none-eabi-gcc -C blah.c", null, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-gcc.exe -C blah.c", null, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
@Test
@ -84,16 +69,10 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection
.determineDetector("/usr/bin/arm-none-eabi-gcc-9.2.0 -C blah.c", versionSuffixRegex, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-gcc-9.2.0.exe -C blah.c", versionSuffixRegex,
true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
/**
@ -104,15 +83,9 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection
.determineDetector("/usr/bin/arm-none-eabi-g++ -C blah.c", null, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-g++.exe -C blah.c", null, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
/**
@ -125,16 +98,10 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection
.determineDetector("/usr/bin/arm-none-eabi-g++-9.2.0 -C blah.c", versionSuffixRegex, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/arm-none-eabi-g++-9.2.0.exe -C blah.c", versionSuffixRegex,
true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
/**
@ -145,15 +112,9 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("arm-none-eabi-g++ -C blah.c",
null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("arm-none-eabi-g++.exe -C blah.c", null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
@Test
@ -162,9 +123,6 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection
.determineDetector("C:\\PROGRA2\\Atmel\\AVR8-G1\\bin\\AVR-G_~1.EXE -C blah.c", null, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("C", "org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
}
@Test
@ -174,48 +132,36 @@ public class ParserDetectionTest {
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector("/usr/bin/cc-4.1 -C blah.c",
versionSuffixRegex, false);
assertNotNull(result);
// verify that we got a C parser
assertEquals("org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/cc-4.1.exe -C blah.c", versionSuffixRegex, true);
assertNotNull(result);
// verify that we got a C parser
assertEquals("org.eclipse.cdt.core.gcc",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/c++-4.1 -C blah.c", versionSuffixRegex, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/bin/c++-4.1.exe -C blah.c", versionSuffixRegex, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
// clang for issue #43
result = ParserDetection.determineDetector("/usr/local/bin/clang++40 -C blah.c", versionSuffixRegex, false);
assertNotNull(result);
assertEquals("org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/usr/local/bin/clang++40 -C blah.c", "40", false);
// result = ParserDetection.determineDetector("/usr/local/bin/clang++40 -I/home/me/workspace/first/test/../utility -I/home/me/workspace/first/test/../include -I/home/me/workspace/first/test -g -std=c++1y -stdlib=libc++ -include-pch /home/me/workspace/first/build/Debug/test/catch.hpp.pch -include-pch /home/me/workspace/first/build/Debug/test/pch.hpp.pch -o CMakeFiles/first_test.test.dir/__/utility/fun.cpp.o -c /home/me/workspace/first/utility/fun.cpp",
// "40", false);
// result = ParserDetection.determineDetector("/usr/local/bin/clang++40
// -I/home/me/workspace/first/test/../utility
// -I/home/me/workspace/first/test/../include -I/home/me/workspace/first/test -g
// -std=c++1y -stdlib=libc++ -include-pch
// /home/me/workspace/first/build/Debug/test/catch.hpp.pch -include-pch
// /home/me/workspace/first/build/Debug/test/pch.hpp.pch -o
// CMakeFiles/first_test.test.dir/__/utility/fun.cpp.o -c
// /home/me/workspace/first/utility/fun.cpp",
// "40", false);
assertNotNull(result);
assertEquals("org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("c"));
result = ParserDetection.determineDetector("/apps/tools/cent_os72/binlinks/g++-7.1 "
+ "-I/apps/tools/cent_os72/thirdparty/boost/boost_1_64_0/include "
+ "-I/home/XXX/repositories/bepa/common/include -g -Wall "
+ "-c /home/XXX/repositories/bepa/common/settings/src/settings.cpp", versionSuffixRegex, true);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("cpp"));
}
@Test

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016-2017 Martin Weber.
* Copyright (c) 2016-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -11,17 +11,9 @@ package org.eclipse.cdt.cmake.is.core.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.eclipse.cdt.cmake.is.core.language.settings.providers.CompileCommandsJsonParser;
import org.junit.Test;
/**
* @author weber
*
*/
public class ParserLookupResultTest {
CompileCommandsJsonParser testee = new CompileCommandsJsonParser();
/**
* Test method for
* {@link org.eclipse.cdt.cmake.is.core.internal.ParserDetection#determineDetector(String, String,boolean)}
@ -52,9 +44,6 @@ public class ParserLookupResultTest {
String cmd = compiler + " " + args;
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(cmd, null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("cpp"));
assertEquals("reducedCommandLine", args, result.getReducedCommandLine());
// test without leading path
@ -62,9 +51,6 @@ public class ParserLookupResultTest {
cmd = compiler + " " + args;
result = ParserDetection.determineDetector(cmd, null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("cpp"));
assertEquals("reducedCommandLine", args, result.getReducedCommandLine());
}
@ -82,9 +68,6 @@ public class ParserLookupResultTest {
String cmd = compiler + " " + args;
ParserDetection.ParserDetectionResult result = ParserDetection.determineDetector(cmd, null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("cpp"));
assertEquals("command", compiler, result.getCommandLine().getCommand());
assertEquals("args", args, result.getCommandLine().getArguments());
@ -93,9 +76,6 @@ public class ParserLookupResultTest {
cmd = compiler + " " + args;
result = ParserDetection.determineDetector(cmd, null, false);
assertNotNull(result);
// verify that we got a C++ parser
assertEquals("C++", "org.eclipse.cdt.core.g++",
result.getDetectorWithMethod().getToolDetectionParticipant().getParser().getLanguageId("cpp"));
assertEquals("command", compiler, result.getCommandLine().getCommand());
assertEquals("args", args, result.getCommandLine().getArguments());
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015-2018 Martin Weber.
* Copyright (c) 2015-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -12,9 +12,7 @@ import static org.junit.Assert.assertEquals;
import org.eclipse.cdt.cmake.is.core.Arglets.IncludePath_C_POSIX;
import org.eclipse.cdt.cmake.is.core.Arglets.SystemIncludePath_C;
import org.eclipse.cdt.cmake.is.core.IArglet.IParseContext;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.cdt.cmake.is.core.IArglet.IArgumentCollector;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
@ -39,110 +37,88 @@ public class SystemIncludePath_C_Test {
public final void testProcessArgument() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
String name = "/an/Include/Path";
// -isystem /an/Include/Path
entries = new ParseContext();
assertEquals(8 + name.length() + 3, testee.processArgument(entries, cwd, "-isystem " + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(8 + name.length() + 3, testee.processArgument(result, cwd, "-isystem " + name + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -isystem '/an/Include/Path'
entries = new ParseContext();
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-isystem " + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-isystem " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -isystem "/an/Include/Path"
entries = new ParseContext();
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-isystem " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-isystem " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
name = (new Path("A:an\\Include/Path")).toOSString();
// -isystem A:an\Include/Path
entries = new ParseContext();
assertEquals(8 + 1 + name.length(), testee.processArgument(entries, cwd, "-isystem " + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(8 + 1 + name.length(), testee.processArgument(result, cwd, "-isystem " + name + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -isystemA:an\Include/Path
entries = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(entries, cwd, "-isystem" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-isystem" + name + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
}
/**
* Test method for
* {@link IncludePath_C_POSIX#processArgument(IParseContext, IPath, java.lang.String)}
* {@link IncludePath_C_POSIX#processArgument(IArgumentCollector, IPath, java.lang.String)}
*/
@Test
public final void testProcessArgument_WS() {
final String more = " -g -MMD -MT CMakeFiles/execut1.dir/util1.c.o -MF \"CMakeFiles/execut1.dir/util1.c.o.d\""
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ICLanguageSettingEntry parsed;
ParseContext result;
final IPath cwd = new Path("");
String name = "/ye olde/In clu de/Pa the";
// -isystem '/ye olde/In clu de/Pa the'
entries = new ParseContext();
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-isystem " + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-isystem " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -isystem "/ye olde/In clu de/Pa the"
entries = new ParseContext();
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(entries, cwd, "-isystem " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-isystem " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
// -isystem"A:an\In CLU de/Pat h"
entries = new ParseContext();
result = new ParseContext();
assertEquals(8 + name.length() + 2,
testee.processArgument(entries, cwd, "-isystem" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
testee.processArgument(result, cwd, "-isystem" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -isystem'A:an\In CLU de/Pat h'
entries = new ParseContext();
assertEquals(8 + name.length() + 2, testee.processArgument(entries, cwd, "-isystem" + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-isystem" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
name = (new Path("/Inc/CLUde/Path")).toOSString();
// -isystem/Inc/CLUde/Path
entries = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(entries, cwd, "-isystem" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-isystem" + name + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2019 Martin Weber.
* Copyright (c) 2019-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -12,7 +12,6 @@ import static org.junit.Assert.assertEquals;
import org.eclipse.cdt.cmake.is.core.Arglets.SystemIncludePath_armcc;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
@ -37,50 +36,40 @@ public class SystemIncludePath_armcc_Test {
public final void testProcessArgument() {
final String more = " -g "
+ " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext entries;
ParseContext result;
ICLanguageSettingEntry parsed;
final IPath cwd = new Path("");
String name = "/an/Include/Path";
// -J/an/Include/Path
entries = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(entries, cwd, "-J" + name + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length(), testee.processArgument(result, cwd, "-J" + name + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -J'/an/Include/Path'
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-J" + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-J" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -J"/an/Include/Path"
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-J" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-J" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
name = (new Path("A:an\\In CLU de/Pat h")).toOSString();
// -J"A:an\In CLU de/Pat h"
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-J" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-J" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
// -J'A:an\In CLU de/Pat h'
entries = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(entries, cwd, "-J" + "'" + name + "'" + more));
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = new ParseContext();
assertEquals(2 + name.length() + 2, testee.processArgument(result, cwd, "-J" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getSystemIncludePaths().size());
assertEquals("name", name, result.getSystemIncludePaths().get(0));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015 Martin Weber.
* Copyright (c) 2015-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -9,6 +9,7 @@
package org.eclipse.cdt.cmake.is.core.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.PrintWriter;
import java.nio.file.Files;
@ -19,8 +20,6 @@ import org.eclipse.cdt.cmake.is.core.Arglets;
import org.eclipse.cdt.cmake.is.core.DefaultToolCommandlineParser;
import org.eclipse.cdt.cmake.is.core.IToolCommandlineParser;
import org.eclipse.cdt.cmake.is.core.ResponseFileArglets;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Test;
@ -33,14 +32,13 @@ public class ToolCommandlineParserTest {
@Test
public final void testResponseFileArgumentParser_At() throws Exception {
DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser("egal", new ResponseFileArglets.At(),
null, new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser(new ResponseFileArglets.At(), null,
new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
IToolCommandlineParser.IResult entries;
IToolCommandlineParser.IResult result;
final String more = " -g -MMD -o CMakeFiles/execut1.dir/util1.c.o"
+ " -c /testprojects/C-subsrc/src/src-sub/main.c";
ICLanguageSettingEntry parsed;
// generate response file
final java.nio.file.Path dirP = Files.createTempDirectory("rfpt");
@ -59,36 +57,30 @@ public class ToolCommandlineParserTest {
rspFilePw.close();
}
// @a/response/file.txt
entries = testee.processArgs(new Path(cwdP.toString()), "@" + relRspP.toString() + " -D" + defName + more);
assertEquals("#entries", 4, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", def1Name, parsed.getName());
parsed = entries.getSettingEntries().get(1);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", cwdP.resolve(incDirName).toString(), parsed.getName());
parsed = entries.getSettingEntries().get(2);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", def2Name, parsed.getName());
parsed = entries.getSettingEntries().get(3);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", defName, parsed.getName());
result = testee.processArgs(new Path(cwdP.toString()), "@" + relRspP.toString() + " -D" + defName + more);
assertEquals("#defines", 3, result.getDefines().size());
assertTrue("found", result.getDefines().containsKey(def1Name));
assertEquals("value", "234", result.getDefines().get(def1Name));
assertTrue("found", result.getDefines().containsKey(def2Name));
assertEquals("value", "987", result.getDefines().get(def2Name));
assertTrue("found", result.getDefines().containsKey(defName));
assertEquals("value", "", result.getDefines().get(defName));
assertEquals("#paths", 1, result.getIncludePaths().size());
assertEquals("value", cwdP.resolve(incDirName).toString(), result.getIncludePaths().get(0));
// @ a/response.file.txt
entries = testee.processArgs(new Path(cwdP.toString()), "@ " + relRspP.toString() + " -D" + defName + more);
assertEquals("#entries", 4, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", def1Name, parsed.getName());
parsed = entries.getSettingEntries().get(1);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", cwdP.resolve(incDirName).toString(), parsed.getName());
parsed = entries.getSettingEntries().get(2);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", def2Name, parsed.getName());
parsed = entries.getSettingEntries().get(3);
assertEquals("kind", ICSettingEntry.MACRO, parsed.getKind());
assertEquals("name", defName, parsed.getName());
result = testee.processArgs(new Path(cwdP.toString()), "@ " + relRspP.toString() + " -D" + defName + more);
assertEquals("#defines", 3, result.getDefines().size());
assertTrue("found", result.getDefines().containsKey(def1Name));
assertEquals("value", "234", result.getDefines().get(def1Name));
assertTrue("found", result.getDefines().containsKey(def2Name));
assertEquals("value", "987", result.getDefines().get(def2Name));
assertTrue("found", result.getDefines().containsKey(defName));
assertEquals("value", "", result.getDefines().get(defName));
assertEquals("#paths", 1, result.getIncludePaths().size());
assertEquals("value", cwdP.resolve(incDirName).toString(), result.getIncludePaths().get(0));
Files.delete(absRspP);
}
@ -98,22 +90,19 @@ public class ToolCommandlineParserTest {
*/
@Test
public final void testResponseFileArgumentParser_At_heredoc() throws Exception {
DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser("egal", new ResponseFileArglets.At(),
null, new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
DefaultToolCommandlineParser testee = new DefaultToolCommandlineParser(new ResponseFileArglets.At(), null,
new Arglets.IncludePath_C_POSIX(), new Arglets.MacroDefine_C_POSIX());
final String more = " -g -MMD -o CMakeFiles/execut1.dir/util1.c.o"
+ " -c /testprojects/C-subsrc/src/src-sub/main.c";
IToolCommandlineParser.IResult entries;
ICLanguageSettingEntry parsed;
IToolCommandlineParser.IResult result;
String name = "/ye/olde/Include/Pathe";
IPath cwd = new Path("");
entries = new ParseContext();
result = new ParseContext();
// @<< ... <<
entries = testee.processArgs(cwd, "@<<" + " -I" + name + " <<" + more);
assertEquals("#entries", 1, entries.getSettingEntries().size());
parsed = entries.getSettingEntries().get(0);
assertEquals("kind", ICSettingEntry.INCLUDE_PATH, parsed.getKind());
assertEquals("name", name, parsed.getName());
result = testee.processArgs(cwd, "@<<" + " -I" + name + " <<" + more);
assertEquals("#paths", 1, result.getIncludePaths().size());
assertEquals("name", name, result.getIncludePaths().get(0));
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2018 Martin Weber.
* Copyright (c) 2018-2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
@ -10,6 +10,7 @@
package org.eclipse.cdt.cmake.is.core.internal.builtins;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@ -17,7 +18,6 @@ import java.io.InputStream;
import org.eclipse.cdt.cmake.is.core.builtins.GccOutputProcessor;
import org.eclipse.cdt.cmake.is.core.builtins.OutputSniffer;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@ -41,13 +41,13 @@ public class GccOutputProcessorTest {
@Test
@Ignore
public void testProcessLine() {
testee.processLine("#define AAA xyz", new ProcessingContext());
testee.processLine("#define AAA xyz", new RawIndexerInfo());
}
@Test
public void testProcessFile() throws IOException {
// pass resource content line-wise to the testee...
ProcessingContext pc = new ProcessingContext();
RawIndexerInfo pc = new RawIndexerInfo();
try (InputStream is = getClass().getResourceAsStream("cbd-gcc.output.txt");
OutputSniffer os = new OutputSniffer(testee, null, pc)) {
byte[] buffer = new byte[1024];
@ -57,27 +57,11 @@ public class GccOutputProcessorTest {
}
}
// check __GNUC__
for (ICLanguageSettingEntry entry : pc.getSettingEntries()) {
if (entry.getKind() == ICLanguageSettingEntry.MACRO) {
if ("__GNUC__".equals(entry.getName()))
assertEquals("value (" + entry.getName() + ")", "4", entry.getValue());
}
}
assertEquals("# include paths", 5, pc.getIncludePaths().size());
assertEquals("# macros", 238, pc.getDefines().size());
int inc = 0;
int macro = 0;
for (ICLanguageSettingEntry entry : pc.getSettingEntries()) {
if (entry.getKind() == ICLanguageSettingEntry.INCLUDE_PATH) {
inc++;
assertTrue("path", !"".equals(entry.getName()));
} else if (entry.getKind() == ICLanguageSettingEntry.MACRO) {
macro++;
assertTrue("macro", !"".equals(entry.getName()));
assertTrue("value (" + entry.getName() + ")", entry.getValue() != null);
}
}
assertEquals("# include paths", 5, inc);
assertEquals("# macros", 238, macro);
// check __GNUC__
assertTrue("__GNUC__", pc.getDefines().containsKey("__GNUC__"));
assertNotNull("value", pc.getDefines().get("__GNUC__"));
}
}