summaryrefslogtreecommitdiffstats
path: root/jack-tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'jack-tests/src')
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java31
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/IToolchain.java5
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java15
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java30
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java37
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java4
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java11
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/Toolchain.java9
8 files changed, 103 insertions, 39 deletions
diff --git a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
index be3414b..13fc5bf 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
@@ -27,10 +27,12 @@ import com.android.jack.test.runner.RuntimeRunnerFactory;
import com.android.jack.test.util.ExecFileException;
import com.android.jack.test.util.ExecuteFile;
import com.android.jack.util.NamingTools;
+import com.android.sched.util.stream.ByteStreamSucker;
import org.junit.Assume;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
@@ -583,4 +585,33 @@ public abstract class AbstractTestTools {
return rtLocation;
}
+ public static void copyFileToDir(@Nonnull File fileToCopy, @Nonnull String relativePath,
+ @Nonnull File dest) throws IOException {
+ FileOutputStream fos = null;
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(fileToCopy);
+ File copiedFile = new File(dest, relativePath);
+ File parentDir = copiedFile.getParentFile();
+ if (!parentDir.exists()) {
+ boolean res = parentDir.mkdirs();
+ if (!res) {
+ throw new AssertionError();
+ }
+ }
+ try {
+ fos = new FileOutputStream(copiedFile);
+ ByteStreamSucker sucker = new ByteStreamSucker(fis, fos);
+ sucker.suck();
+ } finally {
+ if (fos != null) {
+ fos.close();
+ }
+ }
+ } finally {
+ if (fis != null) {
+ fis.close();
+ }
+ }
+ }
}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/IToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/IToolchain.java
index 7fa2620..fb97ef6 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/IToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/IToolchain.java
@@ -23,7 +23,6 @@ import java.io.OutputStream;
import java.util.List;
import javax.annotation.Nonnull;
-import javax.annotation.processing.Processor;
/**
@@ -69,8 +68,8 @@ public interface IToolchain {
IToolchain setWithDebugInfos(boolean withDebugInfos);
@Nonnull
- IToolchain setAnnotationProcessorClass(
- @Nonnull Class<? extends Processor> annotationProcessorClass);
+ IToolchain setAnnotationProcessorClasses(
+ @Nonnull List<String> annotationProcessorClasses);
@Nonnull
IToolchain setSourceLevel(@Nonnull SourceLevel sourceLevel);
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
index 2d7f6f2..52e4b3f 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
@@ -16,6 +16,7 @@
package com.android.jack.test.toolchain;
+import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import com.android.jack.Options;
@@ -194,6 +195,20 @@ public class JackApiV01Toolchain extends JackApiToolchainBase {
if (jarjarRules != null) {
apiV01Config.setJarJarConfigFile(jarjarRules);
}
+ apiV01Config.setProcessorOptions(annotationProcessorOptions);
+
+ if (annotationProcessorClasses != null) {
+ apiV01Config.setProcessorNames(annotationProcessorClasses);
+ }
+
+
+ if (processorPath != null) {
+ List<File> fileList = new ArrayList<File>();
+ for (String entry : Splitter.on(File.pathSeparatorChar).split(processorPath)) {
+ fileList.add(new File(entry));
+ }
+ apiV01Config.setProcessorPath(fileList);
+ }
}
private void libToCommon(@Nonnull File... in) throws Exception {
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
index 34610eb..a08fe71 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
@@ -23,7 +23,9 @@ import com.android.jack.test.TestsProperties;
import java.io.File;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -42,16 +44,31 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
LEGACY
}
-
- @CheckForNull
- protected File annotationProcessorOutDir;
@Nonnull
protected List<File> resImport = new ArrayList<File>();
+ @Nonnull
+ protected final Map<String, String> annotationProcessorOptions = new HashMap<String, String>();
+ @CheckForNull
+ protected String processorPath;
@Nonnull
public abstract JackBasedToolchain addProperty(@Nonnull String propertyName,
@Nonnull String propertyValue);
+ @Nonnull
+ public final JackBasedToolchain addAnnotationProcessorOption(@Nonnull String propertyName,
+ @Nonnull String propertyValue) {
+ annotationProcessorOptions.put(propertyName, propertyValue);
+ return this;
+ }
+
+ @Nonnull
+ public final JackBasedToolchain setAnnotationProcessorPath(
+ @Nonnull String processorPath) {
+ this.processorPath = processorPath;
+ return this;
+ }
+
public final JackBasedToolchain setMultiDexKind(@Nonnull MultiDexKind kind) {
switch (kind) {
case NATIVE:
@@ -75,13 +92,6 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
return this;
}
- @Nonnull
- public final JackBasedToolchain setAnnotationProcessorOutDir(
- @Nonnull File annotationProcessorOutDir) {
- this.annotationProcessorOutDir = annotationProcessorOutDir;
- return this;
- }
-
@Override
@Nonnull
public JackBasedToolchain setSourceLevel(@Nonnull SourceLevel sourceLevel) {
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
index 3542d03..c68edda 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
@@ -16,6 +16,8 @@
package com.android.jack.test.toolchain;
+import com.google.common.base.Joiner;
+
import com.android.jack.Options;
import com.android.jack.Options.VerbosityLevel;
import com.android.jack.util.ExecuteFile;
@@ -82,15 +84,6 @@ public class JackCliToolchain extends JackBasedToolchain {
args.add("-g");
}
- if (annotationProcessorClass != null) {
- args.add("-processor");
- args.add(annotationProcessorClass.getName());
- }
- if (annotationProcessorOutDir != null) {
- args.add("-d");
- args.add(annotationProcessorOutDir.getAbsolutePath());
- }
-
AbstractTestTools.addFile(args, /* mustExist = */ false, sources);
ExecuteFile exec = new ExecuteFile(args.toArray(new String[args.size()]));
@@ -178,14 +171,7 @@ public class JackCliToolchain extends JackBasedToolchain {
args.add("-g");
}
- if (annotationProcessorClass != null) {
- args.add("-processor");
- args.add(annotationProcessorClass.getName());
- }
- if (annotationProcessorOutDir != null) {
- args.add("-d");
- args.add(annotationProcessorOutDir.getAbsolutePath());
- }
+ addAnnotationProcessorArgs(args);
for (File staticLib : staticLibs) {
args.add("--import");
@@ -335,4 +321,21 @@ public class JackCliToolchain extends JackBasedToolchain {
return this;
}
+ private void addAnnotationProcessorArgs(@Nonnull List<String> args) {
+ for (Entry<String, String> entry : annotationProcessorOptions.entrySet()) {
+ args.add("-A");
+ args.add(entry.getKey() + "=" + entry.getValue());
+ }
+
+ if (annotationProcessorClasses != null) {
+ args.add("--processor");
+ args.add(Joiner.on(',').join(annotationProcessorClasses));
+ }
+
+ if (processorPath != null) {
+ args.add("--processorpath");
+ args.add(processorPath);
+ }
+ }
+
}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java
index f35e053..489ef52 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java
@@ -307,9 +307,9 @@ public class LegacyJillToolchain extends JillBasedToolchain {
addSourceLevel(sourceLevel, arguments);
- if (annotationProcessorClass != null) {
+ if (annotationProcessorClasses != null) {
arguments.add("-processor");
- arguments.add(annotationProcessorClass.getName());
+ arguments.add(Joiner.on(',').join(annotationProcessorClasses));
}
arguments.add("-bootclasspath");
diff --git a/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
index 809393f..7a94bd8 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
@@ -16,6 +16,8 @@
package com.android.jack.test.toolchain;
+import com.google.common.base.Joiner;
+
import com.android.dx.command.dexer.Main.Arguments;
import com.android.jack.test.TestsProperties;
import com.android.jack.test.util.ExecFileException;
@@ -228,6 +230,11 @@ public class LegacyToolchain extends AndroidToolchain {
}
addSourceLevel(sourceLevel, args);
+ if (annotationProcessorClasses != null) {
+ args.add("-processor");
+ args.add(Joiner.on(',').join(annotationProcessorClasses));
+ }
+
args.add("-encoding");
args.add("utf8");
@@ -283,9 +290,9 @@ public class LegacyToolchain extends AndroidToolchain {
arguments.add("-encoding");
arguments.add("utf8");
- if (annotationProcessorClass != null) {
+ if (annotationProcessorClasses != null) {
arguments.add("-processor");
- arguments.add(annotationProcessorClass.getName());
+ arguments.add(Joiner.on(',').join(annotationProcessorClasses));
}
arguments.add("-bootclasspath");
diff --git a/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java
index cf2ed55..131b055 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java
@@ -27,7 +27,6 @@ import java.util.List;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
-import javax.annotation.processing.Processor;
/**
* A toolchain the ouptut of which can be redirected to user defined streams.
@@ -40,7 +39,7 @@ public abstract class Toolchain implements IToolchain {
protected List<File> classpath = new ArrayList<File>();
@CheckForNull
- protected Class<? extends Processor> annotationProcessorClass;
+ protected List<String> annotationProcessorClasses;
/**
* Java source level.
@@ -125,9 +124,9 @@ public abstract class Toolchain implements IToolchain {
@Override
@Nonnull
- public final Toolchain setAnnotationProcessorClass(
- @Nonnull Class<? extends Processor> annotationProcessorClass) {
- this.annotationProcessorClass = annotationProcessorClass;
+ public final Toolchain setAnnotationProcessorClasses(
+ @Nonnull List<String> annotationProcessorClasses) {
+ this.annotationProcessorClasses = annotationProcessorClasses;
return this;
}