diff options
author | Jean-Marie Hénaff <jmhenaff@google.com> | 2015-03-09 15:47:55 +0000 |
---|---|---|
committer | Jean-Marie Henaff <jmhenaff@google.com> | 2015-03-09 17:20:39 +0100 |
commit | 3bc5d685e9d9b2d9eb50e12d00cce47972a62d22 (patch) | |
tree | 4923f0ac587fac4e1b8a3304fdded79ab4ce7d2b | |
parent | 62b4de7231372a882f49b2389b34a438e900debf (diff) | |
download | toolchain_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
31 files changed, 572 insertions, 421 deletions
@@ -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 |