From 076807b17bf3ba99fe19dc50dd15bb15eea700ff Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Mon, 16 Nov 2015 15:59:39 +0100 Subject: [PATCH] [xtext tests] introduced 'src-gen2' source folder, introduced dedicated 'TestProjectConfig', activated class-splitting in 'TestLanguage', updated 'GenerateAllTestLanguages2' workflow; added documentation in 'StandardProjectConfig' Signed-off-by: Christian Schneider --- .../model/project/StandardProjectConfig.xtend | 10 ++++++++ tests/org.eclipse.xtext.tests/.classpath | 5 ++++ .../xtext/GenerateAllTestLanguages2.mwe2 | 8 +++--- .../src/org/eclipse/xtext/TestLanguage.xtend | 3 +++ .../org/eclipse/xtext/TestProjectConfig.xtend | 25 +++++++++++++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestProjectConfig.xtend diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/project/StandardProjectConfig.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/project/StandardProjectConfig.xtend index 64274d329..ddb1cbcb1 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/project/StandardProjectConfig.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/project/StandardProjectConfig.xtend @@ -17,6 +17,7 @@ import org.eclipse.xtext.xtext.generator.Issues @Accessors class StandardProjectConfig extends XtextProjectConfig { + /** set to {@code true} by the project wizard(s) in case "Maven/Gradle" source layout is selected. */ boolean mavenLayout boolean createEclipseMetaData String rootPath @@ -88,10 +89,19 @@ class StandardProjectConfig extends XtextProjectConfig { rootPath + '/' + project.name } + /** + * In case of "Maven/Gradle" source layout the src outlet is named 'src/main/java', + * test classes go into 'src/test/java' instead of any dedicated '...tests' project. + */ protected def computeSrc(SubProjectConfig project) { project.rootPath + '/' + if(mavenLayout) 'src/' + project.computeSourceSet + '/java' else 'src' } + /** + * In case of "Maven/Gradle" source layout the srcGen outlet is named 'src/main/xtext-gen', + * test-related srcGen classes go into 'src/test/xtext-gen' instead of any dedicated '...tests' project. + * Don't confuse it with 'src/main/xtend-gen'! + */ protected def computeSrcGen(SubProjectConfig project) { project.rootPath + '/' + if(mavenLayout) 'src/' + project.computeSourceSet + '/xtext-gen' else 'src-gen' } diff --git a/tests/org.eclipse.xtext.tests/.classpath b/tests/org.eclipse.xtext.tests/.classpath index 8dedb7c92..aa9327a47 100644 --- a/tests/org.eclipse.xtext.tests/.classpath +++ b/tests/org.eclipse.xtext.tests/.classpath @@ -13,6 +13,11 @@ + + + + + diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/GenerateAllTestLanguages2.mwe2 b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/GenerateAllTestLanguages2.mwe2 index a2589edbb..21d134141 100644 --- a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/GenerateAllTestLanguages2.mwe2 +++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/GenerateAllTestLanguages2.mwe2 @@ -64,7 +64,7 @@ Workflow { * generated by Xtext */" } - project = xtext.generator.model.project.StandardProjectConfig { + project = TestProjectConfig { baseName = projectName rootPath = ".." runtime = { @@ -90,9 +90,9 @@ Workflow { language = TestLanguage { name = "org.eclipse.xtext.generator.ecore.SuperTestLanguage" } -// language = TestLanguage { -// name = "org.eclipse.xtext.generator.ecore.SubTestLanguage" -// } + language = TestLanguage { + name = "org.eclipse.xtext.generator.ecore.SubTestLanguage" + } // language = TestLanguage { // name = "org.eclipse.xtext.XtextGrammarTestLanguage" // } diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestLanguage.xtend b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestLanguage.xtend index 60f59ab86..7b4a51c14 100644 --- a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestLanguage.xtend +++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestLanguage.xtend @@ -34,6 +34,9 @@ class TestLanguage extends XtextGeneratorLanguage { EMFGeneratorFragment2 emfGenerator = new EMFGeneratorFragment2 XtextAntlrGeneratorFragment2 parserGenerator = new XtextAntlrGeneratorFragment2 => [ debugGrammar = true + options => [ + classSplitting = true + ] ] XtextAntlrIDEAGeneratorFragment ideaParser = new XtextAntlrIDEAGeneratorFragment diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestProjectConfig.xtend b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestProjectConfig.xtend new file mode 100644 index 000000000..7d069a5ba --- /dev/null +++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/TestProjectConfig.xtend @@ -0,0 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.xtext + +import org.eclipse.xtext.xtext.generator.model.project.StandardProjectConfig +import org.eclipse.xtext.xtext.generator.model.project.SubProjectConfig + +/** + * @author Christian Schneider - Initial contribution and API + */ +class TestProjectConfig extends StandardProjectConfig { + + /** + * Put the 'srcGen' classes generated for those test languages that are migrated + * to the new generator infrastructure into a separate source folder! + */ + override protected computeSrcGen(SubProjectConfig project) { + return super.computeSrcGen(project) + "2" + } +} \ No newline at end of file