diff --git a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCodeGenerator.java b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCodeGenerator.java
index b0c9ced..2915bd1 100644
--- a/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCodeGenerator.java
+++ b/plugins/org.eclipse.qvtd.codegen/src/org/eclipse/qvtd/codegen/qvti/java/QVTiCodeGenerator.java
@@ -29,6 +29,7 @@
  * </copyright>
  */
 
+import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.Writer;
@@ -181,7 +182,9 @@
 	public void saveSourceFile(@NonNull String savePath) throws IOException {
 		String javaCodeSource = generateClassFile();
 		String qualifiedName = getQualifiedName();
-		String fileName = savePath + qualifiedName.replace('.', '/') + ".java";
+		String saveDir = savePath + qualifiedName.replace('.', '/');
+		String fileName = saveDir + ".java";
+		new File(saveDir).getParentFile().mkdirs();
 		Writer writer = new FileWriter(fileName);
 		writer.append(javaCodeSource);
 		writer.close();
diff --git a/releng/org.eclipse.qvtd.releng/psfs/qvtd-tests.psf b/releng/org.eclipse.qvtd.releng/psfs/qvtd-tests.psf
index f6bc4de..16bf151 100644
--- a/releng/org.eclipse.qvtd.releng/psfs/qvtd-tests.psf
+++ b/releng/org.eclipse.qvtd.releng/psfs/qvtd-tests.psf
@@ -4,6 +4,7 @@
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,plugins/org.eclipse.qvt"/>
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf"/>
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,examples/org.eclipse.qvtd.examples.qvtrelation.reltocore"/>
+<project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,tests/org.eclipse.qvtd.all.tests"/>
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,tests/org.eclipse.qvtd.xtext.qvtbase.tests"/>
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,tests/org.eclipse.qvtd.xtext.qvtcore.tests"/>
 <project reference="1.0,git://git.eclipse.org/gitroot/mmt/org.eclipse.qvtd.git,master,tests/org.eclipse.qvtd.xtext.qvtimperative.tests"/>
@@ -14,6 +15,7 @@
 <item elementID="=org.eclipse.qvt" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
 <item elementID="=org.eclipse.qvtd.xtext.qvtcore.tests" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
 <item elementID="=org.eclipse.qvtd.examples.qvtrelation.modelmorf" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
+<item elementID="=org.eclipse.qvtd.all.tests" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
 <item elementID="=org.eclipse.qvtd.xtext.qvtbase.tests" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
 <item elementID="=org.eclipse.qvtd.examples.qvtrelation.reltocore" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
 <item elementID="=org.eclipse.qvtd.xtext.qvtrelation.tests" factoryID="org.eclipse.jdt.ui.PersistableJavaElementFactory"/>
diff --git a/tests/org.eclipse.qvtd.all.tests/.classpath b/tests/org.eclipse.qvtd.all.tests/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.qvtd.all.tests/.gitignore b/tests/org.eclipse.qvtd.all.tests/.gitignore
new file mode 100644
index 0000000..42b3de3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/.gitignore
@@ -0,0 +1,3 @@
+/src-gen
+/bin
+/QVTTrace.log
diff --git a/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd Tests.launch b/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd Tests.launch
new file mode 100644
index 0000000..3a806ef
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd Tests.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.qvtd.all.tests.AllQVTdTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.all.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.all.tests/.project b/tests/org.eclipse.qvtd.all.tests/.project
new file mode 100644
index 0000000..d87c955
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.qvtd.all.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/tests/org.eclipse.qvtd.all.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.qvtd.all.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.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.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..03e24a0
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.qvtd.all.tests
+Bundle-Version: 0.11.0.qualifier
+Bundle-ClassPath: .
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.qvtd.xtext.qvtbase.tests,
+ org.eclipse.qvtd.xtext.qvtcore.ui,
+ org.eclipse.qvtd.xtext.qvtcore.tests,
+ org.eclipse.qvtd.xtext.qvtimperative.tests,
+ org.eclipse.qvtd.xtext.qvtrelation.tests
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/tests/org.eclipse.qvtd.all.tests/about.html b/tests/org.eclipse.qvtd.all.tests/about.html
new file mode 100644
index 0000000..87b2a50
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/about.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>About</title>
+</head><body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<pem>September 21, 2008</em></p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content").  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL").  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+		<p><em>
+		<br><br>
+		<strong>OMG QVT 1.0 specification (08-04-03)</strong> <br>
+		<ul>
+			<li><a href="http://www.omg.org/spec/QVT/1.0/">QVT 1.0 main page</a></li>
+			<li><a href="http://www.omg.org/docs/formal/08-04-03.pdf">QVT 1.0 specification</a></li>
+			<li><a href="http://www.omg.org/">OMG site</a></li>
+		</ul>
+		<br>
+		</em></p>
+		<p>A detailed list of fixes and clarifications with respect to those specifications may be found in <a href="QVTBaseCompliance.html">QVTBaseCompliance.html</a>.</p>
+</body></html>
\ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.all.tests/build.properties b/tests/org.eclipse.qvtd.all.tests/build.properties
new file mode 100644
index 0000000..aa1a008
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties
diff --git a/tests/org.eclipse.qvtd.all.tests/plugin.properties b/tests/org.eclipse.qvtd.all.tests/plugin.properties
new file mode 100644
index 0000000..0604c8a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2014 Eclipse Modeling Project 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
+#
+# Contributors:
+#     E.D.Willink - initial API and implementation
+#
+# $Id$
+###############################################################################
+
+pluginName = QVTd All Tests (Incubation)
+providerName = Eclipse Modeling Project
diff --git a/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java b/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java
new file mode 100644
index 0000000..f59cce9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java
@@ -0,0 +1,57 @@
+/**
+ * <copyright>
+ * 
+ * Copyright (c) 2002,2011 IBM Corporation 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
+ *
+ * Contributors:
+ *   IBM - Initial API and implementation
+ *   E.D.Willink - Bug 298634
+ *
+ * </copyright>
+ *
+ * $Id: AllXtextTests.java,v 1.10 2011/05/20 15:27:16 ewillink Exp $
+ */
+
+package org.eclipse.qvtd.all.tests;
+
+import java.util.Arrays;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.AllQVTcoreTests;
+import org.eclipse.qvtd.xtext.qvtimperative.tests.AllQVTimperativeTests;
+import org.eclipse.qvtd.xtext.qvtrelation.tests.AllQVTrelationTests;
+
+/**
+ * Tests for the Xtext QVTc editor support.
+ */
+@SuppressWarnings("nls")
+public class AllQVTdTests extends TestCase
+{
+	public AllQVTdTests() {
+		super("");
+	}
+
+	public static Test suite() {
+		TestSuite result = new TestSuite("QVTd All Tests");			
+		result.addTest(AllQVTcoreTests.suite());
+		result.addTest(AllQVTimperativeTests.suite());
+		result.addTest(AllQVTrelationTests.suite());
+		return result;
+	}
+
+	public Object run(Object args)
+		throws Exception {
+
+		TestRunner.run(suite());
+		return Arrays
+			.asList(new String[] {"Please see raw test suite output for details."});
+	}
+}
