summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Marie Hénaff <jmhenaff@google.com>2015-03-09 15:47:55 +0000
committerJean-Marie Henaff <jmhenaff@google.com>2015-03-09 17:20:39 +0100
commit3bc5d685e9d9b2d9eb50e12d00cce47972a62d22 (patch)
tree4923f0ac587fac4e1b8a3304fdded79ab4ce7d2b
parent62b4de7231372a882f49b2389b34a438e900debf (diff)
downloadtoolchain_jack-3bc5d685e9d9b2d9eb50e12d00cce47972a62d22.tar.gz
toolchain_jack-3bc5d685e9d9b2d9eb50e12d00cce47972a62d22.tar.bz2
toolchain_jack-3bc5d685e9d9b2d9eb50e12d00cce47972a62d22.zip
Revert "Revert "Start using jack-api for jack API based test toolchains""
This reverts commit b43732ee3d9f9ffcd7595ab657e4c683a1751b3a. Change-Id: Id9fbfcd8f7aebca1136bfcbbf9e37359dc42a19d
-rw-r--r--build.xml4
-rw-r--r--jack-tests/.classpath1
-rw-r--r--jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java6
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java14
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java278
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java125
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java193
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java36
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java25
-rw-r--r--jack-tests/tests/com/android/jack/analysis/dfa/reachingdefs/ReachingDefsTests.java5
-rw-r--r--jack-tests/tests/com/android/jack/classpath/ClasspathTests.java12
-rw-r--r--jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java20
-rw-r--r--jack-tests/tests/com/android/jack/error/CommandLineErrorTest.java8
-rw-r--r--jack-tests/tests/com/android/jack/error/ConfigErrorTest.java5
-rw-r--r--jack-tests/tests/com/android/jack/error/ErrorTest.java5
-rw-r--r--jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java20
-rw-r--r--jack-tests/tests/com/android/jack/error/JackFormatErrorTest.java11
-rw-r--r--jack-tests/tests/com/android/jack/error/SourceErrorTest.java32
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java11
-rw-r--r--jack-tests/tests/com/android/jack/imports/ImportTests.java19
-rw-r--r--jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java10
-rw-r--r--jack-tests/tests/com/android/jack/multidex/MultiDexTests.java28
-rw-r--r--jack-tests/tests/com/android/jack/shrob/FlattenPackageTests.java7
-rw-r--r--jack-tests/tests/com/android/jack/shrob/ObfuscationWithMappingTests.java5
-rw-r--r--jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java5
-rw-r--r--jack-tests/tests/com/android/jack/shrob/RepackagingTest.java5
-rw-r--r--jack-tests/tests/com/android/jack/shrob/SeedTests.java7
-rw-r--r--jack-tests/tests/com/android/jack/shrob/ShrinkTests.java18
-rw-r--r--jack-tests/tests/com/android/jack/tools/merger/MergerTestTools.java6
-rw-r--r--jack/.classpath2
-rw-r--r--jack/src/com/android/jack/api/impl/JackConfigProviderImpl.java70
31 files changed, 572 insertions, 421 deletions
diff --git a/build.xml b/build.xml
index 00ef1296..0b0d0621 100644
--- a/build.xml
+++ b/build.xml
@@ -365,10 +365,11 @@
<delete file="${jack-tests.dist.dir}/${jack-tests.libname}" />
</target>
- <target name="jack-tests-copy-libs" depends="junit4,dx-ref-lib,ddm-lib,ecj,
+ <target name="jack-tests-copy-libs" depends="jack-api-lib,junit4,dx-ref-lib,ddm-lib,ecj,
antlr-rt-lib,guava-lib,dex-lib,jsr305-lib,dexcomparator-lib">
<copy todir="${jack-tests.libs.dir}" flatten="true">
<filelist dir="/" >
+ <file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
<file name="${junit4.dist.dir}/${junit4.execname}"/>
<file name="${dx-ref.dist.dir}/${dx-ref.libname}"/>
<file name="${ddm-lib.dist.dir}/${ddm-lib.libname}"/>
@@ -410,6 +411,7 @@
<filelist dir="/">
<file name="${jackunittests.dist.dir}/${jackunittests.execname}" />
<file name="${ddm-lib.dist.dir}/${ddm-lib.libname}" />
+ <file name="${jack-api.dist.dir}/${jack-api.lib.name}"/>
</filelist>
</classpath>
</javac>
diff --git a/jack-tests/.classpath b/jack-tests/.classpath
index 3cc771dd..cd013904 100644
--- a/jack-tests/.classpath
+++ b/jack-tests/.classpath
@@ -15,5 +15,6 @@
<classpathentry combineaccessrules="false" kind="src" path="/Jack"/>
<classpathentry kind="lib" path="libs/ddmlib.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/Dx"/>
+ <classpathentry kind="lib" path="libs/jack-api-lib.jar" sourcepath="/jack-api/src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
index 90bffbc2..11af77bc 100644
--- a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
@@ -22,7 +22,7 @@ import com.android.jack.test.runner.AbstractRuntimeRunner;
import com.android.jack.test.runner.RuntimeRunner;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain.MultiDexKind;
import com.android.jack.test.toolchain.JillBasedToolchain;
@@ -176,8 +176,8 @@ public class IncrementalTestHelper {
List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
excludeList.add(JillBasedToolchain.class);
- JackApiToolchain jackToolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class, excludeList);
+ JackApiToolchainBase jackToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeList);
jackToolchain.setIncrementalFolder(getCompilerStateFolder());
jackToolchain.addStaticLibs(imports.toArray(new File[imports.size()]));
jackToolchain.setMultiDexKind(multiDexKind);
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 0c9fa324..be3414b3 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
@@ -82,10 +82,10 @@ public abstract class AbstractTestTools {
static {
toolchainBuilders = new HashMap<String, ToolchainBuilder>();
- toolchainBuilders.put("jack-cli" , new JackCliToolchainBuilder());
- toolchainBuilders.put("jack-api" , new JackApiToolchainBuilder());
- toolchainBuilders.put("legacy" , new LegacyToolchainBuilder());
- toolchainBuilders.put("jill-legacy", new LegacyJillToolchainBuilder());
+ toolchainBuilders.put("jack-cli" , new JackCliToolchainBuilder());
+ toolchainBuilders.put("jack-api-v01" , new JackApiV01ToolchainBuilder());
+ toolchainBuilders.put("legacy" , new LegacyToolchainBuilder());
+ toolchainBuilders.put("jill-legacy" , new LegacyJillToolchainBuilder());
try {
runtimes.addAll(parseRuntimeList(TestsProperties.getProperty(RUNTIME_LIST_KEY)));
@@ -122,12 +122,12 @@ public abstract class AbstractTestTools {
}
}
- private static class JackApiToolchainBuilder implements ToolchainBuilder {
+ private static class JackApiV01ToolchainBuilder implements ToolchainBuilder {
@Override
@Nonnull
- public JackApiToolchain build() {
- return new JackApiToolchain();
+ public JackApiV01Toolchain build() {
+ return new JackApiV01Toolchain(getPrebuilt("jack"));
}
}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java
deleted file mode 100644
index 0aa1253b..00000000
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.test.toolchain;
-
-import com.android.jack.Jack;
-import com.android.jack.Options;
-import com.android.jack.Sourcelist;
-import com.android.jack.backend.dex.rop.CodeItemBuilder;
-import com.android.jack.shrob.spec.Flags;
-import com.android.sched.util.config.cli.TokenIterator;
-import com.android.sched.util.location.NoLocation;
-
-import java.io.File;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.annotation.Nonnull;
-
-/**
- * This class implements a {@link JackBasedToolchain} by calling Jack via API.
- */
-public class JackApiToolchain extends JackBasedToolchain {
-
- @Nonnull
- private Options jackOptions = new Options();
-
- JackApiToolchain() {}
-
- @Override
- @Nonnull
- protected JackApiToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level) {
- jackOptions.setVerbosityLevel(level);
- return this;
- }
-
- @Override
- public void srcToExe(@Nonnull File out, boolean zipFile,
- @Nonnull File... sources) throws Exception {
-
- try {
-
- srcToCommon(sources);
-
- if (zipFile) {
- jackOptions.setOutputZip(out);
- } else {
- jackOptions.setOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- @Override
- public void srcToLib(@Nonnull File out, boolean zipFiles,
- @Nonnull File... sources) throws Exception {
-
- try {
-
- srcToCommon(sources);
-
- if (zipFiles) {
- jackOptions.setJayceOutputZip(out);
- } else {
- jackOptions.setJayceOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- private void srcToCommon(@Nonnull File... sources) throws Exception {
- addProperties(properties, jackOptions);
-
- jackOptions.setSanityChecks(sanityChecks);
-
- if (jackOptions.getFlags() != null) {
- jackOptions.applyShrobFlags();
- }
-
- if (classpath.size() > 0) {
- jackOptions.setClasspath(getClasspathAsString());
- }
-
- fillEcjArgs(sources);
-
- for (File res : resImport) {
- jackOptions.addResource(res);
- }
-
- jackOptions.setImportedLibraries(staticLibs);
-
- if (jarjarRules != null) {
- jackOptions.setJarjarRulesFile(jarjarRules);
- }
-
- if (proguardFlags.size() > 0) {
- jackOptions.setProguardFlagsFile(proguardFlags);
- }
-
- jackOptions.addProperty(Options.EMIT_LOCAL_DEBUG_INFO.getName(),
- Boolean.toString(withDebugInfos));
-
- jackOptions.addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(),
- Boolean.toString(!withDebugInfos));
-
- }
-
- @Override
- public void libToExe(@Nonnull File[] in, @Nonnull File out, boolean zipFile) throws Exception {
-
- try {
-
- libToCommon(in);
-
- if (zipFile) {
- jackOptions.setOutputZip(out);
- } else {
- jackOptions.setOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- @Override
- public void libToLib(@Nonnull File[] in, @Nonnull File out, boolean zipFiles) throws Exception {
-
- try {
-
- libToCommon(in);
-
- if (zipFiles) {
- jackOptions.setJayceOutputZip(out);
- } else {
- jackOptions.setJayceOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- private void libToCommon(@Nonnull File[] in) {
- addProperties(properties, jackOptions);
-
- jackOptions.setSanityChecks(sanityChecks);
-
- if (jarjarRules != null) {
- jackOptions.setJarjarRulesFile(jarjarRules);
- }
-
- if (classpath.size() > 0) {
- jackOptions.setClasspath(getClasspathAsString());
- }
-
- if (jackOptions.getFlags() != null) {
- jackOptions.applyShrobFlags();
- }
-
- if (proguardFlags.size() > 0) {
- jackOptions.setProguardFlagsFile(proguardFlags);
- }
-
- for (File res : resImport) {
- jackOptions.addResource(res);
- }
-
- List<File> libsToImport = new ArrayList<File>();
- for (File staticLib : in) {
- libsToImport.add(staticLib);
- }
- libsToImport.addAll(staticLibs);
- jackOptions.setImportedLibraries(libsToImport);
-
- }
-
- @Nonnull
- public JackApiToolchain setShrobFlags(@Nonnull Flags shrobFlags) {
- jackOptions.setFlags(shrobFlags);
- return this;
- }
-
- @Override
- @Nonnull
- public JackApiToolchain setIncrementalFolder(@Nonnull File incrementalFolder) {
- jackOptions.setIncrementalFolder(incrementalFolder);
- return this;
- }
-
- @Override
- @Nonnull
- public final JackApiToolchain setErrorStream(@Nonnull OutputStream errorStream) {
- super.setErrorStream(errorStream);
- jackOptions.setReporterStream(errorStream);
- return this;
- }
-
- private static final void addProperties(@Nonnull Map<String, String> properties,
- @Nonnull Options jackOptions) {
- for (Entry<String, String> entry : properties.entrySet()) {
- jackOptions.addProperty(entry.getKey(), entry.getValue());
- }
- }
-
- private final void fillEcjArgs(@Nonnull File... sources) throws Exception {
- List<String> ecjArgs = new ArrayList<String>();
-
- if (annotationProcessorClass != null) {
- ecjArgs.add("-processor");
- ecjArgs.add(annotationProcessorClass.getName());
- }
-
- if (annotationProcessorOutDir != null) {
- ecjArgs.add("-d");
- ecjArgs.add(annotationProcessorOutDir.getAbsolutePath());
- }
-
- ArrayList<File> toCompile = new ArrayList<File>();
- for (File srcFile : sources) {
- if (srcFile instanceof Sourcelist) {
- TokenIterator iterator =
- new TokenIterator(new NoLocation(), '@' + srcFile.getAbsolutePath());
- while (iterator.hasNext()) {
- toCompile.add(new File(iterator.next()));
- }
- } else {
- toCompile.add(srcFile);
- }
- }
-
- if (sources.length > 0) {
- jackOptions.setEcjExtraArguments(ecjArgs);
- jackOptions.setInputSources(toCompile);
- }
- }
-
-}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
new file mode 100644
index 00000000..33fb3ddf
--- /dev/null
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.test.toolchain;
+
+import com.android.jack.api.ConfigNotSupportedException;
+import com.android.jack.api.JackConfig;
+import com.android.jack.api.JackConfigProvider;
+import com.android.jack.api.example.Main;
+import com.android.jack.api.v01.VerbosityLevel;
+import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.TestConfigurationException;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+/**
+ * This class implements a {@link JackBasedToolchain} by calling Jack via API.
+ */
+public abstract class JackApiToolchainBase extends JackBasedToolchain {
+
+ @Nonnull
+ protected JackConfig config;
+
+ @Nonnull
+ private String compilerCodeName;
+ @Nonnull
+ private String compilerVersion;
+ @Nonnull
+ private String compilerBuildId;
+ @Nonnull
+ private String compilerCodeBase;
+
+ @CheckForNull
+ protected File incrementalFolder;
+ @Nonnull
+ protected VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+
+ public String getCompilerCodeName() {
+ return compilerCodeName;
+ }
+
+ public String getCompilerVersion() {
+ return compilerVersion;
+ }
+
+ public String getCompilerBuildId() {
+ return compilerBuildId;
+ }
+
+ public String getCompilerCodeBase() {
+ return compilerCodeBase;
+ }
+
+ protected <T extends JackConfig> JackApiToolchainBase(@Nonnull File jackPrebuilt,
+ @Nonnull Class<T> jackConfig) {
+ try {
+ ClassLoader loader;
+ JackConfigProvider confProvider;
+ loader = URLClassLoader.newInstance(new URL[] {jackPrebuilt.toURI().toURL()},
+ Main.class.getClassLoader());
+
+ Class<? extends JackConfigProvider> confProviderClass = Class.forName(
+ JackConfigProvider.CLASS_NAME, true, loader).asSubclass(JackConfigProvider.class);
+
+ JackConfigProvider configProvider = confProviderClass.getConstructor().newInstance();
+
+ compilerCodeName = configProvider.getCompilerCodeName();
+ compilerVersion = configProvider.getCompilerVersion();
+ compilerBuildId = configProvider.getCompilerBuildId();
+ compilerCodeBase = configProvider.getCompilerCodeBase();
+
+ config = confProviderClass.getConstructor().newInstance().getConfig(jackConfig);
+
+ } catch (ConfigNotSupportedException e) {
+ throw new TestConfigurationException("Jack API v01 not supported", e);
+ } catch (MalformedURLException e) {
+ throw new TestConfigurationException(e);
+ } catch (ClassNotFoundException e) {
+ throw new TestConfigurationException(e);
+ } catch (InstantiationException e) {
+ throw new TestConfigurationException(e);
+ } catch (IllegalAccessException e) {
+ throw new TestConfigurationException(e);
+ } catch (IllegalArgumentException e) {
+ throw new TestConfigurationException(e);
+ } catch (InvocationTargetException e) {
+ throw new TestConfigurationException(e);
+ } catch (NoSuchMethodException e) {
+ throw new TestConfigurationException(e);
+ } catch (SecurityException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiToolchainBase setIncrementalFolder(@Nonnull File incrementalFolder) {
+ this.incrementalFolder = incrementalFolder;
+ return this;
+ }
+
+ @Nonnull
+ public abstract JackApiToolchainBase setShrobFlags(@Nonnull Flags shrobFlags);
+
+}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
new file mode 100644
index 00000000..83efb1e9
--- /dev/null
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.test.toolchain;
+
+import com.google.common.collect.Lists;
+
+import com.android.jack.Options;
+import com.android.jack.api.v01.Api01Config;
+import com.android.jack.api.v01.ConfigurationException;
+import com.android.jack.api.v01.VerbosityLevel;
+import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.TestConfigurationException;
+import com.android.sched.vfs.Container;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+/**
+ * This {@link Toolchain} uses Jack through v01 API
+ */
+public class JackApiV01Toolchain extends JackApiToolchainBase {
+
+ @Nonnull
+ private Api01Config apiV01Config;
+
+ JackApiV01Toolchain(@Nonnull File jackPrebuilt) {
+ super(jackPrebuilt, Api01Config.class);
+ apiV01Config = (Api01Config) config;
+ }
+
+ @Override
+ public void srcToExe(@Nonnull File out, boolean zipFile, @Nonnull File... sources)
+ throws Exception {
+ srcToCommon(sources);
+ setOutputDex(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void srcToLib(@Nonnull File out, boolean zipFiles, @Nonnull File... sources)
+ throws Exception {
+ srcToCommon(sources);
+ setOutputJack(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void libToExe(@Nonnull File[] in, @Nonnull File out, boolean zipFile) throws Exception {
+ libToCommon(in);
+ setOutputDex(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void libToLib(@Nonnull File[] in, @Nonnull File out, boolean zipFiles) throws Exception {
+ libToCommon(in);
+ setOutputJack(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setIncrementalFolder(@Nonnull File incrementalFolder) {
+ try {
+ apiV01Config.setIncrementalDir(incrementalFolder);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setVerbose(boolean isVerbose) {
+ super.setVerbose(isVerbose);
+ try {
+ if (isVerbose) {
+ apiV01Config.setVerbosityLevel(VerbosityLevel.DEBUG);
+ } else {
+ apiV01Config.setVerbosityLevel(VerbosityLevel.WARNING);
+ }
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public final JackApiV01Toolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue) {
+ try {
+ apiV01Config.setProperty(propertyName, propertyValue);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setWithDebugInfos(boolean withDebugInfos) {
+ try {
+ apiV01Config.setEmitDebug(withDebugInfos);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setShrobFlags(@Nonnull Flags shrobFlags) {
+ // STOPSHIP(jmhenaff): another CL remove the need for this API
+ throw new AssertionError("Must no be used");
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setSanityChecks(boolean sanityChecks) {
+ try {
+ apiV01Config.setProperty(Options.SANITY_CHECKS.getName(), Boolean.toString(sanityChecks));
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ private void srcToCommon(@Nonnull File... sources) throws Exception {
+ apiV01Config.setClasspath(classpath);
+ apiV01Config.setImportedJackLibraryFiles(staticLibs);
+ apiV01Config.setSourceEntries(Lists.newArrayList(sources));
+ apiV01Config.setResourceDirs(resImport);
+ apiV01Config.setProguardConfigFiles(proguardFlags);
+ if (jarjarRules != null) {
+ apiV01Config.setJarJarConfigFile(jarjarRules);
+ }
+ }
+
+ private void libToCommon(@Nonnull File... in) throws Exception {
+ apiV01Config.setClasspath(classpath);
+ List<File> importedLibs = new ArrayList<File>(staticLibs);
+ Collections.addAll(importedLibs, in);
+ apiV01Config.setImportedJackLibraryFiles(importedLibs);
+ apiV01Config.setResourceDirs(resImport);
+ apiV01Config.setProguardConfigFiles(proguardFlags);
+ if (jarjarRules != null) {
+ apiV01Config.setJarJarConfigFile(jarjarRules);
+ }
+ }
+
+ private void setOutputDex(@Nonnull File outDex) throws Exception {
+ if (outDex.isDirectory()) {
+ apiV01Config.setOutputDexDir(outDex);
+ } else {
+ apiV01Config.setProperty(Options.DEX_OUTPUT_CONTAINER_TYPE.getName(), Container.ZIP.name());
+ apiV01Config.setProperty(Options.GENERATE_DEX_FILE.getName(), "true");
+ apiV01Config.setProperty(Options.DEX_OUTPUT_ZIP.getName(), outDex.getAbsolutePath());
+ }
+ }
+
+ private void setOutputJack(@Nonnull File outjack) throws Exception {
+ if (!outjack.isDirectory()) {
+ apiV01Config.setOutputJackFile(outjack);
+ } else {
+ apiV01Config.setProperty(Options.LIBRARY_OUTPUT_CONTAINER_TYPE.getName(),
+ Container.DIR.name());
+ apiV01Config.setProperty(Options.LIBRARY_OUTPUT_DIR.getName(), outjack.getAbsolutePath());
+ apiV01Config.setProperty(Options.GENERATE_JACK_LIBRARY.getName(), "true");
+ apiV01Config.setProperty(Options.GENERATE_JAYCE_IN_LIBRARY.getName(), "true");
+ apiV01Config.setProperty(Options.GENERATE_DEPENDENCIES_IN_LIBRARY.getName(), "true");
+ }
+ }
+
+}
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 b7f0f552..34610eb8 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
@@ -16,8 +16,6 @@
package com.android.jack.test.toolchain;
-import com.android.jack.Options;
-import com.android.jack.Options.VerbosityLevel;
import com.android.jack.backend.dex.DexFileWriter;
import com.android.jack.backend.dex.MultiDexLegacy;
import com.android.jack.backend.dex.rop.CodeItemBuilder;
@@ -25,9 +23,7 @@ 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;
@@ -46,21 +42,15 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
LEGACY
}
- @Nonnull
- protected final Map<String, String> properties = new HashMap<String, String>();
+
@CheckForNull
protected File annotationProcessorOutDir;
@Nonnull
protected List<File> resImport = new ArrayList<File>();
- protected boolean sanityChecks = true;
-
@Nonnull
- public final JackBasedToolchain addProperty(@Nonnull String propertyName,
- @Nonnull String propertyValue) {
- properties.put(propertyName, propertyValue);
- return this;
- }
+ public abstract JackBasedToolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue);
public final JackBasedToolchain setMultiDexKind(@Nonnull MultiDexKind kind) {
switch (kind) {
@@ -119,26 +109,8 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
return this;
}
- @Override
@Nonnull
- public JackBasedToolchain setVerbose(boolean isVerbose) {
- super.setVerbose(isVerbose);
- if (isVerbose) {
- setVerbosityLevel(VerbosityLevel.DEBUG);
- } else {
- setVerbosityLevel(VerbosityLevel.WARNING);
- }
- return this;
- }
-
- @Nonnull
- protected abstract JackBasedToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level);
-
- @Nonnull
- public JackBasedToolchain setSanityChecks(boolean sanityChecks){
- this.sanityChecks = sanityChecks;
- return this;
- }
+ public abstract JackBasedToolchain setSanityChecks(boolean sanityChecks);
@Override
@Nonnull
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 280f8c9b..3542d03e 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
@@ -22,6 +22,7 @@ import com.android.jack.util.ExecuteFile;
import java.io.File;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -43,6 +44,10 @@ public class JackCliToolchain extends JackBasedToolchain {
protected File incrementalFolder;
@Nonnull
protected Options.VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+ @Nonnull
+ protected final Map<String, String> properties = new HashMap<String, String>();
+
+ protected boolean sanityChecks = true;
JackCliToolchain(@Nonnull File prebuilt) {
this.jackPrebuilt = prebuilt;
@@ -50,8 +55,9 @@ public class JackCliToolchain extends JackBasedToolchain {
@Override
@Nonnull
- protected JackCliToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level) {
- verbosityLevel = level;
+ public JackCliToolchain setVerbose(boolean isVerbose) {
+ super.setVerbose(isVerbose);
+ verbosityLevel = isVerbose ? VerbosityLevel.DEBUG : VerbosityLevel.WARNING;
return this;
}
@@ -306,6 +312,14 @@ public class JackCliToolchain extends JackBasedToolchain {
return this;
}
+ @Override
+ @Nonnull
+ public JackBasedToolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue) {
+ properties.put(propertyName, propertyValue);
+ return this;
+ }
+
protected static void addProperties(@Nonnull Map<String, String> properties,
@Nonnull List<String> args) {
for (Entry<String, String> entry : properties.entrySet()) {
@@ -314,4 +328,11 @@ public class JackCliToolchain extends JackBasedToolchain {
}
}
+ @Override
+ @Nonnull
+ public JackBasedToolchain setSanityChecks(boolean sanityChecks){
+ this.sanityChecks = sanityChecks;
+ return this;
+ }
+
}
diff --git a/jack-tests/tests/com/android/jack/analysis/dfa/reachingdefs/ReachingDefsTests.java b/jack-tests/tests/com/android/jack/analysis/dfa/reachingdefs/ReachingDefsTests.java
index 59e97901..c56c636d 100644
--- a/jack-tests/tests/com/android/jack/analysis/dfa/reachingdefs/ReachingDefsTests.java
+++ b/jack-tests/tests/com/android/jack/analysis/dfa/reachingdefs/ReachingDefsTests.java
@@ -18,7 +18,7 @@ package com.android.jack.analysis.dfa.reachingdefs;
import com.android.jack.Options;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.util.filter.SignatureMethodFilter;
import org.junit.Test;
@@ -30,7 +30,8 @@ public class ReachingDefsTests {
@Test
public void testDfa001() throws Exception {
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(Options.METHOD_FILTER.getName(), "method-with-signature");
toolchain.addProperty(SignatureMethodFilter.METHOD_SIGNATURE_FILTER.getName(),
diff --git a/jack-tests/tests/com/android/jack/classpath/ClasspathTests.java b/jack-tests/tests/com/android/jack/classpath/ClasspathTests.java
index d01ff0cc..3aaa72d0 100644
--- a/jack-tests/tests/com/android/jack/classpath/ClasspathTests.java
+++ b/jack-tests/tests/com/android/jack/classpath/ClasspathTests.java
@@ -22,7 +22,7 @@ import com.android.jack.library.FileType;
import com.android.jack.library.LibraryReadingException;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import com.android.jack.test.toolchain.JillBasedToolchain;
@@ -160,14 +160,15 @@ public class ClasspathTests {
@Test
public void testMissingClasspathEntry() throws Exception {
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
File srcDir = AbstractTestTools.getTestRootDir("com.android.jack.classpath.test004.jack");
File testOut = AbstractTestTools.createTempFile("ClasspathTest", "missing");
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.addToClasspath(new File(srcDir, "missing.jack"))
.srcToLib(testOut, /* zipFiles = */ true, srcDir);
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(Jack.STRICT_CLASSPATH.getName(), "true");
try {
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -191,14 +192,15 @@ public class ClasspathTests {
Exception {
Assert.assertTrue(invalidJack.isFile());
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
File testOut = AbstractTestTools.createTempFile("ClasspathTest", "invalid");
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.addToClasspath(invalidJack)
.srcToLib(testOut, /* zipFiles = */ true, srcDir);
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(Jack.STRICT_CLASSPATH.getName(), "true");
try {
diff --git a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
index b3c47003..a5e310c3 100644
--- a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
@@ -29,7 +29,7 @@ import com.android.jack.frontend.FrontendCompilationException;
import com.android.jack.test.TestsProperties;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import junit.framework.Assert;
@@ -69,7 +69,8 @@ public class AnnotationProcessorErrorTest {
"package jack.incremental; \n"+
"public class A {} \n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.setAnnotationProcessorClass(ResourceAnnotationProcessor.class);
try {
@@ -100,7 +101,8 @@ public class AnnotationProcessorErrorTest {
runAnnotProcBuildingResource(te);
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.setAnnotationProcessorClass(ResourceAnnotationProcessor.class);
jackApiToolchain.setAnnotationProcessorOutDir(te.getTestingFolder());
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -137,7 +139,8 @@ public class AnnotationProcessorErrorTest {
+ "public class A {}\n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.setAnnotationProcessorClass(SourceAnnotationProcessor.class);
jackApiToolchain.setAnnotationProcessorOutDir(te.getTestingFolder());
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -170,7 +173,8 @@ public class AnnotationProcessorErrorTest {
+ "@" + SourceAnnotationTest.class.getSimpleName() + "\n"
+ "public class A {}\n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.setAnnotationProcessorClass(SourceAnnotationProcessor.class);
jackApiToolchain.setAnnotationProcessorOutDir(te.getTestingFolder());
@@ -198,7 +202,8 @@ public class AnnotationProcessorErrorTest {
+ "@" + ResourceAnnotationTest.class.getSimpleName() + "\n"
+ "public class A {}\n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.setAnnotationProcessorClass(ResourceAnnotationProcessor.class);
jackApiToolchain.setAnnotationProcessorOutDir(te.getTestingFolder());
@@ -231,7 +236,8 @@ public class AnnotationProcessorErrorTest {
}
// Compile annotation to a jack file
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.addToClasspath(jackApiToolchain.getDefaultBootClasspath())
.srcToLib(te.getJackFolder(), false /* zipFiles = */, te.getSourceFolder());
diff --git a/jack-tests/tests/com/android/jack/error/CommandLineErrorTest.java b/jack-tests/tests/com/android/jack/error/CommandLineErrorTest.java
index 47ffba7a..ca85cba9 100644
--- a/jack-tests/tests/com/android/jack/error/CommandLineErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/CommandLineErrorTest.java
@@ -20,7 +20,7 @@ import com.android.jack.Main;
import com.android.jack.frontend.FrontendCompilationException;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import junit.framework.Assert;
@@ -47,7 +47,8 @@ public class CommandLineErrorTest {
public void testCommandLineError002() throws Exception {
ErrorTestHelper ite = new ErrorTestHelper();
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
jackApiToolchain.setErrorStream(errOut);
@@ -73,7 +74,8 @@ public class CommandLineErrorTest {
File sourceFile = AbstractTestTools.createFile(ite.getSourceFolder(), "jack.incremental",
"A.java", "package jack.incremental; \n" + "public class A {} \n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
jackApiToolchain.setErrorStream(errOut);
diff --git a/jack-tests/tests/com/android/jack/error/ConfigErrorTest.java b/jack-tests/tests/com/android/jack/error/ConfigErrorTest.java
index 948f0e72..f8a9d17c 100644
--- a/jack-tests/tests/com/android/jack/error/ConfigErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/ConfigErrorTest.java
@@ -18,7 +18,7 @@ package com.android.jack.error;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.sched.util.config.UnknownPropertyNameException;
import org.junit.Assert;
@@ -33,7 +33,8 @@ public class ConfigErrorTest {
public void testUnknownProperty001() throws Exception {
ErrorTestHelper ite = new ErrorTestHelper();
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
jackApiToolchain.setErrorStream(errOut);
diff --git a/jack-tests/tests/com/android/jack/error/ErrorTest.java b/jack-tests/tests/com/android/jack/error/ErrorTest.java
index 91fb962a..cb419a09 100644
--- a/jack-tests/tests/com/android/jack/error/ErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/ErrorTest.java
@@ -18,7 +18,7 @@ package com.android.jack.error;
import com.android.jack.frontend.FrontendCompilationException;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import junit.framework.Assert;
@@ -52,7 +52,8 @@ public class ErrorTest {
private void checkInternalCompilerException(@Nonnull String testName)
throws Exception, IOException {
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream err = new ByteArrayOutputStream();
toolchain.setErrorStream(err);
diff --git a/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java b/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
index 1d520522..ff2cef23 100644
--- a/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
@@ -24,7 +24,7 @@ import com.android.jack.library.LibraryIOException;
import com.android.jack.library.LibraryReadingException;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.sched.util.codec.ListParsingException;
import com.android.sched.util.codec.ParsingException;
import com.android.sched.util.config.PropertyIdException;
@@ -63,7 +63,8 @@ public class FileAccessErrorTest {
if (!jackOutputFile.setReadable(false)) {
Assert.fail("Fails to change file permissions of " + jackOutputFile.getAbsolutePath());
}
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
try {
jackApiToolchain.addToClasspath(jackApiToolchain.getDefaultBootClasspath())
@@ -88,8 +89,8 @@ public class FileAccessErrorTest {
File srcFile = AbstractTestTools.createFile(helper.getSourceFolder(), "jack.incremental",
"A.java", "package jack.incremental; \n" + "public class A {} \n");
- JackApiToolchain jackApiToolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.addToClasspath(jackApiToolchain.getDefaultBootClasspath())
.srcToLib(helper.getJackFolder(), /* zipFiles = */ false, helper.getSourceFolder());
@@ -104,7 +105,7 @@ public class FileAccessErrorTest {
Assert.fail("Fails to change file permissions of " + helper.getJackFolder().getAbsolutePath());
}
- jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
jackApiToolchain.setErrorStream(errOut);
@@ -141,7 +142,8 @@ public class FileAccessErrorTest {
Assert.fail("Fails to change file permissions of " + a.getAbsolutePath());
}
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
jackApiToolchain.setErrorStream(errOut);
@@ -170,7 +172,8 @@ public class FileAccessErrorTest {
"package jack.incremental; \n"+
"public class A {} \n");
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
jackApiToolchain.addToClasspath(jackApiToolchain.getDefaultBootClasspath())
.srcToLib(te.getJackFolder(), false, te.getSourceFolder());
@@ -216,7 +219,8 @@ public class FileAccessErrorTest {
public void testFileAccessError005() throws Exception {
ErrorTestHelper te = new ErrorTestHelper();
- JackApiToolchain jackApiToolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase jackApiToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
try {
diff --git a/jack-tests/tests/com/android/jack/error/JackFormatErrorTest.java b/jack-tests/tests/com/android/jack/error/JackFormatErrorTest.java
index 5ac5c121..9af3c449 100644
--- a/jack-tests/tests/com/android/jack/error/JackFormatErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/JackFormatErrorTest.java
@@ -27,7 +27,7 @@ import com.android.jack.library.LibraryReadingException;
import com.android.jack.library.v0001.Version;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import junit.framework.Assert;
@@ -70,7 +70,8 @@ public class JackFormatErrorTest {
"package jack.incremental; \n"+
"public class B extends A {} \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.setVerbose(true);
@@ -116,7 +117,8 @@ public class JackFormatErrorTest {
"package jack.incremental; \n"+
"public class B extends A {} \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.setVerbose(true);
@@ -161,7 +163,8 @@ public class JackFormatErrorTest {
"package jack.incremental; \n"+
"public class B extends A {} \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.setVerbose(true);
diff --git a/jack-tests/tests/com/android/jack/error/SourceErrorTest.java b/jack-tests/tests/com/android/jack/error/SourceErrorTest.java
index f9c4b9c7..74f24818 100644
--- a/jack-tests/tests/com/android/jack/error/SourceErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/SourceErrorTest.java
@@ -20,7 +20,7 @@ import com.android.jack.frontend.FrontendCompilationException;
import com.android.jack.test.helper.ErrorTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import org.junit.Assert;
import org.junit.Test;
@@ -44,7 +44,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "A.java", "package jack.invalidsource;\n"
+ "public clas A {}\n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
toolchain.setErrorStream(errOut);
@@ -70,7 +71,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "A.java", "package jack.invalidsource;\n"
+ "publi class A {}\n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
toolchain.setErrorStream(errOut);
@@ -96,7 +98,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "A.java", "package jack.invalidsource;\n"
+ "public class B {}\n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
toolchain.setErrorStream(errOut);
@@ -123,7 +126,8 @@ public class SourceErrorTest {
+ "import jack.invalidsource.B;\n"
+ "public class A {}\n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
toolchain.setErrorStream(errOut);
@@ -158,7 +162,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.overflow", "A.java",
"package jack.overflow; \n" + content.toString());
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -189,7 +194,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "B.java", "package jack.invalidsource;\n"
+ "public class B { private void m(in a) {}; \n private void n(int a) {re}; } \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -225,7 +231,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "B.java", "package jack.invalidsource;\n"
+ "public class B { private void m(in a) {}; \n private void n(int a) {}; } \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -259,7 +266,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "B.java", "package jack.invalidsource;\n"
+ "public class B { private void m(int a) {}; \n private void n(int a) {}; } \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -290,7 +298,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "A.java", "package jack.invalidsource;\n"
+ "public class A { private void m(in a) {}; } \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -319,7 +328,8 @@ public class SourceErrorTest {
AbstractTestTools.createFile(helper.getSourceFolder(), "jack.invalidsource", "A.java", "package jack.invalidsource;\n"
+ "public class A { private void n(int a) {re;} } \n");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
diff --git a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
index 0b0b34ab..0302d497 100644
--- a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
+++ b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
@@ -30,7 +30,7 @@ import com.android.jack.shrob.obfuscation.NameProviderFactory;
import com.android.jack.test.category.KnownBugs;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import com.android.jack.test.toolchain.JackCliToolchain;
import com.android.jack.test.toolchain.LegacyJillToolchain;
@@ -51,9 +51,9 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
-import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -485,7 +485,8 @@ public class FileConflictTests {
File testSrcDir = AbstractTestTools.getTestRootDir("com.android.jack.fileconflict.test004.jack");
File tempJackFolder = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
tempJackFolder,
@@ -512,7 +513,7 @@ public class FileConflictTests {
copyFileToDir(resource2, "pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt", jackOutput);
// run Jack on Jack dir
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProguardFlags(new File(testSrcDir, "proguard.flags"));
toolchain.addProperty(NameProviderFactory.NAMEPROVIDER.getName(), "rot13");
toolchain.libToLib(jackImport1, jackOutput, /* zipFiles = */ false);
@@ -528,7 +529,7 @@ public class FileConflictTests {
if (isApiTest) {
excludeList.add(JackCliToolchain.class);
}
- return AbstractTestTools.getCandidateToolchain(JackApiToolchain.class, excludeList);
+ return AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeList);
}
private void runTest001(@Nonnull File jackOutput, @CheckForNull String collisionPolicy,
diff --git a/jack-tests/tests/com/android/jack/imports/ImportTests.java b/jack-tests/tests/com/android/jack/imports/ImportTests.java
index 3b508cf6..fbcbd613 100644
--- a/jack-tests/tests/com/android/jack/imports/ImportTests.java
+++ b/jack-tests/tests/com/android/jack/imports/ImportTests.java
@@ -22,7 +22,7 @@ import com.android.jack.backend.jayce.TypeImportConflictException;
import com.android.jack.library.LibraryReadingException;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import junit.framework.Assert;
@@ -62,7 +62,8 @@ public class ImportTests {
@Test
public void testCompileConflictingSourceAndImport() throws Exception {
File jackOut = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
jackOut,
@@ -118,15 +119,15 @@ public class ImportTests {
public void testConflictingImportWithFailPolicy1() throws Exception {
String testName = "com.android.jack.inner.test015";
File lib = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
lib,
/* zipFile = */ false,
AbstractTestTools.getTestRootDir(testName + ".lib"));
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
// import twice the same lib
toolchain.addStaticLibs(lib, lib);
toolchain.addProperty(JayceFileImporter.COLLISION_POLICY.getName(), "fail");
@@ -154,8 +155,8 @@ public class ImportTests {
public void testConflictingImportWithFailPolicy2() throws Exception {
String testName = "com.android.jack.inner.test015";
File lib1 = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
lib1,
@@ -164,14 +165,14 @@ public class ImportTests {
File lib2 = AbstractTestTools.createTempDir();
toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
lib2,
/* zipFile = */ false,
AbstractTestTools.getTestRootDir(testName + ".lib"));
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
// import twice the same lib
toolchain.addStaticLibs(lib1, lib2);
toolchain.addProperty(JayceFileImporter.COLLISION_POLICY.getName(), "fail");
diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java
index 8349e981..58fa82c5 100644
--- a/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java
+++ b/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java
@@ -23,7 +23,7 @@ import com.android.jack.backend.dex.MainDexOverflowException;
import com.android.jack.backend.dex.MultiDexLegacy;
import com.android.jack.test.category.SlowTests;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.tools.merger.FieldIdOverflowException;
import com.android.jack.tools.merger.MethodIdOverflowException;
import com.android.sched.scheduler.ProcessException;
@@ -68,8 +68,8 @@ public class MultiDexOverflowTests {
}
generateJavaFileWithMethods(srcFolder, fileCount, 36);
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(MultiDexLegacy.MULTIDEX_LEGACY.getName(), "true");
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
@@ -105,8 +105,8 @@ public class MultiDexOverflowTests {
}
generateJavaFileWithFields(srcFolder, fileCount, 37);
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(MultiDexLegacy.MULTIDEX_LEGACY.getName(), "true");
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "multidex");
diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
index a1a641b4..764448e9 100644
--- a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
+++ b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
@@ -34,7 +34,7 @@ import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import com.android.jack.test.toolchain.LegacyJillToolchain;
import com.android.sched.util.TextUtils;
@@ -94,7 +94,8 @@ public class MultiDexTests {
public void versionedTest001a() throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "multidex");
@@ -120,7 +121,8 @@ public class MultiDexTests {
public void versionedTest001b() throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
@@ -145,7 +147,8 @@ public class MultiDexTests {
public void versionedTest001c() throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-003.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
@@ -170,7 +173,8 @@ public class MultiDexTests {
public void versionedTest001a_withoutAnnotations() throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
File out = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "multidex");
@@ -188,7 +192,7 @@ public class MultiDexTests {
public void versionedTest001b_minimal_withoutAnnotations() throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
File out = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
@@ -209,7 +213,8 @@ public class MultiDexTests {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test001.jack");
File out = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-003.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
@@ -318,7 +323,8 @@ public class MultiDexTests {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test002.jack");
File out = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "multidex");
@@ -348,7 +354,8 @@ public class MultiDexTests {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test002.jack");
File out = AbstractTestTools.createTempDir();
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp"));
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
toolchain.addStaticLibs(library);
@@ -384,7 +391,8 @@ public class MultiDexTests {
Assert.assertTrue(jackInf.mkdir());
Files.copy(new File(testFolder,"config-001.jpp"), new File(jackInf, "config-001.jpp"));
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProperty(MultiDexLegacy.MULTIDEX_LEGACY.getName(), "true");
toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex");
toolchain.addStaticLibs(autoLibrary);
diff --git a/jack-tests/tests/com/android/jack/shrob/FlattenPackageTests.java b/jack-tests/tests/com/android/jack/shrob/FlattenPackageTests.java
index c59e2d73..3cb631d5 100644
--- a/jack-tests/tests/com/android/jack/shrob/FlattenPackageTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/FlattenPackageTests.java
@@ -17,15 +17,15 @@
package com.android.jack.shrob;
import com.android.jack.Options;
-import com.android.jack.test.category.SlowTests;
import com.android.jack.shrob.obfuscation.NameProviderFactory;
import com.android.jack.shrob.proguard.GrammarActions;
import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.category.SlowTests;
import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import org.junit.experimental.categories.Category;
@@ -43,7 +43,8 @@ public class FlattenPackageTests extends AbstractTest {
@Nonnull String mappingNumber)
throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.shrob.test" + testNumber);
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
Flags flags = new Flags();
toolchain.setShrobFlags(flags);
GrammarActions.parse("proguard.flags" + flagNumber, testFolder.getAbsolutePath(), flags);
diff --git a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithMappingTests.java b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithMappingTests.java
index fb09d898..7b35e501 100644
--- a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithMappingTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithMappingTests.java
@@ -22,7 +22,7 @@ import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import org.junit.Test;
@@ -40,7 +40,8 @@ public class ObfuscationWithMappingTests extends AbstractTest {
throws Exception {
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.shrob.test" + testNumber);
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
Flags flags = new Flags();
toolchain.setShrobFlags(flags);
GrammarActions.parse("proguard.flags" + flagNumber, testFolder.getAbsolutePath(), flags);
diff --git a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
index bd7030f4..546b5a56 100644
--- a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
@@ -25,7 +25,7 @@ import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -48,7 +48,8 @@ public class ObfuscationWithoutMappingTests extends AbstractTest {
String testPackageName = "com.android.jack.shrob.test" + testNumber;
File testFolder = AbstractTestTools.getTestRootDir(testPackageName);
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
Flags flags = new Flags();
toolchain.setShrobFlags(flags);
GrammarActions.parse("proguard.flags" + flagNumber, testFolder.getAbsolutePath(), flags);
diff --git a/jack-tests/tests/com/android/jack/shrob/RepackagingTest.java b/jack-tests/tests/com/android/jack/shrob/RepackagingTest.java
index 805d2c51..042a5a42 100644
--- a/jack-tests/tests/com/android/jack/shrob/RepackagingTest.java
+++ b/jack-tests/tests/com/android/jack/shrob/RepackagingTest.java
@@ -24,7 +24,7 @@ import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import java.io.File;
@@ -49,7 +49,8 @@ public class RepackagingTest extends AbstractTest {
flags.setOutputMapping(candidateOutputMapping);
flags.setPrintMapping(true);
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.setShrobFlags(flags);
toolchain.addProperty(NameProviderFactory.NAMEPROVIDER.getName(), "rot13");
toolchain.addProperty(Options.METHOD_FILTER.getName(), "supported-methods");
diff --git a/jack-tests/tests/com/android/jack/shrob/SeedTests.java b/jack-tests/tests/com/android/jack/shrob/SeedTests.java
index 938f57d6..dbc4c173 100644
--- a/jack-tests/tests/com/android/jack/shrob/SeedTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/SeedTests.java
@@ -16,14 +16,14 @@
package com.android.jack.shrob;
-import com.android.jack.test.category.SlowTests;
import com.android.jack.shrob.proguard.GrammarActions;
import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.category.SlowTests;
import com.android.jack.test.comparator.ComparatorSeeds;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -53,7 +53,8 @@ public class SeedTests extends AbstractTest {
flags.setSeedsFile(candidateOutputSeeds);
flags.setPrintSeeds(true);
- JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.setShrobFlags(flags);
SourceToDexComparisonTestHelper env =
diff --git a/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java b/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
index 81f6ba76..241a6f4a 100644
--- a/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ShrinkTests.java
@@ -24,7 +24,7 @@ import com.android.jack.test.comparator.ComparatorMapping;
import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.DummyToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain;
import com.android.jack.util.TextUtils;
@@ -93,15 +93,15 @@ public class ShrinkTests extends AbstractTest {
File shrinkOut = null;
try {
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
libOut,
/* zipFiles = */ false,
new File(shrobTestsDir, "test020/lib"));
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
testOut = AbstractTestTools.createTempDir();
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.addToClasspath(libOut)
@@ -110,7 +110,7 @@ public class ShrinkTests extends AbstractTest {
new File(shrobTestsDir, "test020/jack"));
shrinkOut = AbstractTestTools.createTempDir();
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProguardFlags(
dontObfuscateFlagFile,
new ProguardFlags(new File(shrobTestsDir, "test020"),"proguard.flags"));
@@ -141,15 +141,15 @@ public class ShrinkTests extends AbstractTest {
File dexOut = null;
try {
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
.srcToLib(
jackOut,
/* zipFiles = */ false,
new File(shrobTestsDir, "test021/jack"));
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.addProguardFlags(
dontObfuscateFlagFile,
new ProguardFlags(new File( shrobTestsDir, "test021"),"proguard.flags001"));
@@ -157,7 +157,7 @@ public class ShrinkTests extends AbstractTest {
toolchain.libToLib(jackOut, shrinkOut, /* zipFiles = */ false);
dexOut = AbstractTestTools.createTempDir();
- toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
toolchain.libToExe(shrinkOut, dexOut, /* zipFile = */ false);
} catch (Exception e) {
diff --git a/jack-tests/tests/com/android/jack/tools/merger/MergerTestTools.java b/jack-tests/tests/com/android/jack/tools/merger/MergerTestTools.java
index 777951e0..668a3dab 100644
--- a/jack-tests/tests/com/android/jack/tools/merger/MergerTestTools.java
+++ b/jack-tests/tests/com/android/jack/tools/merger/MergerTestTools.java
@@ -19,7 +19,7 @@ package com.android.jack.tools.merger;
import com.android.jack.Options;
import com.android.jack.backend.dex.DexFileWriter;
import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.sched.scheduler.ScheduleInstance;
import java.io.File;
@@ -34,8 +34,8 @@ public class MergerTestTools {
@Nonnull
protected File buildOneDexPerType(@Nonnull File sourceFolder,
boolean withDebug, @CheckForNull OutputStream out, @CheckForNull OutputStream err) throws Exception {
- JackApiToolchain toolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class);
+ JackApiToolchainBase toolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
try {
File multiDexFolder = AbstractTestTools.createTempDir();
File multiDex = new File(multiDexFolder, DexFileWriter.DEX_FILENAME);
diff --git a/jack/.classpath b/jack/.classpath
index 84524f28..bc2c585b 100644
--- a/jack/.classpath
+++ b/jack/.classpath
@@ -20,6 +20,6 @@
<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
<classpathentry kind="lib" path="libs/junit4.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry kind="lib" path="libs/jack-api-lib.jar"/>
+ <classpathentry kind="lib" path="libs/jack-api-lib.jar" sourcepath="/jack-api/src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/jack/src/com/android/jack/api/impl/JackConfigProviderImpl.java b/jack/src/com/android/jack/api/impl/JackConfigProviderImpl.java
new file mode 100644
index 00000000..0cc1caff
--- /dev/null
+++ b/jack/src/com/android/jack/api/impl/JackConfigProviderImpl.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.api.impl;
+
+import com.android.jack.Jack;
+import com.android.jack.api.ConfigNotSupportedException;
+import com.android.jack.api.JackConfig;
+import com.android.jack.api.JackConfigProvider;
+import com.android.jack.api.v01.Api01Config;
+import com.android.jack.api.v01.impl.Api01ConfigImpl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This class provides an implementation to build the requested {@link JackConfig}
+ */
+public class JackConfigProviderImpl implements JackConfigProvider {
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends JackConfig> T getConfig(Class<T> cls) throws ConfigNotSupportedException {
+ if (cls == Api01Config.class) {
+ return (T) new Api01ConfigImpl();
+ }
+
+ throw new ConfigNotSupportedException(cls.getName() + " are not supported");
+ }
+
+ @Override
+ public String getCompilerVersion() {
+ return Jack.getVersionString();
+ }
+
+ @Override
+ public String getCompilerBuildId() {
+ return Jack.getVersionString();
+ }
+
+ @Override
+ public String getCompilerCodeBase() {
+ return Jack.getVersionString();
+ }
+
+ @Override
+ public String getCompilerCodeName() {
+ return Jack.getVersionString();
+ }
+
+ @Override
+ public Collection<Class<? extends JackConfig>> getSupportedConfigs() {
+ List<Class<? extends JackConfig>> result = new ArrayList<Class<? extends JackConfig>>();
+ result.add(Api01Config.class);
+ return result;
+ }
+} \ No newline at end of file