diff options
author | Jean-Marie Henaff <jmhenaff@google.com> | 2015-03-02 14:50:31 +0100 |
---|---|---|
committer | Jean-Marie Henaff <jmhenaff@google.com> | 2015-03-06 14:12:20 +0100 |
commit | d235ed6f21b7b21aefb4b066b0c64acfa2bbb229 (patch) | |
tree | e2a963acc70ba664991df32bf3f64176cbcc6a82 /jack-tests/src/com/android | |
parent | d6059b4371b3039f5e6e473664302b4c6cada7dc (diff) | |
download | toolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.tar.gz toolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.tar.bz2 toolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.zip |
Start using jack-api for jack API based test toolchains
Implementation is still to be done.
Change-Id: I010ab9f00f4c00275982d4abfcbf6c94248f3fb4
Diffstat (limited to 'jack-tests/src/com/android')
7 files changed, 355 insertions, 313 deletions
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 e48177e0..00000000 --- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java +++ /dev/null @@ -1,269 +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.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; - } - - 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; + } + } |