Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Schaefer2015-09-28 20:33:36 +0000
committerGerrit Code Review @ Eclipse.org2015-09-30 12:22:59 +0000
commit7cf2a14cc99d4fed2367b789c3f13d196c4eb1e1 (patch)
tree7739a17f25a099d8881591ac3b17867a7d728eed /qt/org.eclipse.cdt.qt.core.tests
parent0cfb15135f399db6b5df0bffab350bbef63a58f6 (diff)
downloadorg.eclipse.cdt-7cf2a14cc99d4fed2367b789c3f13d196c4eb1e1.tar.gz
org.eclipse.cdt-7cf2a14cc99d4fed2367b789c3f13d196c4eb1e1.tar.xz
org.eclipse.cdt-7cf2a14cc99d4fed2367b789c3f13d196c4eb1e1.zip
Move QML stuff to qt.core plug-in. Add deps for ANTLR, FreeMarker.
Moves to the cdt 4.6 platform where the new ANTLR and Freemarker deps will be. Also properly names the qt test plug-ins. Change-Id: I026873583c6e6ca7602cb983ab04f99acd700a4b
Diffstat (limited to 'qt/org.eclipse.cdt.qt.core.tests')
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.classpath7
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.project28
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF10
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/build.properties5
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/pom.xml66
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractParserTest.java46
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractQMLListener.java207
-rw-r--r--qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/QMLParserTest.java97
9 files changed, 473 insertions, 0 deletions
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.classpath b/qt/org.eclipse.cdt.qt.core.tests/.classpath
new file mode 100644
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.project b/qt/org.eclipse.cdt.qt.core.tests/.project
new file mode 100644
index 00000000000..290b8294e74
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.qt.core.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..0c68a61dca8
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..48f301dacd9
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: QML Tests
+Bundle-SymbolicName: org.eclipse.cdt.qt.core.tests
+Bundle-Version: 2.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.junit,
+ org.antlr.runtime;bundle-version="4.5.1",
+ org.eclipse.cdt.qt.core;bundle-version="2.0.0"
+Bundle-ClassPath: .
diff --git a/qt/org.eclipse.cdt.qt.core.tests/build.properties b/qt/org.eclipse.cdt.qt.core.tests/build.properties
new file mode 100644
index 00000000000..cce0abc807a
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ src/org/eclipse/cdt/qt/core/qml/tests/
diff --git a/qt/org.eclipse.cdt.qt.core.tests/pom.xml b/qt/org.eclipse.cdt.qt.core.tests/pom.xml
new file mode 100644
index 00000000000..47f30afa933
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>8.8.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>2.0.0-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.qt.core.tests</artifactId>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <!-- Uncommenting this is useful when the repo is built first then you want to run tests on this plugin only -->
+ <!-- <repositories>
+ <repository>
+ <id>cdt.repo</id>
+ <url>file:/${basedir}/../../releng/org.eclipse.cdt.repo/target/repository</url>
+ <layout>p2</layout>
+ </repository>
+ </repositories>-->
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <useUIHarness>false</useUIHarness>
+ <argLine>${tycho.testArgLine} ${base.test.vmargs}</argLine>
+ <testFailureIgnore>true</testFailureIgnore>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <configuration>
+ <dependency-resolution>
+ <extraRequirements>
+ <requirement>
+ <type>eclipse-feature</type>
+ <id>org.eclipse.platform</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ <requirement>
+ <type>eclipse-feature</type>
+ <id>org.eclipse.cdt</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ <requirement>
+ <type>eclipse-feature</type>
+ <id>org.eclipse.cdt.qt</id>
+ <versionRange>0.0.0</versionRange>
+ </requirement>
+ </extraRequirements>
+ </dependency-resolution>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractParserTest.java b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractParserTest.java
new file mode 100644
index 00000000000..86e5b22e622
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractParserTest.java
@@ -0,0 +1,46 @@
+package org.eclipse.cdt.qt.core.qml.tests;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class AbstractParserTest {
+
+ // TODO I don't think this really works especially on Hudson.
+ // cdt.core.tests has TestSourceReader that is more complete.
+ public static String extract() throws Exception {
+ StackTraceElement element = Thread.currentThread().getStackTrace()[2];
+ String className = element.getClassName();
+ int lineNumber = element.getLineNumber();
+ Class<?> cls = Class.forName(className);
+ String fqn = className.replace('.', '/');
+ fqn = fqn.indexOf("$") == -1 ? fqn : fqn.substring(0, fqn.indexOf("$")); //$NON-NLS-1$ //$NON-NLS-2$
+ String srcFile = "/" + fqn + ".java"; //$NON-NLS-1$ //$NON-NLS-2$
+ StringBuffer code = new StringBuffer();
+ Pattern pattern = Pattern.compile("\\s*//\\s*(.*)"); //$NON-NLS-1$
+ boolean inComment = false;
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(cls.getResourceAsStream(srcFile)))) {
+ int n = 0;
+ for (String line = reader.readLine(); line != null; line = reader.readLine()) {
+ if (++n >= lineNumber) {
+ return code.toString();
+ } else {
+ Matcher matcher = pattern.matcher(line);
+ if (matcher.matches()) {
+ if (!inComment) {
+ code = new StringBuffer();
+ }
+ inComment = true;
+ code.append(matcher.group(1));
+ code.append('\n');
+ } else {
+ inComment = false;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractQMLListener.java b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractQMLListener.java
new file mode 100644
index 00000000000..e09c2dbe1fc
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/AbstractQMLListener.java
@@ -0,0 +1,207 @@
+package org.eclipse.cdt.qt.core.qml.tests;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLListener;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.FunctionDeclarationContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlHeaderItemContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlImportDeclarationContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlMemberContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlMembersContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlObjectLiteralContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlObjectRootContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlPragmaDeclarationContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlProgramContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlPropertyTypeContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlQualifiedIdContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.SemiContext;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.SingleExpressionContext;
+
+public class AbstractQMLListener implements QMLListener {
+
+ public AbstractQMLListener() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void visitTerminal(TerminalNode node) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void visitErrorNode(ErrorNode node) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterEveryRule(ParserRuleContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitEveryRule(ParserRuleContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlProgram(QmlProgramContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlProgram(QmlProgramContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlHeaderItem(QmlHeaderItemContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlHeaderItem(QmlHeaderItemContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlImportDeclaration(QmlImportDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlImportDeclaration(QmlImportDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlQualifiedId(QmlQualifiedIdContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlQualifiedId(QmlQualifiedIdContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlPragmaDeclaration(QmlPragmaDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlPragmaDeclaration(QmlPragmaDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlObjectRoot(QmlObjectRootContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlObjectRoot(QmlObjectRootContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlObjectLiteral(QmlObjectLiteralContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlObjectLiteral(QmlObjectLiteralContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlMembers(QmlMembersContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlMembers(QmlMembersContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlMember(QmlMemberContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlMember(QmlMemberContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterQmlPropertyType(QmlPropertyTypeContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitQmlPropertyType(QmlPropertyTypeContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterSemi(SemiContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitSemi(SemiContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterSingleExpression(SingleExpressionContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitSingleExpression(SingleExpressionContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void enterFunctionDeclaration(FunctionDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exitFunctionDeclaration(FunctionDeclarationContext ctx) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/QMLParserTest.java b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/QMLParserTest.java
new file mode 100644
index 00000000000..1428f6823e0
--- /dev/null
+++ b/qt/org.eclipse.cdt.qt.core.tests/src/org/eclipse/cdt/qt/core/qml/tests/QMLParserTest.java
@@ -0,0 +1,97 @@
+package org.eclipse.cdt.qt.core.qml.tests;
+
+import static org.junit.Assert.fail;
+
+import java.util.BitSet;
+
+import org.antlr.v4.runtime.ANTLRErrorListener;
+import org.antlr.v4.runtime.ANTLRInputStream;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.Recognizer;
+import org.antlr.v4.runtime.atn.ATNConfigSet;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLLexer;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLListener;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser;
+import org.eclipse.cdt.internal.qt.core.qml.parser.QMLParser.QmlProgramContext;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class QMLParserTest extends AbstractParserTest {
+
+ public void runParser(String code, QMLListener listener) throws Exception {
+ ANTLRInputStream input = new ANTLRInputStream(code);
+ QMLLexer lexer = new QMLLexer(input);
+ lexer.addErrorListener(new ANTLRErrorListener() {
+
+ @Override
+ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
+ int charPositionInLine, String msg, RecognitionException e) {
+ fail(msg);
+ }
+
+ @Override
+ public void reportContextSensitivity(Parser recognizer, DFA dfa, int startIndex, int stopIndex,
+ int prediction, ATNConfigSet configs) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void reportAttemptingFullContext(Parser recognizer, DFA dfa, int startIndex, int stopIndex,
+ BitSet conflictingAlts, ATNConfigSet configs) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void reportAmbiguity(Parser recognizer, DFA dfa, int startIndex, int stopIndex, boolean exact,
+ BitSet ambigAlts, ATNConfigSet configs) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ QMLParser parser = new QMLParser(tokens);
+ parser.addParseListener(listener);
+ parser.addErrorListener(new ANTLRErrorListener() {
+ @Override
+ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
+ int charPositionInLine, String msg, RecognitionException e) {
+ fail(msg);
+ }
+
+ @Override
+ public void reportContextSensitivity(Parser recognizer, DFA dfa, int startIndex, int stopIndex,
+ int prediction, ATNConfigSet configs) {
+ }
+
+ @Override
+ public void reportAttemptingFullContext(Parser recognizer, DFA dfa, int startIndex, int stopIndex,
+ BitSet conflictingAlts, ATNConfigSet configs) {
+ }
+
+ @Override
+ public void reportAmbiguity(Parser recognizer, DFA dfa, int startIndex, int stopIndex, boolean exact,
+ BitSet ambigAlts, ATNConfigSet configs) {
+ }
+ });
+ parser.qmlProgram();
+ }
+
+ // testCode
+ @Test
+ @Ignore
+ public void testCodeExtract() throws Exception {
+ // see if you can use TestSourceReader out of the cdt.core.tests plugin
+ runParser(extract(), new AbstractQMLListener() {
+ @Override
+ public void exitQmlProgram(QmlProgramContext ctx) {
+
+ }
+ });
+ }
+
+}

Back to the top