diff options
author | Doug Schaefer | 2015-09-28 20:33:36 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2015-09-30 12:22:59 +0000 |
commit | 7cf2a14cc99d4fed2367b789c3f13d196c4eb1e1 (patch) | |
tree | 7739a17f25a099d8881591ac3b17867a7d728eed /qt/org.eclipse.cdt.qt.core.tests | |
parent | 0cfb15135f399db6b5df0bffab350bbef63a58f6 (diff) | |
download | org.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')
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) { + + } + }); + } + +} |