Initial Ideas on running tests via maven
diff --git a/.gitignore b/.gitignore
index b0bd381..b9d4b5a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,15 @@
# binaries
bin/
-target
+target/
*.jar
# Ignore IntelliJ files
*.iml
*.idea/
+# Ignore Eclipse settings
+*.settings
+
# Ignore sym-link to project stored in EpsilonLabs
/plugins/org.eclipse.epsilon.antlr.dev
@@ -79,6 +82,8 @@
/tests/org.eclipse.epsilon.test/TEST-default.StringTests.xml
/tests/org.eclipse.epsilon.test/TEST-*.xml
+/tests/org.eclipse.epsilon.test.unit/TEST-*.xml
+
# /tests/org.eclipse.epsilon.workflow.test/resources/
/tests/org.eclipse.epsilon.workflow.test/resources/TEST-default.sample.xml
diff --git a/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java b/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
index 390352b..20ce455 100644
--- a/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
+++ b/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
@@ -9,45 +9,78 @@
******************************************************************************/
package org.eclipse.epsilon.common.util;
+import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
+import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
+import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;
+import static java.security.AccessController.doPrivileged;
+
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.nio.channels.FileChannel;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.FileSystems;
import java.nio.file.Files;
+import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.*;
+import java.nio.file.attribute.FileAttribute;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.util.*;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class FileUtil {
- private FileUtil() {}
-
+
+ private static Logger logger = LoggerFactory.getLogger(FileUtil.class);
+ // temporary directory location
+ private static final Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir"));
+
+ private static final boolean isPosix = FileSystems.getDefault().supportedFileAttributeViews().contains("posix");
+
+ // default file and directory permissions (lazily initialized)
+ private static class PosixPermissions {
+ static final FileAttribute<Set<PosixFilePermission>> filePermissions = PosixFilePermissions
+ .asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE));
+ static final FileAttribute<Set<PosixFilePermission>> dirPermissions = PosixFilePermissions
+ .asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE));
+ }
+
+ private FileUtil() {
+ }
+
public static Path getCurrentDirectory() {
return Paths.get(".").toAbsolutePath().normalize();
}
-
+
public static void setFileContents(String str, File file) throws Exception {
try (FileWriter writer = new FileWriter(file)) {
writer.append(str);
writer.flush();
}
}
-
+
public static String replaceExtension(String filename, String newExtension) {
int dotIndex = filename.lastIndexOf('.');
if (dotIndex > -1) {
- filename = filename.substring(0, dotIndex+1) + newExtension;
+ filename = filename.substring(0, dotIndex + 1) + newExtension;
}
return filename;
}
-
+
public static String removeExtension(String filename) {
int dotIndex = filename.lastIndexOf('.');
if (dotIndex > -1) {
@@ -55,21 +88,22 @@
}
return filename;
}
-
+
public static String getFileName(String path) {
return getFileName(path, true);
}
-
+
public static String getFileName(String path, boolean includeExtension) {
- String filename = path.substring(path.replace("\\", "/").lastIndexOf('/')+1);
+ String filename = path.substring(path.replace("\\", "/").lastIndexOf('/') + 1);
if (!includeExtension) {
filename = removeExtension(filename);
}
return filename;
}
-
+
/**
* Copied from @linkplain{https://stackoverflow.com/a/3571239/5870336}
+ *
* @param filename
* @return
* @since 1.6
@@ -78,11 +112,11 @@
String extension = "";
int dotIndex = filename.lastIndexOf('.');
if (dotIndex > Math.max(filename.lastIndexOf('/'), filename.lastIndexOf('\\'))) {
- extension = filename.substring(dotIndex+1);
+ extension = filename.substring(dotIndex + 1);
}
return extension;
}
-
+
public static String getFileContents(File file) throws Exception {
final StringBuffer buffer = new StringBuffer();
final String lineSeparator = System.getProperty("line.separator");
@@ -91,10 +125,10 @@
buffer.append(line);
buffer.append(lineSeparator);
}
-
+
return buffer.toString();
}
-
+
public static Collection<String> getFileLineContents(File file) throws Exception {
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
final List<String> lines = new LinkedList<>();
@@ -109,7 +143,7 @@
return lines;
}
}
-
+
public static String getAbsolutePath(String basePath, String relativePath) {
File file = new File(relativePath);
if (!file.isAbsolute()) {
@@ -117,148 +151,197 @@
}
return file.getAbsolutePath();
}
-
+
+ /**
+ * Gets a file stored as a resource in a jar. Since not all users of the file
+ * can read from inside jars, we get the file as a stream and create a temp file
+ * with its contents.
+ *
+ * @param name
+ * @param relativeTo
+ * @return
+ */
public static File getFile(String name, Class<?> relativeTo) {
- try {
- final File clazz = new File(URLDecoder.decode(relativeTo.getResource(relativeTo.getSimpleName() + ".class").getFile(), "UTF-8"));
-
- return new File(clazz.getParentFile(), name);
-
- } catch (UnsupportedEncodingException e) {
- throw new IllegalArgumentException(name + " could not be located relative to " + relativeTo);
- }
+ logger.info("getFile {}@{}", name, relativeTo.getSimpleName());
+ InputStream is = relativeTo.getResourceAsStream(name);
+ return inputStreamToFile(is, name);
}
-
+
+ @Deprecated
public static File getDirectoryOf(Class<?> clazz) {
return getFile(clazz.getSimpleName() + ".class", clazz).getParentFile();
}
-
+
+ @Deprecated
public static String getPath(String name, Class<?> relativeTo) {
return getFile(name, relativeTo).getAbsolutePath();
}
-
- public static void checkFileExists(final File file) throws FileNotFoundException {
- if (!file.exists()) {
- throw new FileNotFoundException(
- "File " + file.getPath() + " does not exist");
- }
- }
-
- public static File copyToTemp(File srcFile) throws IOException {
- File tmpFile = File.createTempFile("filecompare", "tmp");
- if (srcFile.isDirectory()) {
- tmpFile.delete();
- tmpFile.mkdir();
- }
- copy(srcFile, tmpFile);
- return tmpFile;
- }
-
- public static void copy(File srcFile, File dstFile) throws IOException {
- if (srcFile.isDirectory()) {
- dstFile.mkdir();
- for (File entry : srcFile.listFiles()) {
- copy(entry, new File(dstFile, entry.getName()));
- }
- }
- else {
- // Based on the second answer in http://stackoverflow.com/questions/106770.
- FileInputStream isSrc = null;
- FileOutputStream osDst = null;
- FileChannel chSrc = null;
- FileChannel chDst = null;
- try {
- isSrc = new FileInputStream(srcFile);
- osDst = new FileOutputStream(dstFile);
- chSrc = isSrc.getChannel();
- chDst = osDst.getChannel();
- final long srcBytes = srcFile.length();
- long transferred = 0;
- while (transferred < srcBytes) {
- transferred += chDst.transferFrom(chSrc, transferred, srcBytes);
- chDst.position(transferred);
- }
- }
- finally {
- if (chDst != null) {
- chDst.close();
- }
- else if (osDst != null) {
- osDst.close();
- }
-
- if (chSrc != null) {
- chSrc.close();
- }
- else if (isSrc != null) {
- isSrc.close();
- }
- }
- }
- }
-
- public static Set<String> listFilesAsSet(File fileExpected) {
- return new HashSet<>(Arrays.asList(fileExpected.list()));
- }
-
- /**
- * We implement our own comparison algorithm here, so we don't need Eclipse
- * Compare to compute differences, but rather only to show them in the UI.
- */
- public static boolean sameContents(File fileExpected, File fileActual, Set<String> ignoreFilenames) throws IOException {
- if (fileExpected.isDirectory() != fileActual.isDirectory()) {
- // One is a file, the other is a directory: not the same
- return false;
- }
-
- if (fileExpected.isDirectory()) {
- // Both are directories: they should contain the same filenames,
- // and each pair should have the same contents
- final Set<String> expectedFilenames = listFilesAsSet(fileExpected);
+
+ public static void checkFileExists(final File file) throws FileNotFoundException {
+ if (!file.exists()) {
+ throw new FileNotFoundException("File " + file.getPath() + " does not exist");
+ }
+ }
+
+ public static File createTempFile(String name) {
+ return createTempFile(name, "tmp");
+ }
+
+ public static File createTempFile(String name, String extension) {
+ Path tmpFile;
+ try {
+ // tmpFile = Files.createTempFile(name, extension);
+ tmpFile = createTempFile(null, name, extension);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Could not create temp file ", e);
+ }
+ return tmpFile.toFile();
+ }
+
+ public static File createTempDir(String name) {
+ return createTempDir(name, false);
+ }
+
+ public static File createTempDir(String name, boolean reuse) {
+ Path tmpFile = null;
+ if (reuse) {
+ DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
+ @Override
+ public boolean accept(Path file) throws IOException {
+ return (Files.isDirectory(file) && file.getFileName().startsWith(Paths.get(name)));
+ }
+ };
+ Iterator<Path> it;
+ try {
+ it = Files.newDirectoryStream(tmpdir, filter).iterator();
+ tmpFile = it.hasNext() ? it.next() : null;
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ if (tmpFile == null) {
+ try {
+ tmpFile = createTempDirectory(null, name);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Could not create temp directory ", e);
+ }
+ }
+ return tmpFile.toFile();
+ }
+
+ public static File copyToTemp(File srcFile) throws IOException {
+ File tmpFile = File.createTempFile("filecompare", "tmp");
+ if (srcFile.isDirectory()) {
+ tmpFile.delete();
+ tmpFile.mkdir();
+ }
+ copy(srcFile, tmpFile);
+ return tmpFile;
+ }
+
+ public static void copy(File srcFile, File dstFile) throws IOException {
+ if (srcFile.isDirectory()) {
+ dstFile.mkdir();
+ for (File entry : srcFile.listFiles()) {
+ copy(entry, new File(dstFile, entry.getName()));
+ }
+ } else {
+ // Based on the second answer in http://stackoverflow.com/questions/106770.
+ FileInputStream isSrc = null;
+ FileOutputStream osDst = null;
+ FileChannel chSrc = null;
+ FileChannel chDst = null;
+ try {
+ isSrc = new FileInputStream(srcFile);
+ osDst = new FileOutputStream(dstFile);
+ chSrc = isSrc.getChannel();
+ chDst = osDst.getChannel();
+ final long srcBytes = srcFile.length();
+ long transferred = 0;
+ while (transferred < srcBytes) {
+ transferred += chDst.transferFrom(chSrc, transferred, srcBytes);
+ chDst.position(transferred);
+ }
+ } finally {
+ if (chDst != null) {
+ chDst.close();
+ } else if (osDst != null) {
+ osDst.close();
+ }
+
+ if (chSrc != null) {
+ chSrc.close();
+ } else if (isSrc != null) {
+ isSrc.close();
+ }
+ }
+ }
+ }
+
+ public static Set<String> listFilesAsSet(File fileExpected) {
+ return new HashSet<>(Arrays.asList(fileExpected.list()));
+ }
+
+ /**
+ * We implement our own comparison algorithm here, so we don't need Eclipse
+ * Compare to compute differences, but rather only to show them in the UI.
+ */
+ public static boolean sameContents(File fileExpected, File fileActual, Set<String> ignoreFilenames)
+ throws IOException {
+ if (fileExpected.isDirectory() != fileActual.isDirectory()) {
+ // One is a file, the other is a directory: not the same
+ return false;
+ }
+
+ if (fileExpected.isDirectory()) {
+ // Both are directories: they should contain the same filenames,
+ // and each pair should have the same contents
+ final Set<String> expectedFilenames = listFilesAsSet(fileExpected);
final Set<String> actualFilenames = listFilesAsSet(fileActual);
expectedFilenames.removeAll(ignoreFilenames);
actualFilenames.removeAll(ignoreFilenames);
-
- if (!expectedFilenames.equals(actualFilenames)) {
- return false;
- }
- for (String filename : expectedFilenames) {
- final File expectedEntry = new File(fileExpected, filename);
- final File actualEntry = new File(fileActual, filename);
- if (!sameContents(expectedEntry, actualEntry, ignoreFilenames)) {
- return false;
- }
- }
- return true;
- }
- else {
- if (fileExpected.length() != fileActual.length()) {
- // Different length: no need to read the files
- return false;
- }
-
+
+ if (!expectedFilenames.equals(actualFilenames)) {
+ return false;
+ }
+ for (String filename : expectedFilenames) {
+ final File expectedEntry = new File(fileExpected, filename);
+ final File actualEntry = new File(fileActual, filename);
+ if (!sameContents(expectedEntry, actualEntry, ignoreFilenames)) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ if (fileExpected.length() != fileActual.length()) {
+ // Different length: no need to read the files
+ return false;
+ }
+
try (FileInputStream isExpected = new FileInputStream(fileExpected)) {
try (FileInputStream isActual = new FileInputStream(fileActual)) {
return sameContents(isExpected, isActual);
}
- }
- }
- }
-
- public static boolean sameContents(InputStream isExpected, InputStream isActual) throws IOException {
- int chExpected, chActual;
-
- do {
- chExpected = isExpected.read();
- chActual = isActual.read();
- }
- while (chExpected == chActual && chExpected > 0 && chActual > 0);
-
- return chExpected == chActual;
+ }
+ }
}
-
+
+ public static boolean sameContents(InputStream isExpected, InputStream isActual) throws IOException {
+ int chExpected, chActual;
+
+ do {
+ chExpected = isExpected.read();
+ chActual = isActual.read();
+ } while (chExpected == chActual && chExpected > 0 && chActual > 0);
+
+ return chExpected == chActual;
+ }
+
/**
- * WARNIING: Use with caution! Deletes all contents and sub-directories of the specified path.
+ * WARNIING: Use with caution! Deletes all contents and sub-directories of the
+ * specified path.
+ *
* @param dir The absolute path to the directory.
* @throws IOException
* @since 1.6
@@ -266,31 +349,193 @@
public static void deleteDirectory(String dir) throws IOException {
Path path = Paths.get(dir);
if (Files.exists(path)) {
- Files.walk(path)
- .map(Path::toFile)
- .sorted((o1, o2) -> -o1.compareTo(o2))
- .forEach(File::delete);
+ Files.walk(path).map(Path::toFile).sorted((o1, o2) -> -o1.compareTo(o2)).forEach(File::delete);
}
}
-
+
/**
- * Reads entire directory recursively, mapping the contents of each file
- * as a string to its path.
+ * Reads entire directory recursively, mapping the contents of each file as a
+ * string to its path.
*
* @param dir The root directory.
* @return The contents of each file in the directory and its subdirectories.
* @throws IOException
* @since 1.6
*/
- public static Map<Path, String> readDirectory(String dir) throws IOException {
+ public static Map<Path, String> readDirectory(String dir) throws IOException {
Map<Path, String> contents = new HashMap<>();
-
- for (Path path : ((Iterable<Path>)Files.walk(Paths.get(dir))::iterator)) {
+
+ for (Path path : ((Iterable<Path>) Files.walk(Paths.get(dir))::iterator)) {
if (Files.isRegularFile(path)) {
contents.put(path, new String(Files.readAllBytes(path)));
}
}
-
+
return contents;
- }
+ }
+
+ private static File inputStreamToFile(InputStream inputStream, String name) {
+ logger.debug("inputStreamToFile {}", name);
+ OutputStream outputStream = null;
+ String prefix = name;
+ String suffix = "";
+ Path dirStructure = null;
+
+ // Name might be a path, get the file name, remove it
+ if (name.contains("/")) {
+ dirStructure = Paths.get(tmpdir.toString(), name.substring(0, name.lastIndexOf("/")), "/");
+ dirStructure.toFile().mkdirs();
+ name = name.substring(name.lastIndexOf("/") + 1);
+ logger.debug("inputStreamToFile {}", name);
+ }
+
+ String[] parts = name.split("\\.");
+ if (parts.length == 2) {
+ prefix = parts[0];
+ suffix = "." + parts[1];
+ logger.debug("splitting name and extension: {} - {}", prefix, suffix);
+ }
+ File file = null;
+ try {
+ Path tempFile;
+ try {
+ // tempFile = Files.createTempFile(prefix, sufix);
+ tempFile = createTempFile(dirStructure, prefix, suffix);
+ } catch (IllegalArgumentException e) {
+ logger.error("Error creating temp file: {}-{}", prefix, suffix, e);
+ throw e;
+ }
+ outputStream = new FileOutputStream(tempFile.toFile());
+
+ int read = 0;
+ byte[] bytes = new byte[1024];
+ logger.debug("{} bytes available", inputStream.available());
+ while ((read = inputStream.read(bytes)) != -1) {
+ logger.debug("{} bytes read from input", read);
+ outputStream.write(bytes, 0, read);
+ }
+ logger.debug("Copying data into temp file Done!");
+// Runtime.getRuntime().addShutdownHook(new Thread() {
+// @Override
+// public void run() {
+// try {
+// Files.delete(tempFile);
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+// }
+// });
+ file = tempFile.toFile();
+
+ } catch (IOException e) {
+ logger.error("Unable to create File for resoruce", e);
+ e.printStackTrace();
+ } finally {
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (outputStream != null) {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+
+ return file;
+ }
+
+ static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException {
+ return create(dir, prefix, null, true, attrs);
+ }
+
+ static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs) throws IOException {
+ return create(dir, prefix, suffix, false, attrs);
+ }
+
+ /**
+ * Creates a file or directory in in the given given directory (or in the
+ * temporary directory if dir is {@code null}).
+ */
+ private static Path create(Path dir, String prefix, String suffix, boolean createDirectory,
+ FileAttribute<?>[] attrs) throws IOException {
+ if (prefix == null)
+ prefix = "";
+ if (suffix == null)
+ suffix = (createDirectory) ? "" : ".tmp";
+ if (dir == null)
+ dir = tmpdir;
+
+ // in POSIX environments use default file and directory permissions
+ // if initial permissions not given by caller.
+ if (isPosix && (dir.getFileSystem() == FileSystems.getDefault())) {
+ if (attrs.length == 0) {
+ // no attributes so use default permissions
+ attrs = new FileAttribute<?>[1];
+ attrs[0] = (createDirectory) ? PosixPermissions.dirPermissions : PosixPermissions.filePermissions;
+ } else {
+ // check if posix permissions given; if not use default
+ boolean hasPermissions = false;
+ for (int i = 0; i < attrs.length; i++) {
+ if (attrs[i].name().equals("posix:permissions")) {
+ hasPermissions = true;
+ break;
+ }
+ }
+ if (!hasPermissions) {
+ FileAttribute<?>[] copy = new FileAttribute<?>[attrs.length + 1];
+ System.arraycopy(attrs, 0, copy, 0, attrs.length);
+ attrs = copy;
+ attrs[attrs.length - 1] = (createDirectory) ? PosixPermissions.dirPermissions
+ : PosixPermissions.filePermissions;
+ }
+ }
+ }
+
+ // loop generating random names until file or directory can be created
+ SecurityManager sm = System.getSecurityManager();
+ //for (;;) {
+ Path f;
+ try {
+ f = generatePath(prefix, suffix, dir);
+ } catch (InvalidPathException e) {
+ // don't reveal temporary directory location
+ if (sm != null)
+ throw new IllegalArgumentException("Invalid prefix or suffix");
+ throw e;
+ }
+ try {
+ if (createDirectory) {
+ return Files.createDirectory(f, attrs);
+ } else {
+ return Files.createFile(f, attrs);
+ }
+ } catch (SecurityException e) {
+ // don't reveal temporary directory location
+ if (dir == tmpdir && sm != null)
+ throw new SecurityException("Unable to create temporary file or directory");
+ throw e;
+ } catch (FileAlreadyExistsException e) {
+ // FIXME Add the file deletion so we dont need this.
+ // FIXME or make each test use a different folder...
+ logger.debug("File found, reusing");
+ return f;
+
+ }
+ //}
+ }
+
+ private static Path generatePath(String prefix, String suffix, Path dir) {
+ Path name = dir.getFileSystem().getPath(prefix + suffix);
+ // the generated name should be a simple file name
+ if (name.getParent() != null)
+ throw new IllegalArgumentException("Invalid prefix or suffix");
+ return dir.resolve(name);
+ }
}
diff --git a/plugins/org.eclipse.epsilon.dependencies/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.dependencies/META-INF/MANIFEST.MF
index ec84001..c640bdd 100644
--- a/plugins/org.eclipse.epsilon.dependencies/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.dependencies/META-INF/MANIFEST.MF
@@ -4,6 +4,7 @@
Bundle-SymbolicName: org.eclipse.epsilon.dependencies
Bundle-Version: 1.6.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.antlr.runtime;bundle-version="[3.1.1,3.3.0]";visibility:=reexport
+Require-Bundle: org.antlr.runtime;bundle-version="[3.1.1,3.3.0]";visibility:=reexport,
+ org.slf4j.api;bundle-version="1.7.2";visibility:=reexport
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Automatic-Module-Name: org.eclipse.epsilon.dependencies
diff --git a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
index 6495b4e..1e9a8d1 100644
--- a/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
+++ b/plugins/org.eclipse.epsilon.emc.emf/src/org/eclipse/epsilon/emc/emf/EmfUtil.java
@@ -37,8 +37,12 @@
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.epsilon.common.util.OperatingSystem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class EmfUtil {
+
+ private static Logger logger = LoggerFactory.getLogger(EmfUtil.class);
public static EStructuralFeature getEStructuralFeature(EClass eClass, String featureName) {
try {
@@ -184,6 +188,7 @@
adjustNsAndPrefix(metamodel, p, useUriForResource);
registry.put(p.getNsURI(), p);
+ logger.debug("Registered metamodel with URI {}", p.getNsURI());
ePackages.add(p);
}
}
diff --git a/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform-neon.target b/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform-neon.target
index 8946de6..d9e88cb 100644
--- a/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform-neon.target
+++ b/plugins/org.eclipse.epsilon.targetplatform/org.eclipse.epsilon.targetplatform-neon.target
@@ -29,8 +29,6 @@
<unit id="org.apache.commons.math3.source" version="3.5.0.v20160301-1110"/>
<unit id="org.dom4j" version="1.6.1.v201312101416"/>
<unit id="org.dom4j.source" version="1.6.1.v201312101416"/>
-<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
-<unit id="org.hamcrest.core.source" version="1.3.0.v201303031735"/>
<unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
<unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
<unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/>
diff --git a/tests/org.eclipse.epsilon.commons.test/src/org/eclipse/epsilon/commons/util/MultimapTests.java b/tests/org.eclipse.epsilon.commons.test/src/org/eclipse/epsilon/commons/util/MultimapTests.java
index 237709c..454012b 100644
--- a/tests/org.eclipse.epsilon.commons.test/src/org/eclipse/epsilon/commons/util/MultimapTests.java
+++ b/tests/org.eclipse.epsilon.commons.test/src/org/eclipse/epsilon/commons/util/MultimapTests.java
@@ -21,7 +21,6 @@
import java.util.Arrays;
import java.util.Collections;
import org.eclipse.epsilon.common.util.Multimap;
-import org.hamcrest.collection.IsEmptyCollection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/tests/org.eclipse.epsilon.concordance.core.test/src/org/eclipse/epsilon/concordance/model/UriContentReaderTests.java b/tests/org.eclipse.epsilon.concordance.core.test/src/org/eclipse/epsilon/concordance/model/UriContentReaderTests.java
index 332a3b7..0043b4d 100644
--- a/tests/org.eclipse.epsilon.concordance.core.test/src/org/eclipse/epsilon/concordance/model/UriContentReaderTests.java
+++ b/tests/org.eclipse.epsilon.concordance.core.test/src/org/eclipse/epsilon/concordance/model/UriContentReaderTests.java
@@ -25,7 +25,7 @@
public class UriContentReaderTests {
private static final String NEW_LINE = System.getProperty("line.separator");
- private static final File file = FileUtil.getFile("example.txt", UriContentReaderTests.class);
+ private static final File file = FileUtil.createTempFile("example", ".txt");
@BeforeClass
public static void setupOnce() throws Exception {
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/Engine.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/Engine.java
index a3a18ab..d632870 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/Engine.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/Engine.java
@@ -13,6 +13,7 @@
import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.nio.file.Paths;
import java.util.Collection;
import org.eclipse.epsilon.common.parse.problem.ParseProblem;
@@ -42,7 +43,12 @@
NonExistentImport = FileUtil.getFile("NonExistentImport.egl", Engine.class);
runtimeExceptionProgram = FileUtil.getFile("RuntimeException.egl", Engine.class);
- invalidPath = FileUtil.getFile("Inva*lid.egl", Engine.class);
+ // FIXME We want a temp file
+ // invalidPath = FileUtil.getFile("Inva*lid.egl", Engine.class);
+ invalidPath = Paths.get("Inva*lid.egl").toFile();
+ // Create imported files
+ FileUtil.getFile("Operations.eol", Engine.class);
+ FileUtil.getFile("Operations.egl", Engine.class);
}
@Test
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/subtemplates/InvokingSubtemplates.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/subtemplates/InvokingSubtemplates.java
index 25e7228..96c8254 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/subtemplates/InvokingSubtemplates.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/engine/subtemplates/InvokingSubtemplates.java
@@ -40,6 +40,9 @@
factory.getTemplateExecutionListeners().add(listener);
final File driver = getFile("Driver.egl", InvokingSubtemplates.class);
+ // Load imported files
+ getFile("first/First.egl", InvokingSubtemplates.class);
+ getFile("second/Second.egl", InvokingSubtemplates.class);
actual = AcceptanceTestUtil.run(factory, driver, new IModel[]{});
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/extensibility/Extensibility.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/extensibility/Extensibility.java
index 7ef4d9f..74ae509 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/extensibility/Extensibility.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/extensibility/Extensibility.java
@@ -30,19 +30,23 @@
@BeforeClass
public static void setUpOnce() {
Driver = FileUtil.getFile("Driver.egl", Extensibility.class);
+ // Load imported files
+ FileUtil.getFile("GenerateClasses.egl", Extensibility.class);
+ FileUtil.getFile("GenerateFields.egl", Extensibility.class);
}
@Test
public void testValid() throws Exception {
AcceptanceTestUtil.run(initialiseFactory(), Driver, Model.OOInstance);
- final File generatedFile = FileUtil.getFile("Pet.java", Extensibility.class);
+ final File generatedFile = FileUtil.createTempFile("Pet", ".java");
assertEquals(2, CountingTemplate.countFor(generatedFile));
}
private static CountingTemplateFactory initialiseFactory() throws EglRuntimeException {
final CountingTemplateFactory factory = new CountingTemplateFactory();
- factory.setOutputRoot(FileUtil.getDirectoryOf(Extensibility.class).getAbsolutePath());
+ factory.setOutputRoot(FileUtil.createTempDir(Extensibility.class.getSimpleName()).getAbsolutePath());
+ //factory.setOutputRoot(FileUtil.getDirectoryOf(Extensibility.class).getAbsolutePath());
return factory;
}
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/formatters/Formatters.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/formatters/Formatters.java
index 551c308..566ccb7 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/formatters/Formatters.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/formatters/Formatters.java
@@ -41,6 +41,10 @@
TemplateSpecificFormatterGroup = FileUtil.getFile("TemplateSpecificFormatterGroup.egl", Formatters.class);
TemplateSpecificFormatterGroupExpected = FileUtil.getFile("TemplateSpecificFormatterGroup.txt", Formatters.class);
+
+ // Load imported files
+ FileUtil.getFile("FirstSubtemplate.egl", Formatters.class);
+ FileUtil.getFile("SecondSubtemplate.egl", Formatters.class);
}
@Test
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/merge/Merge.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/merge/Merge.java
index e1dca48..9a9bd63 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/merge/Merge.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/merge/Merge.java
@@ -64,7 +64,10 @@
ExpectedGenerate = FileUtil.getFile("Expected_generate.txt", Merge.class);
ExpectedGenerateAbsent = FileUtil.getFile("Expected_generateAbsent.txt", Merge.class);
ExpectedOverwrite = FileUtil.getFile("Expected_overwrite.txt", Merge.class);
-
+
+ // Load imported files
+ FileUtil.getFile("OOClass2JavaClass.egl", Merge.class);
+ FileUtil.getFile("OOClass2JavaClassUnprotected.egl", Merge.class);
org.eclipse.epsilon.egl.util.FileUtil.write(PetStore, ExpectedStore);
org.eclipse.epsilon.egl.util.FileUtil.write(PetOverwrite, ExpectedStore);
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/Output.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/Output.java
index 08f4dbd..9799bea 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/Output.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/Output.java
@@ -27,6 +27,12 @@
public static void setUpOnce() {
process = FileUtil.getFile("Process.egl", Output.class);
hierachy = FileUtil.getFile("Hierachy.egl", Output.class);
+ // Create imported files
+ FileUtil.getFile("SubTemplate1.egl", Output.class);
+ FileUtil.getFile("SubTemplate2.egl", Output.class);
+ FileUtil.getFile("SubTemplate3.egl", Output.class);
+ FileUtil.getFile("HierachySubTemplate.egl", Output.class);
+ FileUtil.getFile("HierachySubSubTemplate.egl", Output.class);
}
@Test
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/lineNumbers/CurrentLineNumber.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/lineNumbers/CurrentLineNumber.java
index 8640284..0c3bb65 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/lineNumbers/CurrentLineNumber.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/output/lineNumbers/CurrentLineNumber.java
@@ -47,6 +47,8 @@
private static File getParentTemplate() {
+ // Load imported file
+ FileUtil.getFile("Child.egl", CurrentLineNumber.class);
return FileUtil.getFile("Parent.egl", CurrentLineNumber.class);
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/traceability/Traceability.java b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/traceability/Traceability.java
index 74f660e..e20f786 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/traceability/Traceability.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.acceptance/src/org/eclipse/epsilon/egl/test/acceptance/traceability/Traceability.java
@@ -32,8 +32,8 @@
private static final File program = FileUtil.getFile("Hierachy.egl", Traceability.class);
private static final File subProgram = FileUtil.getFile("Traceability.egl", Traceability.class);
private static final File subSubProgram = FileUtil.getFile("OOClass2JavaClass.egl", Traceability.class);
- private static final File programOutput = FileUtil.getFile("Traceability.txt", Traceability.class);
- private static final File subProgramOutput = FileUtil.getFile("OO2Java.txt", Traceability.class);
+ private static final File programOutput = FileUtil.createTempFile("Traceability", ".txt");
+ private static final File subProgramOutput = FileUtil.createTempFile("OO2Java", ".txt");
@Before
public void setUp() throws IOException {
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglFileGeneratingTemplate.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglFileGeneratingTemplate.java
index a6cf990..0a848f4 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglFileGeneratingTemplate.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglFileGeneratingTemplate.java
@@ -37,15 +37,15 @@
@BeforeClass
public static void setUpOnce() throws IOException {
- PROGRAM = org.eclipse.epsilon.common.util.FileUtil.getFile("Generate.egl", TestEglFileGeneratingTemplate.class);
- OUTPUT1 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output1.txt", TestEglFileGeneratingTemplate.class);
- OUTPUT2 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output2.txt", TestEglFileGeneratingTemplate.class);
- OUTPUT3 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output3.txt", TestEglFileGeneratingTemplate.class);
- OUTPUT4 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output4.txt", TestEglFileGeneratingTemplate.class);
- OUTPUT5 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output5.txt", TestEglFileGeneratingTemplate.class);
- OUTPUT6 = org.eclipse.epsilon.common.util.FileUtil.getFile("Output6.txt", TestEglFileGeneratingTemplate.class);
- EXISTING = org.eclipse.epsilon.common.util.FileUtil.getFile("Existing.txt", TestEglFileGeneratingTemplate.class);
- GENERATED = org.eclipse.epsilon.common.util.FileUtil.getFile("Generated.txt", TestEglFileGeneratingTemplate.class);
+ PROGRAM = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Generate", ".egl");
+ OUTPUT1 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output1", ".txt");
+ OUTPUT2 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output2", ".txt");
+ OUTPUT3 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output3", ".txt");
+ OUTPUT4 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output4", ".txt");
+ OUTPUT5 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output5", ".txt");
+ OUTPUT6 = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Output6", ".txt");
+ EXISTING = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Existing", ".txt");
+ GENERATED = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Generated", ".txt");
if (!EXISTING.exists()) EXISTING.createNewFile();
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglTemplate.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglTemplate.java
index 5ed221d..0220429 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglTemplate.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestEglTemplate.java
@@ -44,13 +44,13 @@
@BeforeClass
public static void setUpOnce() {
- SIMPLE = org.eclipse.epsilon.common.util.FileUtil.getFile("Simple.egl", TestEglTemplate.class);
- ABSENT = org.eclipse.epsilon.common.util.FileUtil.getFile("Absent.egl", TestEglTemplate.class);
+ SIMPLE = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Simple", ".egl");
+ ABSENT = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Absent", ".egl");
- POPULATE = org.eclipse.epsilon.common.util.FileUtil.getFile("Populate.egl", TestEglTemplate.class);
+ POPULATE = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Populate", ".egl");
- MERGE = org.eclipse.epsilon.common.util.FileUtil.getFile("Merge.egl", TestEglTemplate.class);
- EXISTING = org.eclipse.epsilon.common.util.FileUtil.getFile("Existing.txt", TestEglTemplate.class);
+ MERGE = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Merge", ".egl");
+ EXISTING = org.eclipse.epsilon.common.util.FileUtil.createTempFile("Existing", ".txt");
if (ABSENT.exists()) ABSENT.delete();
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestTemplateFactoryModuleAdapter.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestTemplateFactoryModuleAdapter.java
index e30b49e..a9e5c66 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestTemplateFactoryModuleAdapter.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/TestTemplateFactoryModuleAdapter.java
@@ -38,9 +38,9 @@
@BeforeClass
public static void setUpOnce() throws IOException {
- VALID_PATH = FileUtil.getFile("Valid.txt", TestTemplateFactoryModuleAdapter.class);
- INVALID_PATH = FileUtil.getFile("Invalid.txt", TestTemplateFactoryModuleAdapter.class);
- INVALID_RUNTIME_PATH = FileUtil.getFile("InvalidRuntime.txt", TestTemplateFactoryModuleAdapter.class);
+ VALID_PATH = FileUtil.createTempFile("Valid", ".txt");
+ INVALID_PATH = FileUtil.createTempFile("Invalid.", "t.xt");
+ INVALID_RUNTIME_PATH = FileUtil.createTempFile("InvalidRuntime", ".txt");
org.eclipse.epsilon.egl.util.FileUtil.write(VALID_PATH, valid);
org.eclipse.epsilon.egl.util.FileUtil.write(INVALID_PATH, invalid);
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLConfigFileReader.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLConfigFileReader.java
index dd5d1d3..3cbbdf5 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLConfigFileReader.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLConfigFileReader.java
@@ -56,30 +56,30 @@
@BeforeClass
public static void setUpOnce() throws UnsupportedEncodingException {
- invalidPath = FileUtil.getPath("In*alid.xml", TestXMLConfigFileReader.class);
- nonExistentPath = FileUtil.getPath("Absent.xml", TestXMLConfigFileReader.class);
+ invalidPath = "In*alid.xml";
+ nonExistentPath = "Absent.xml";
- empty = FileUtil.getPath("Empty.xml", TestXMLConfigFileReader.class);
- incorrectRoot = FileUtil.getPath("IncorrectRoot.xml", TestXMLConfigFileReader.class);
+ empty = FileUtil.getFile("Empty.xml", TestXMLConfigFileReader.class).getPath();
+ incorrectRoot = FileUtil.getFile("IncorrectRoot.xml", TestXMLConfigFileReader.class).getPath();
- contentTypesContainingCDATA = FileUtil.getPath("ContentTypesContainingCDATA.xml", TestXMLConfigFileReader.class);
- contentTypesContainingWrongChild = FileUtil.getPath("ContentTypesContainingWrongChild.xml", TestXMLConfigFileReader.class);
- contentTypesExtraAttributes = FileUtil.getPath("ContentTypesExtraAttributes.xml", TestXMLConfigFileReader.class);
- emptyContentTypes = FileUtil.getPath("EmptyContentTypes.xml", TestXMLConfigFileReader.class);
+ contentTypesContainingCDATA = FileUtil.getFile("ContentTypesContainingCDATA.xml", TestXMLConfigFileReader.class).getPath();
+ contentTypesContainingWrongChild = FileUtil.getFile("ContentTypesContainingWrongChild.xml", TestXMLConfigFileReader.class).getPath();
+ contentTypesExtraAttributes = FileUtil.getFile("ContentTypesExtraAttributes.xml", TestXMLConfigFileReader.class).getPath();
+ emptyContentTypes = FileUtil.getFile("EmptyContentTypes.xml", TestXMLConfigFileReader.class).getPath();
- contentTypeContainingCDATA = FileUtil.getPath("ContentTypeContainingCDATA.xml", TestXMLConfigFileReader.class);
- contentTypeContainingWrongChild = FileUtil.getPath("ContentTypeContainingWrongChild.xml", TestXMLConfigFileReader.class);
- contentTypeExtraAttributes = FileUtil.getPath("ContentTypeExtraAttributes.xml", TestXMLConfigFileReader.class);
- emptyContentType = FileUtil.getPath("EmptyContentType.xml", TestXMLConfigFileReader.class);
- unnamedContentType = FileUtil.getPath("UnnamedContentType.xml", TestXMLConfigFileReader.class);
+ contentTypeContainingCDATA = FileUtil.getFile("ContentTypeContainingCDATA.xml", TestXMLConfigFileReader.class).getPath();
+ contentTypeContainingWrongChild = FileUtil.getFile("ContentTypeContainingWrongChild.xml", TestXMLConfigFileReader.class).getPath();
+ contentTypeExtraAttributes = FileUtil.getFile("ContentTypeExtraAttributes.xml", TestXMLConfigFileReader.class).getPath();
+ emptyContentType = FileUtil.getFile("EmptyContentType.xml", TestXMLConfigFileReader.class).getPath();
+ unnamedContentType = FileUtil.getFile("UnnamedContentType.xml", TestXMLConfigFileReader.class).getPath();
- commentStyleContainingCDATA = FileUtil.getPath("CommentStyleContainingCDATA.xml", TestXMLConfigFileReader.class);
- commentStyleEmptyEndsWith = FileUtil.getPath("CommentStyleEmptyEndsWith.xml", TestXMLConfigFileReader.class);
- commentStyleEmptyStartsWith = FileUtil.getPath("CommentStyleEmptyStartsWith.xml", TestXMLConfigFileReader.class);
- commentStyleExtraAttributes = FileUtil.getPath("CommentStyleExtraAttributes.xml", TestXMLConfigFileReader.class);
- emptyCommentStyle = FileUtil.getPath("EmptyCommentStyle.xml", TestXMLConfigFileReader.class);
+ commentStyleContainingCDATA = FileUtil.getFile("CommentStyleContainingCDATA.xml", TestXMLConfigFileReader.class).getPath();
+ commentStyleEmptyEndsWith = FileUtil.getFile("CommentStyleEmptyEndsWith.xml", TestXMLConfigFileReader.class).getPath();
+ commentStyleEmptyStartsWith = FileUtil.getFile("CommentStyleEmptyStartsWith.xml", TestXMLConfigFileReader.class).getPath();
+ commentStyleExtraAttributes = FileUtil.getFile("CommentStyleExtraAttributes.xml", TestXMLConfigFileReader.class).getPath();
+ emptyCommentStyle = FileUtil.getFile("EmptyCommentStyle.xml", TestXMLConfigFileReader.class).getPath();
- valid = FileUtil.getPath("Valid.xml", TestXMLConfigFileReader.class);
+ valid = FileUtil.getFile("Valid.xml", TestXMLConfigFileReader.class).getPath();
}
private Map<String, CompositePartitioner> read(String path) throws FileNotFoundException, PersistenceException {
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLContentTypeRepository.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLContentTypeRepository.java
index 643f8c4..d3c0da8 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLContentTypeRepository.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/config/TestXMLContentTypeRepository.java
@@ -14,6 +14,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.nio.file.Paths;
import org.eclipse.epsilon.egl.EglTemplateFactory;
import org.eclipse.epsilon.egl.execute.context.EglContext;
@@ -34,9 +35,9 @@
@BeforeClass
public static void setUpOnce() {
- invalidPath = FileUtil.getPath("In*alid.xml", TestXMLContentTypeRepository.class);
- nonExistentPath = FileUtil.getPath("Absent.xml", TestXMLContentTypeRepository.class);
- valid = FileUtil.getPath("Valid.xml", TestXMLContentTypeRepository.class);
+ invalidPath = Paths.get("Inva*lid.xml").toString();
+ nonExistentPath = "Absent.xml";
+ valid = FileUtil.getFile("Valid.xml", TestXMLContentTypeRepository.class).getPath();
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/output/TestWriter.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/output/TestWriter.java
index 0825107..9a3d58c 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/output/TestWriter.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/output/TestWriter.java
@@ -30,10 +30,13 @@
@BeforeClass
public static void setUpOnce() throws IOException {
- VALID_PATH = FileUtil.getFile("Valid.txt", TestWriter.class);
- READ_ONLY_PATH = FileUtil.getFile("ReadOnly.txt", TestWriter.class);
+ // FIXME What we actually want is some temp paths
+ //VALID_PATH = FileUtil.getFile("Valid.txt", TestWriter.class);
+ //READ_ONLY_PATH = FileUtil.getFile("ReadOnly.txt", TestWriter.class);
+ VALID_PATH = FileUtil.createTempFile("Valid.txt");
+ READ_ONLY_PATH = FileUtil.createTempFile("ReadOnly.txt");
- READ_ONLY_PATH.createNewFile();
+ // READ_ONLY_PATH.createNewFile();
READ_ONLY_PATH.setReadOnly();
}
diff --git a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/parse/TestEglLexer.java b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/parse/TestEglLexer.java
index 16184f3..5c1ba37 100644
--- a/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/parse/TestEglLexer.java
+++ b/tests/org.eclipse.epsilon.egl.engine.test.unit/src/org/eclipse/epsilon/egl/parse/TestEglLexer.java
@@ -35,7 +35,9 @@
@BeforeClass
public static void setUpOnce() throws IOException {
- TEST_FILE = FileUtil.getFile("Test.txt", TestEglLexer.class);
+ // FIXME We want a temp file
+ //TEST_FILE = FileUtil.getFile("Test.txt", TestEglLexer.class);
+ TEST_FILE = FileUtil.createTempFile("Test.txt");
final String program = "[% for(i in Sequence(1..10) { %]" + NEWLINE +
"i is [%=i%]" + NEWLINE +
diff --git a/tests/org.eclipse.epsilon.egl.traceability.fine.test.acceptance/src/org/eclipse/epsilon/egl/engine/traceability/fine/test/acceptance/EglFineGrainedTraceabilityAcceptanceTest.java b/tests/org.eclipse.epsilon.egl.traceability.fine.test.acceptance/src/org/eclipse/epsilon/egl/engine/traceability/fine/test/acceptance/EglFineGrainedTraceabilityAcceptanceTest.java
index ee7161c..c076bda 100644
--- a/tests/org.eclipse.epsilon.egl.traceability.fine.test.acceptance/src/org/eclipse/epsilon/egl/engine/traceability/fine/test/acceptance/EglFineGrainedTraceabilityAcceptanceTest.java
+++ b/tests/org.eclipse.epsilon.egl.traceability.fine.test.acceptance/src/org/eclipse/epsilon/egl/engine/traceability/fine/test/acceptance/EglFineGrainedTraceabilityAcceptanceTest.java
@@ -41,7 +41,7 @@
}
protected static String getOutputPath() {
- return FileUtil.getDirectoryOf(EglFineGrainedTraceabilityAcceptanceTest.class).getAbsolutePath();
+ return FileUtil.createTempDir(EglFineGrainedTraceabilityAcceptanceTest.class.getSimpleName(), true).getAbsolutePath();
}
protected static boolean deleteOutputFile(String relativePath) {
diff --git a/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/EgxAcceptanceTestUtil.java b/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/EgxAcceptanceTestUtil.java
index 9859bce..768627e 100644
--- a/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/EgxAcceptanceTestUtil.java
+++ b/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/EgxAcceptanceTestUtil.java
@@ -55,7 +55,9 @@
public static Collection<EgxRunConfiguration> getScenarios(
List<String[]> testInputs,
Collection<Supplier<? extends IEgxModule>> moduleGetters) {
- return getScenarios(EgxRunConfiguration.class, testInputs, moduleGetters, null);
+ // Load thrift-helper-functions.eol
+ FileUtil.getFile("thrift/thrift-helper-functions.eol", EgxAcceptanceTestUtil.class);
+ return getScenarios(EgxRunConfiguration.class, testInputs, moduleGetters, null, EgxAcceptanceTestUtil.class);
}
public static void deleteOutputDirectories() throws IOException {
diff --git a/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/util/EgxAcceptanceTest.java b/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/util/EgxAcceptanceTest.java
index 49dbede..67aea85 100644
--- a/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/util/EgxAcceptanceTest.java
+++ b/tests/org.eclipse.epsilon.egx.engine.test.acceptance/src/org/eclipse/epsilon/egx/engine/test/acceptance/util/EgxAcceptanceTest.java
@@ -44,8 +44,9 @@
for (Template template : templates) {
factory.addVirtualTemplate(template.name, template.content);
}
-
- File egxFile = FileUtil.getFile("base.egx", EgxAcceptanceTest.class);
+ // FIXME We want a temp file or reuse the previous one
+ //File egxFile = FileUtil.getFile("base.egx", EgxAcceptanceTest.class);
+ File egxFile = FileUtil.createTempFile("base", "egx");
factory.setRoot(egxFile.getParentFile().toURI());
return egxFile;
}
diff --git a/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelPackageForNameTests.java b/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelPackageForNameTests.java
index a098e65..4a8666f 100644
--- a/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelPackageForNameTests.java
+++ b/tests/org.eclipse.epsilon.emc.emf.test/src/org/eclipse/epsilon/emc/emf/EmfModelPackageForNameTests.java
@@ -47,8 +47,8 @@
for (EPackage p : metamodel) {
EPackage.Registry.INSTANCE.put(p.getNsURI(), p);
}
-
- final File modelFile = FileUtil.getFile("Test.model", EmfModelPackageForNameTests.class);
+ // final File modelFile = FileUtil.getFile("Test.model", EmfModelPackageForNameTests.class);
+ final File modelFile = FileUtil.createTempFile("Test.model");
model = EmfModelFactory.getInstance().loadEmfModel("Test", modelFile, metamodel, AccessMode.WRITE_ONLY);
}
diff --git a/tests/org.eclipse.epsilon.emc.hutn.test/src/org/eclipse/epsilon/emc/hutn/HutnModelTests.java b/tests/org.eclipse.epsilon.emc.hutn.test/src/org/eclipse/epsilon/emc/hutn/HutnModelTests.java
index 350d863..725de0b 100644
--- a/tests/org.eclipse.epsilon.emc.hutn.test/src/org/eclipse/epsilon/emc/hutn/HutnModelTests.java
+++ b/tests/org.eclipse.epsilon.emc.hutn.test/src/org/eclipse/epsilon/emc/hutn/HutnModelTests.java
@@ -23,9 +23,11 @@
import org.junit.Test;
public class HutnModelTests extends HutnTestWithFamiliesMetaModel {
-
- private static final String MODEL_PATH = FileUtil.getPath("temp.model", HutnModelTests.class);
-
+
+ // FIXME We want a temp file
+ //private static final String MODEL_PATH = FileUtil.getPath("temp.model", HutnModelTests.class);
+ private static final String MODEL_PATH = FileUtil.createTempFile("temp.model").getAbsolutePath();
+
private static final String hutn = families("Person \"p\" {" +
" name: \"John\" " +
"}");
diff --git a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/EolAcceptanceTestSuite.java b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/EolAcceptanceTestSuite.java
index a0db26c..5d5b0ce 100644
--- a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/EolAcceptanceTestSuite.java
+++ b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/EolAcceptanceTestSuite.java
@@ -25,7 +25,7 @@
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-@SuiteClasses({AssignmentTests.class, CollectionPropertyTests.class, ComparisonTests.class, CreateDeleteTests.class, EqualityTests.class, CollectionsTests.class, MathTests.class, StringTests.class, AnnotatedOperationTests.class, IsDefinedTests.class, IterableTests.class,
+@SuiteClasses({AssignmentTests.class,CollectionPropertyTests.class, ComparisonTests.class, CreateDeleteTests.class, EqualityTests.class, CollectionsTests.class, MathTests.class, StringTests.class, AnnotatedOperationTests.class, IsDefinedTests.class, IterableTests.class,
EqualityBecomesAssignmentInStatements.class, ReturnTypeTests.class, BuiltInVariablesTests.class, ModelElementTypeResolutionTests.class, BooleanTests.class, PropertyAccessRecording.class, ScopeTests.class, ContextlessFirstOrderOperationTests.class, DomTests.class,
OperationOrderTests.class, PostfixOperatorTests.class, CompositeAssignmentTests.class, SwitchTests.class, TransactionTests.class, ModelElementConstructorTests.class,
FirstOrderOperationTests.class, ParallelFirstOrderOperationTests.class, ParallelFirstOrderOperationEquivalenceTests.class, FirstOrderOperationAdvancedTests.class, FirstOrderOperationExceptionHandlingTests.class, NestedParallelOperationTests.class,
diff --git a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/EUnitRunner.java b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/EUnitRunner.java
index 46c19f8..ad2fb9a 100644
--- a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/EUnitRunner.java
+++ b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/EUnitRunner.java
@@ -38,9 +38,13 @@
import org.junit.runner.Runner;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunNotifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class EUnitRunner extends Runner {
+ private static Logger logger = LoggerFactory.getLogger(EUnitRunner.class);
+
protected Class<?> clazz;
protected EUnitModule module;
protected HashMap<String, Description> descriptions = new HashMap<>();
@@ -59,6 +63,7 @@
try {
eolFile = FileUtil.getFile(clazz.getSimpleName() + ".eol", clazz);
+ logger.debug("Test file is: {}", eolFile);
module.parse(eolFile);
} catch (Exception e) {
return testSuiteDescription;
diff --git a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/ModelManager.java b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/ModelManager.java
index 7327153..76096ad 100644
--- a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/ModelManager.java
+++ b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/eunit/ModelManager.java
@@ -9,8 +9,10 @@
******************************************************************************/
package org.eclipse.epsilon.eol.engine.test.acceptance.eunit;
-import static org.eclipse.epsilon.common.util.FileUtil.getPath;
+import static org.eclipse.epsilon.common.util.FileUtil.copyToTemp;
+import static org.eclipse.epsilon.common.util.FileUtil.getFile;
+import java.io.File;
import java.util.List;
import org.eclipse.emf.common.util.URI;
@@ -23,14 +25,16 @@
import org.eclipse.epsilon.eol.models.IModel;
public class ModelManager {
-
+
private final IEolContext context;
public ModelManager(IEolContext context) throws Exception {
this.context = context;
-
- register(getPath("ecore_lite.ecore", ModelManager.class));
- register(getPath("fruits.ecore", ModelManager.class));
+ // We need to copy the metamodels cause EMF cant read from Jars
+ File ecoreLite = getFile("ecore_lite.ecore", ModelManager.class);
+ File fruits = getFile("fruits.ecore", ModelManager.class);
+ register(copyToTemp(ecoreLite).getAbsolutePath());
+ register(copyToTemp(fruits).getAbsolutePath());
}
private List<EPackage> register(String metamodelPath) throws Exception {
diff --git a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/util/EolAcceptanceTestUtil.java b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/util/EolAcceptanceTestUtil.java
index c36ab35..8596ec1 100644
--- a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/util/EolAcceptanceTestUtil.java
+++ b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/util/EolAcceptanceTestUtil.java
@@ -108,17 +108,20 @@
Class<C> clazz,
List<String[]> testInputs,
Collection<Supplier<? extends M>> moduleGetters,
- Function<String[], Integer> idCalculator) {
+ Function<String[], Integer> idCalculator,
+ Class<?> inputResourceOWner) {
if (idCalculator == null) idCalculator = EolAcceptanceTestUtil::getScenarioID;
List<C> scenarios = new ArrayList<>(moduleGetters.size()*(testInputs.size()+2));
for (String[] testInput : testInputs) {
- Path eolScript = Paths.get(testInput[0]);
-
- Path modelFile = Paths.get(testInput[1]);
- Path metamodelFile = Paths.get(testInput[2]);
+// Path eolScript = Paths.get(testInput[0]);
+// Path modelFile = Paths.get(testInput[1]);
+// Path metamodelFile = Paths.get(testInput[2]);
+ Path eolScript = Paths.get(FileUtil.getFile(testInput[0], inputResourceOWner).toURI());
+ Path modelFile = Paths.get(FileUtil.getFile(testInput[1], inputResourceOWner).toURI());
+ Path metamodelFile = Paths.get(FileUtil.getFile(testInput[2], inputResourceOWner).toURI());
for (Supplier<? extends M> moduleGetter : moduleGetters) {
scenarios.add(IEolRunConfiguration.Builder(clazz)
diff --git a/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlAcceptanceTestUtil.java b/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlAcceptanceTestUtil.java
index 92d4ae0..8a92b52 100644
--- a/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlAcceptanceTestUtil.java
+++ b/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlAcceptanceTestUtil.java
@@ -18,6 +18,7 @@
import java.util.function.Function;
import java.util.function.Supplier;
import org.eclipse.epsilon.common.util.CollectionUtil;
+import org.eclipse.epsilon.common.util.FileUtil;
import org.eclipse.epsilon.eol.engine.test.acceptance.util.EolAcceptanceTestUtil;
import org.eclipse.epsilon.eol.launch.IEolRunConfiguration;
import org.eclipse.epsilon.evl.*;
@@ -35,7 +36,7 @@
public static final String
// Core
- testsBase = getTestBaseDir(EvlAcceptanceTestUtil.class),
+ testsBase = "", // getTestBaseDir(EvlAcceptanceTestUtil.class),
metamodelsRoot = testsBase+"metamodels/",
scriptsRoot = testsBase+"scripts/",
modelsRoot = testsBase+"models/",
@@ -107,7 +108,7 @@
public static Collection<EvlRunConfiguration> getScenarios(List<String[]> testInputs, boolean includeTest, Collection<Supplier<? extends IEvlModule>> moduleGetters, Function<String[], Integer> idCalculator) {
if (testInputs == null) testInputs = allInputs;
if (moduleGetters == null) moduleGetters = modules();
- Collection<EvlRunConfiguration> scenarios = EolAcceptanceTestUtil.getScenarios(EvlRunConfiguration.class, testInputs, moduleGetters, idCalculator);
+ Collection<EvlRunConfiguration> scenarios = EolAcceptanceTestUtil.getScenarios(EvlRunConfiguration.class, testInputs, moduleGetters, idCalculator, EvlAcceptanceTestUtil.class);
if (includeTest) {
for (Supplier<? extends IEvlModule> moduleGetter : moduleGetters) {
@@ -150,6 +151,7 @@
return getScenarios(null, true, Arrays.asList(moduleGetters), null);
}
public static Collection<EvlRunConfiguration> getScenarios(List<String[]> testInputs, boolean includeTest, Collection<Supplier<? extends IEvlModule>> moduleGetters) {
+ FileUtil.getFile("thrift-helper-functions.eol", EvlAcceptanceTestUtil.class);
return getScenarios(testInputs, includeTest, moduleGetters, null);
}
public static Collection<Supplier<? extends IEvlModule>> modules() {
diff --git a/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlTests.java b/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlTests.java
index 1c251be..ba0dd5e 100644
--- a/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlTests.java
+++ b/tests/org.eclipse.epsilon.evl.engine.test.acceptance/src/org/eclipse/epsilon/evl/engine/test/acceptance/EvlTests.java
@@ -11,6 +11,7 @@
import static org.junit.Assert.*;
import java.io.File;
+import java.nio.file.FileSystemNotFoundException;
import java.util.*;
import java.util.Map.Entry;
import java.util.function.Supplier;
@@ -42,14 +43,14 @@
@RunWith(Parameterized.class)
public class EvlTests {
- private static final IModel
- TEST_MODEL = setUpModel("test.xml"),
- OPTIMISED_MODEL = setUpModel("optimised.xml");
+// private static final IModel
+// TEST_MODEL = setUpModel("test.xml"),
+// OPTIMISED_MODEL = setUpModel("optimised.xml");
@BeforeClass
public static void setUpBeforeClass() throws Exception {
- TEST_MODEL.load();
- OPTIMISED_MODEL.load();
+// TEST_MODEL.load();
+// OPTIMISED_MODEL.load();
}
@Parameter
@@ -65,14 +66,23 @@
private static IModel setUpModel(String modelName) {
PlainXmlModel model = new PlainXmlModel();
- model.setFile(new File(EvlAcceptanceTestUtil.modelsRoot+modelName));
+ try {
+ File modelFile = FileUtil.getFile(EvlAcceptanceTestUtil.modelsRoot+modelName, EvlAcceptanceTestUtil.class);
+ model.setFile(modelFile);
+ }
+ catch (FileSystemNotFoundException ex) {
+ System.err.println(EvlAcceptanceTestUtil.modelsRoot+modelName);
+ }
+
model.setName(FileUtil.removeExtension(model.getFile().getName()));
//model.setCachingEnabled(true);
return model;
}
public static IModel getTestModel(boolean optimised) {
- return optimised ? OPTIMISED_MODEL : TEST_MODEL;
+ String modelName = optimised ? "optimised.xml" : "test.xml";
+
+ return setUpModel(modelName);
}
public static File getTestScript(IEvlModule module) {
@@ -87,7 +97,9 @@
Variable.createReadOnlyVariable("blackboard", new HashMap<>())
);
}
- return new File(EvlAcceptanceTestUtil.scriptsRoot+scriptName+".evl");
+ // Load utils in case its needed
+ FileUtil.getFile(EvlAcceptanceTestUtil.scriptsRoot + "utils.eol", EvlAcceptanceTestUtil.class);
+ return FileUtil.getFile(EvlAcceptanceTestUtil.scriptsRoot+scriptName + ".evl", EvlAcceptanceTestUtil.class);
}
public static void loadEVL(IEvlModule module, boolean optimised) throws Exception {
diff --git a/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/FlexmiTests.java b/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/FlexmiTests.java
index c62117e..1a78864 100644
--- a/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/FlexmiTests.java
+++ b/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/FlexmiTests.java
@@ -11,10 +11,13 @@
import static org.junit.Assert.assertEquals;
+import java.io.File;
+
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.epsilon.common.util.FileUtil;
import org.eclipse.epsilon.emc.emf.InMemoryEmfModel;
import org.eclipse.epsilon.eol.EolEvaluator;
import org.eclipse.epsilon.flexmi.FlexmiResource;
@@ -26,7 +29,8 @@
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("flexmi", new FlexmiResourceFactory());
resourceSet.getPackageRegistry().put(EcorePackage.eINSTANCE.getNsURI(), EcorePackage.eINSTANCE);
- FlexmiResource resource = (FlexmiResource) resourceSet.createResource(URI.createURI(FlexmiTestSuite.class.getResource("models/" + filename).toURI().toString()));
+ File resourceFile = FileUtil.getFile("models/" + filename, FlexmiTestSuite.class);
+ FlexmiResource resource = (FlexmiResource) resourceSet.createResource(URI.createURI(resourceFile.toURI().toString()));
resource.load(null);
return resource;
}
diff --git a/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/TemplateTests.java b/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/TemplateTests.java
index 2337fe7..5dd07da 100644
--- a/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/TemplateTests.java
+++ b/tests/org.eclipse.epsilon.flexmi.test/src/org/eclipse/epsilon/flexmi/test/TemplateTests.java
@@ -9,6 +9,7 @@
**********************************************************************/
package org.eclipse.epsilon.flexmi.test;
+import org.eclipse.epsilon.common.util.FileUtil;
import org.eclipse.epsilon.flexmi.FlexmiResource;
import static org.junit.Assert.*;
@@ -21,7 +22,7 @@
@Test
public void testModelWithTemplate() throws Exception {
FlexmiResource resource = loadResource("templates/model-with-template.flexmi");
-
+ FileUtil.getFile("/models/templates/subdir/template-importing-eol.flexmi", TemplateTests.class);
assertEquals(0, resource.getWarnings().size());
assertEquals(3, resource.getTemplates().size());
assertEquals("t1", resource.getTemplates().get(0).getName());
diff --git a/tests/org.eclipse.epsilon.hutn.test.acceptance/src/org/eclipse/epsilon/hutn/test/acceptance/valid/ExternalObjectReferenceRelative.java b/tests/org.eclipse.epsilon.hutn.test.acceptance/src/org/eclipse/epsilon/hutn/test/acceptance/valid/ExternalObjectReferenceRelative.java
index 2f1f413..8aabaab 100644
--- a/tests/org.eclipse.epsilon.hutn.test.acceptance/src/org/eclipse/epsilon/hutn/test/acceptance/valid/ExternalObjectReferenceRelative.java
+++ b/tests/org.eclipse.epsilon.hutn.test.acceptance/src/org/eclipse/epsilon/hutn/test/acceptance/valid/ExternalObjectReferenceRelative.java
@@ -22,7 +22,9 @@
public class ExternalObjectReferenceRelative extends HutnAcceptanceTest {
- private static File hutnSource = FileUtil.getFile("temp.hutn", ExternalObjectReferenceRelative.class);
+ // FIXME We want a temp file
+ //private static File hutnSource = FileUtil.getFile("temp.hutn", ExternalObjectReferenceRelative.class);
+ private static File hutnSource = FileUtil.createTempFile("temp.hutn");
@BeforeClass
public static void executeHutn() throws Exception {
diff --git a/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF b/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
index 11375ef..613183e 100644
--- a/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
@@ -4,15 +4,16 @@
Bundle-Name: Epsilon Test Dependencies (Incubation)
Bundle-SymbolicName: org.eclipse.epsilon.test.dependencies
Bundle-Version: 1.6.0.qualifier
-Require-Bundle: org.hamcrest.library;bundle-version="1.3.0";visibility:=reexport,
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2";visibility:=reexport,
+ org.hamcrest.library;bundle-version="1.3.0";visibility:=reexport,
+ org.mockito_1.8.4;visibility:=reexport,
+ org.easymock_2.4;visibility:=reexport,
org.junit;bundle-version="4.12.0";visibility:=reexport,
org.eclipse.epsilon.dependencies;visibility:=reexport,
org.eclipse.epsilon.eol.engine;visibility:=reexport,
org.eclipse.epsilon.eunit.engine;visibility:=reexport,
org.eclipse.epsilon.emc.emf;visibility:=reexport,
org.eclipse.epsilon.hutn.engine;visibility:=reexport,
- org.mockito_1.8.4;visibility:=reexport,
- org.easymock_2.4;visibility:=reexport,
org.eclipse.epsilon.emc.plainxml;visibility:=reexport
Bundle-Vendor: Eclipse.org
Export-Package: org.antlr.gunit,
diff --git a/tests/org.eclipse.epsilon.test.unit/.classpath b/tests/org.eclipse.epsilon.test.unit/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/.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/tests/org.eclipse.epsilon.test.unit/.gitignore b/tests/org.eclipse.epsilon.test.unit/.gitignore
new file mode 100644
index 0000000..2941331
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/.gitignore
@@ -0,0 +1,2 @@
+bin/
+target/
\ No newline at end of file
diff --git a/tests/org.eclipse.epsilon.test.unit/EPL-2.0.html b/tests/org.eclipse.epsilon.test.unit/EPL-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/EPL-2.0.html
@@ -0,0 +1,300 @@
+<!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" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.epsilon.test.unit/EpsilonPluggedInTestSuite.launch b/tests/org.eclipse.epsilon.test.unit/EpsilonPluggedInTestSuite.launch
new file mode 100644
index 0000000..7be5dfe
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/EpsilonPluggedInTestSuite.launch
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.epsilon.test/src/org/eclipse/epsilon/test/EpsilonPluggedInTestSuite.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.epsilon.test.EpsilonPluggedInTestSuite"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.epsilon.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx4g"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.emf.cdo.server.product"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.epsilon.test.unit/META-INF/MANIFEST.MF b/tests/org.eclipse.epsilon.test.unit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fa7dd19
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/META-INF/MANIFEST.MF
@@ -0,0 +1,54 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Epsilon Test Suite (Incubation)
+Bundle-SymbolicName: org.eclipse.epsilon.test.unit
+Bundle-Version: 1.6.0.qualifier
+Bundle-Vendor: Eclipse.org
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.epsilon.test
+Require-Bundle: org.eclipse.epsilon.test.dependencies,
+ org.eclipse.epsilon.eol.engine.test.acceptance,
+ org.eclipse.epsilon.egl.engine.test,
+ org.eclipse.epsilon.egx.engine.test.acceptance,
+ org.eclipse.epsilon.egl.dt.test,
+ org.eclipse.epsilon.hutn.test,
+ org.eclipse.epsilon.hutn.unparser.test.unit,
+ org.eclipse.epsilon.hutn.xmi.test,
+ org.eclipse.epsilon.emc.emf.test,
+ org.eclipse.epsilon.flock.engine.test,
+ org.eclipse.epsilon.eol.engine.test.unit,
+ org.eclipse.epsilon.common.dt.test,
+ org.eclipse.epsilon.concordance.test,
+ org.eclipse.epsilon.etl.engine.test.acceptance,
+ org.eclipse.epsilon.emc.hutn.test,
+ org.eclipse.epsilon.emc.plainxml.test,
+ org.eclipse.epsilon.common.test,
+ org.eclipse.epsilon.workflow.test,
+ org.eclipse.epsilon.evl.engine.test.acceptance,
+ org.eclipse.epsilon.ecl.engine.test.acceptance,
+ org.eclipse.epsilon.eml.engine.test.acceptance,
+ org.eclipse.epsilon.ewl.engine.test.acceptance,
+ org.eclipse.epsilon.emc.bibtex.test,
+ org.eclipse.epsilon.egl.dt.traceability.editor.tests,
+ org.eclipse.epsilon.egl.traceability.fine.test.acceptance,
+ org.eclipse.epsilon.egl.traceability.fine.test.unit,
+ org.eclipse.epsilon.emc.graphml.tests;bundle-version="1.0.0",
+ org.eclipse.epsilon.epl.engine.test.acceptance,
+ org.eclipse.epsilon.emc.spreadsheets.test;bundle-version="1.5.0",
+ org.eclipse.epsilon.workflow;bundle-version="1.5.0",
+ org.eclipse.epsilon.workflow.csv;bundle-version="1.5.0",
+ org.eclipse.epsilon.workflow.emf;bundle-version="1.5.0",
+ org.eclipse.epsilon.workflow.eugenia;bundle-version="1.5.0",
+ org.eclipse.epsilon.eunit.dt;bundle-version="1.5.0",
+ org.eclipse.epsilon.eunit.dt.cmp.emf;bundle-version="1.5.0",
+ org.eclipse.epsilon.eunit.dt.diff.emf;bundle-version="1.5.0",
+ org.eclipse.epsilon.eunit.dt.diff.files;bundle-version="1.5.0",
+ org.eclipse.epsilon.concordance.clients;bundle-version="1.5.0",
+ org.eclipse.epsilon.concordance.core;bundle-version="1.5.0",
+ org.eclipse.epsilon.concordance.core.hashing;bundle-version="1.5.0",
+ org.eclipse.emf.emfatic.core;bundle-version="0.8.0",
+ org.eclipse.gmf.bridge,
+ org.eclipse.gmf.bridge.trace;bundle-version="1.3.0",
+ org.eclipse.epsilon.emc.csv.test,
+ org.eclipse.epsilon.flexmi.test,
+ org.eclipse.epsilon.emc.simulink.test
diff --git a/tests/org.eclipse.epsilon.test.unit/build.properties b/tests/org.eclipse.epsilon.test.unit/build.properties
new file mode 100644
index 0000000..9d822f5
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ EPL-2.0.html,\
+ .,\
+ logback.xml
+jre.compilation.profile = JavaSE-1.8
diff --git a/tests/org.eclipse.epsilon.test.unit/foo.ecore b/tests/org.eclipse.epsilon.test.unit/foo.ecore
new file mode 100644
index 0000000..19fc3c2
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/foo.ecore
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hutnConfig:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:hutnConfig="http://www.eclipse.org/gmt/epsilon/hutnConfig">
+ <rules xsi:type="hutnConfig:DefaultValueRule" classifier="Family" attribute="nuclear"
+ defaultValue="4"/>
+</hutnConfig:Configuration>
diff --git a/tests/org.eclipse.epsilon.test.unit/logback.xml b/tests/org.eclipse.epsilon.test.unit/logback.xml
new file mode 100644
index 0000000..7d2c519
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/logback.xml
@@ -0,0 +1,11 @@
+<configuration>
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <root level="DEBUG">
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration>
\ No newline at end of file
diff --git a/tests/org.eclipse.epsilon.test.unit/pom.xml b/tests/org.eclipse.epsilon.test.unit/pom.xml
new file mode 100644
index 0000000..e679881
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/pom.xml
@@ -0,0 +1,64 @@
+<?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.epsilon</groupId>
+ <artifactId>tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.eclipse.epsilon</groupId>
+ <artifactId>org.eclipse.epsilon.test.unit</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>1.0.13</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <testSourceDirectory>${project.basedir}/src</testSourceDirectory>
+ <testOutputDirectory>${project.basedir}/target/classes</testOutputDirectory>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>3.0.0-M3</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>3.0.0-M3</version>
+ <configuration>
+ <includes>
+ <include>EpsilonTestSuite.java</include>
+ </includes>
+ <!-->argLine>-Xmx4096m</argLine -->
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+</project>
diff --git a/tests/org.eclipse.epsilon.test.unit/src/org/eclipse/epsilon/test/EpsilonTestSuite.java b/tests/org.eclipse.epsilon.test.unit/src/org/eclipse/epsilon/test/EpsilonTestSuite.java
new file mode 100644
index 0000000..9460591
--- /dev/null
+++ b/tests/org.eclipse.epsilon.test.unit/src/org/eclipse/epsilon/test/EpsilonTestSuite.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2011 The University of York.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * Louis Rose - initial API and implementation
+ * Antonio Garcia-Dominguez - added WorkflowTestSuite
+ ******************************************************************************
+ *
+ * $Id$
+ */
+package org.eclipse.epsilon.test;
+
+import org.eclipse.epsilon.commons.test.CommonsTestSuite;
+import org.eclipse.epsilon.concordance.test.ConcordanceTestSuite;
+import org.eclipse.epsilon.ecl.engine.test.acceptance.EclAcceptanceTestSuite;
+import org.eclipse.epsilon.egl.dt.test.EglDevelopmentToolsTestSuite;
+import org.eclipse.epsilon.egl.dt.traceability.editor.EglTraceabilityEditorTestSuite;
+import org.eclipse.epsilon.egl.engine.traceability.fine.test.acceptance.EglFineGrainedTraceabilityAcceptanceTestSuite;
+import org.eclipse.epsilon.egl.engine.traceability.fine.test.unit.EglFineGrainedTraceabilityUnitTestSuite;
+import org.eclipse.epsilon.egl.test.EglTestSuite;
+import org.eclipse.epsilon.egx.engine.test.acceptance.EgxAcceptanceTestSuite;
+import org.eclipse.epsilon.emc.bibtex.BibtexModelTestSuite;
+import org.eclipse.epsilon.emc.csv.test.CsvModelTestSuite;
+import org.eclipse.epsilon.emc.emf.test.EmfTestSuite;
+import org.eclipse.epsilon.emc.graphml.tests.GraphmlTestSuite;
+import org.eclipse.epsilon.emc.hutn.test.HutnEmcDriverTestSuite;
+import org.eclipse.epsilon.emc.plainxml.test.PlainXmlTestSuite;
+import org.eclipse.epsilon.emc.simulink.test.suite.SimulinkTestSuite;
+import org.eclipse.epsilon.emc.spreadsheets.test.SpreadsheetDriverTestSuite;
+import org.eclipse.epsilon.eml.engine.test.acceptance.EmlAcceptanceTestSuite;
+import org.eclipse.epsilon.eol.engine.test.acceptance.EolAcceptanceTestSuite;
+import org.eclipse.epsilon.eol.test.unit.EolUnitTestSuite;
+import org.eclipse.epsilon.epl.engine.test.acceptance.EplAcceptanceTestSuite;
+import org.eclipse.epsilon.etl.engine.test.acceptance.EtlAcceptanceTestSuite;
+import org.eclipse.epsilon.evl.engine.test.acceptance.EvlAcceptanceTestSuite;
+import org.eclipse.epsilon.ewl.engine.test.acceptance.EwlAcceptanceTestSuite;
+import org.eclipse.epsilon.flexmi.test.FlexmiTestSuite;
+import org.eclipse.epsilon.flock.test.EpsilonFlockEngineTestSuite;
+import org.eclipse.epsilon.hutn.test.HutnTestSuite;
+import org.eclipse.epsilon.hutn.unparser.HutnUnparserUnitTestSuite;
+import org.eclipse.epsilon.hutn.xmi.test.HutnXmiTestSuite;
+import org.eclipse.epsilon.workflow.test.WorkflowTestSuite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.Test;
+
+@RunWith(Suite.class)
+@SuiteClasses({CommonsTestSuite.class,
+ EolUnitTestSuite.class,
+ EolAcceptanceTestSuite.class,
+ EvlAcceptanceTestSuite.class,
+ EtlAcceptanceTestSuite.class,
+ EclAcceptanceTestSuite.class,
+ EmlAcceptanceTestSuite.class,
+ EwlAcceptanceTestSuite.class,
+ EglTestSuite.class,
+ EplAcceptanceTestSuite.class,
+ EglDevelopmentToolsTestSuite.class,
+ EglTraceabilityEditorTestSuite.class,
+ EglFineGrainedTraceabilityAcceptanceTestSuite.class,
+ EglFineGrainedTraceabilityUnitTestSuite.class,
+ EgxAcceptanceTestSuite.class,
+ HutnTestSuite.class,
+ HutnUnparserUnitTestSuite.class,
+ HutnXmiTestSuite.class,
+ HutnEmcDriverTestSuite.class,
+ PlainXmlTestSuite.class,
+ BibtexModelTestSuite.class,
+ EpsilonFlockEngineTestSuite.class,
+ ConcordanceTestSuite.class,
+ WorkflowTestSuite.class,
+ GraphmlTestSuite.class,
+ EmfTestSuite.class,
+ SimulinkTestSuite.class,
+ SpreadsheetDriverTestSuite.class,
+ CsvModelTestSuite.class,
+ FlexmiTestSuite.class
+ })
+
+public class EpsilonTestSuite {
+ public static Test suite() {
+ return new JUnit4TestAdapter(EpsilonTestSuite.class);
+ }
+}
diff --git a/tests/pom.xml b/tests/pom.xml
index 1de936c..7678e19 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -68,7 +68,8 @@
<module>org.eclipse.epsilon.hutn.xmi.test.dependencies</module>
<module>org.eclipse.epsilon.hutn.xmi.test.integration</module>
<module>org.eclipse.epsilon.hutn.xmi.test.unit</module>
- <module>org.eclipse.epsilon.test</module>
+ <module>org.eclipse.epsilon.test</module>
+ <module>org.eclipse.epsilon.test.unit</module>
<module>org.eclipse.epsilon.test.dependencies</module>
<module>org.eclipse.epsilon.test.fixtures.hutn</module>
<module>org.eclipse.epsilon.workflow.test</module>