diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2014-07-29 11:00:47 +0200 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2014-07-29 11:00:47 +0200 |
commit | b3a1996a72139ba3770fce388b7235849884ed83 (patch) | |
tree | 20edf13eea5add2ec73fe3ceb40cc0c6bcac5b7b | |
parent | afbb5afe2b90ea0e56e663d341d72083ad5a9181 (diff) | |
download | toolchain_jack-b3a1996a72139ba3770fce388b7235849884ed83.tar.gz toolchain_jack-b3a1996a72139ba3770fce388b7235849884ed83.tar.bz2 toolchain_jack-b3a1996a72139ba3770fce388b7235849884ed83.zip |
-o option is no longer a file but a folder
Change-Id: I46702a101e0d42015943e34e91008cd9a18331c6
27 files changed, 184 insertions, 142 deletions
diff --git a/jack-tests/Android.mk b/jack-tests/Android.mk index d40f992c..ece3a8a7 100644 --- a/jack-tests/Android.mk +++ b/jack-tests/Android.mk @@ -17,18 +17,20 @@ private_jack_tests_mk := $(lastword $(MAKEFILE_LIST)) LOCAL_PATH:= $(call my-dir) test-jack-incremental: $(JACK_JAR) - $(hide) $(eval TEMPDIR := $(shell mktemp -d)) + $(hide) $(eval TEMPDIR_DEX_FROM_JAVA := $(shell mktemp -d)) + $(hide) $(eval TEMPDIR_DEX_FROM_JACK := $(shell mktemp -d)) $(hide) $(JACK) -D jack.jackfile.generate=true -D jack.jackfile.output.container=dir \ - -D jack.jackfile.output.dir=$(TEMPDIR)/jackIncrementalOutput -o \ - $(TEMPDIR)/coreDexFromJava.dex \ + -D jack.jackfile.output.dir=$(TEMPDIR_DEX_FROM_JAVA)/jackIncrementalOutput -o \ + $(TEMPDIR_DEX_FROM_JAVA) \ --ecj -nowarn @$(ANDROID_BUILD_TOP)/out/target/common/obj/JAVA_LIBRARIES/core_intermediates/sources.list $(hide) $(JACK) \ - --output $(TEMPDIR)/coreDexFromJack.dex --import-jack $(TEMPDIR)/jackIncrementalOutput - $(hide) dexdump -d $(TEMPDIR)/coreDexFromJava.dex | tail -n +3 &> $(TEMPDIR)/coreDexFromJava.dex.txt - $(hide) dexdump -d $(TEMPDIR)/coreDexFromJack.dex | tail -n +3 &> $(TEMPDIR)/coreDexFromJack.dex.txt - $(hide) diff --side-by-side --suppress-common-lines $(TEMPDIR)/coreDexFromJava.dex.txt \ - $(TEMPDIR)/coreDexFromJack.dex.txt - $(hide) rm -rf $(TEMPDIR) + --output $(TEMPDIR_DEX_FROM_JACK) --import-jack $(TEMPDIR_DEX_FROM_JAVA)/jackIncrementalOutput + $(hide) dexdump -d $(TEMPDIR_DEX_FROM_JAVA)/classes.dex | tail -n +3 &> $(TEMPDIR_DEX_FROM_JAVA)/coreDexFromJava.txt + $(hide) dexdump -d $(TEMPDIR_DEX_FROM_JACK)/classes.dex | tail -n +3 &> $(TEMPDIR_DEX_FROM_JACK)/coreDexFromJack.txt + $(hide) diff --side-by-side --suppress-common-lines $(TEMPDIR_DEX_FROM_JAVA)/coreDexFromJava.txt \ + $(TEMPDIR_DEX_FROM_JACK)/coreDexFromJack.txt + $(hide) rm -rf $(TEMPDIR_DEX_FROM_JAVA) + $(hide) rm -rf $(TEMPDIR_DEX_FROM_JACK) .PHONY: test-jack test-jack: test-jack-unit test-jack-incremental diff --git a/jack-tests/build/run-test.mk b/jack-tests/build/run-test.mk index 540009e8..e49b8f73 100644 --- a/jack-tests/build/run-test.mk +++ b/jack-tests/build/run-test.mk @@ -102,7 +102,7 @@ $(JACKTEST_LINK_DEX): PRIVATE_JAVA_SOURCES := $(JACKTEST_LINK_SRC) $(JACKTEST_LINK_DEX): PRIVATE_ARGS := $(JACKTEST_ARGS) $(JACKTEST_SOURCE_JAVA7) $(JACKTEST_LINK_DEX): $(JACKTEST_LINK_SRC) $(PRIVATE_TEST_MK) $(BOOTCLASSPATH_LIBS) $(JACK_JAR) $(hide) mkdir -p $(dir $@) - $(hide) $(JACK) $(PRIVATE_ARGS) $(PRIVATE_BOOTCLASSPATH) $(addprefix -cp ,$(PRIVATE_CLASSPATH)) -o $@ --ecj -nowarn \ + $(hide) $(JACK) $(PRIVATE_ARGS) $(PRIVATE_BOOTCLASSPATH) $(addprefix -cp ,$(PRIVATE_CLASSPATH)) -o $(dir $@) --ecj -nowarn \ $(PRIVATE_JAVA_SOURCES) $(JACKTEST_WITHJACK_DEX): PRIVATE_BOOTCLASSPATH := $(local_bootclasspath_jack) @@ -111,7 +111,7 @@ $(JACKTEST_WITHJACK_DEX): PRIVATE_JAVA_SOURCES := $(JACKTEST_WITHJACK_SRC) $(JACKTEST_WITHJACK_DEX): PRIVATE_ARGS := $(JACKTEST_ARGS) $(JACKTEST_SOURCE_JAVA7) $(JACKTEST_WITHJACK_DEX): $(JACKTEST_WITHJACK_SRC) $(BOOTCLASSPATH_LIBS) $(PRIVATE_TEST_MK) $(JACKTEST_LIB_JAR) $(JACK_JAR) $(hide) mkdir -p $(dir $@) - $(hide) $(JACK) $(PRIVATE_ARGS) -o $@ $(PRIVATE_BOOTCLASSPATH) $(addprefix -cp ,$(PRIVATE_CLASSPATH)) --ecj -nowarn \ + $(hide) $(JACK) $(PRIVATE_ARGS) -o $(dir $@) $(PRIVATE_BOOTCLASSPATH) $(addprefix -cp ,$(PRIVATE_CLASSPATH)) --ecj -nowarn \ $(PRIVATE_JAVA_SOURCES) $(JACKTEST_WITHDX_JAR): PRIVATE_JACK_DEBUG_FLAGS := -g diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java index 6deefc95..a37456a5 100644 --- a/jack/src/com/android/jack/Options.java +++ b/jack/src/com/android/jack/Options.java @@ -35,7 +35,6 @@ import com.android.jack.util.filter.AllMethods; import com.android.jack.util.filter.Filter; import com.android.sched.util.RunnableHooks; import com.android.sched.util.codec.InputOutputVDirCodec; -import com.android.sched.util.codec.OutputStreamCodec; import com.android.sched.util.codec.OutputVDirCodec; import com.android.sched.util.config.Config; import com.android.sched.util.config.ConfigPrinterFactory; @@ -48,7 +47,6 @@ import com.android.sched.util.config.id.ImplementationPropertyId; import com.android.sched.util.config.id.ObjectId; import com.android.sched.util.config.id.PropertyId; import com.android.sched.util.file.FileOrDirectory.Existence; -import com.android.sched.util.file.OutputStreamFile; import com.android.sched.util.location.FileLocation; import com.android.sched.util.location.StringLocation; import com.android.sched.util.log.LoggerFactory; @@ -133,14 +131,13 @@ public class Options { GENERATE_ONE_DEX_PER_TYPE.getValue().isTrue()); @Nonnull - public static final PropertyId<OutputStreamFile> DEX_FILE_OUTPUT = PropertyId.create( - "jack.dex.output.file", "Standalone output file for dex", - new OutputStreamCodec(Existence.MAY_EXIST).allowStandard()).requiredIf( - DEX_OUTPUT_CONTAINER_TYPE.is(Container.FILE).or( - GENERATE_ONE_DEX_PER_TYPE.getValue().isTrue())); + public static final PropertyId<OutputVDir> DEX_OUTPUT_DIR = PropertyId.create( + "jack.dex.output.dir", "Output folder for dex", + new OutputVDirCodec(Existence.MUST_EXIST, Container.DIR)).requiredIf(DEX_OUTPUT_CONTAINER_TYPE + .is(Container.DIR).or(GENERATE_ONE_DEX_PER_TYPE.getValue().isTrue())); @Nonnull - public static final PropertyId<OutputVDir> DEX_ZIP_OUTPUT = PropertyId.create( + public static final PropertyId<OutputVDir> DEX_OUTPUT_ZIP = PropertyId.create( "jack.dex.output.zip", "Output zip archive for dex", new OutputVDirCodec(Existence.MAY_EXIST, Container.ZIP)).requiredIf( DEX_OUTPUT_CONTAINER_TYPE.is(Container.ZIP)); @@ -191,13 +188,13 @@ public class Options { metaVar = "[error | warning | info | debug | trace]") protected VerbosityLevel verbose = VerbosityLevel.WARNING; - @Option(name = "--incremental-folder", - usage = "Folder used for incremental data", metaVar = "FILE") + @Option(name = "--incremental-folder", usage = "Folder used for incremental data", + metaVar = "FILE") protected File incrementalFolder = null; - @Option(name = "-o", aliases = "--output", - usage = "output to this dex file (default: ./classes.dex)", metaVar = "FILE") - protected File out = new File("./classes.dex"); + @Option(name = "-o", aliases = "--output", usage = "output to this folder", + metaVar = "FILE") + protected File out = null; @Option(name = "--output-zip", usage = "output to this zip file", metaVar = "FILE") protected File outZip = null; @@ -335,11 +332,11 @@ public class Options { } @Nonnull - public File getOutputFile() { + public File getOutputDir() { return out; } - public void setOutputFile(File out) { + public void setOutputDir(File out) { this.out = out; } @@ -574,12 +571,12 @@ public class Options { configBuilder.set(JACK_OUTPUT_CONTAINER_TYPE, Container.DIR); configBuilder.set(GENERATE_JACK_FILE, true); } else if (outZip != null) { - configBuilder.setString(DEX_ZIP_OUTPUT, outZip.getAbsolutePath()); + configBuilder.setString(DEX_OUTPUT_ZIP, outZip.getAbsolutePath()); configBuilder.set(DEX_OUTPUT_CONTAINER_TYPE, Container.ZIP); configBuilder.set(GENERATE_DEX_FILE, true); - } else { - configBuilder.setString(DEX_FILE_OUTPUT, out.getAbsolutePath()); - configBuilder.set(DEX_OUTPUT_CONTAINER_TYPE, Container.FILE); + } else if (out != null) { + configBuilder.setString(DEX_OUTPUT_DIR, out.getAbsolutePath()); + configBuilder.set(DEX_OUTPUT_CONTAINER_TYPE, Container.DIR); configBuilder.set(GENERATE_DEX_FILE, true); } configBuilder.set(FieldInitializerRemover.CLASS_AS_INITIALVALUE, !dxLegacy); diff --git a/jack/src/com/android/jack/backend/ResourceWriter.java b/jack/src/com/android/jack/backend/ResourceWriter.java index 2ba638e8..bde0725b 100644 --- a/jack/src/com/android/jack/backend/ResourceWriter.java +++ b/jack/src/com/android/jack/backend/ResourceWriter.java @@ -61,7 +61,7 @@ public class ResourceWriter implements RunnableSchedulable<JSession> { assert ThreadConfig.get(Options.GENERATE_DEX_FILE).booleanValue(); Container containerType = ThreadConfig.get(Options.DEX_OUTPUT_CONTAINER_TYPE); assert containerType == Container.ZIP; - outputVDir = ThreadConfig.get(Options.DEX_ZIP_OUTPUT); + outputVDir = ThreadConfig.get(Options.DEX_OUTPUT_ZIP); } } diff --git a/jack/src/com/android/jack/backend/dex/DexFileWriter.java b/jack/src/com/android/jack/backend/dex/DexFileWriter.java index ee11c700..bc10fbb5 100644 --- a/jack/src/com/android/jack/backend/dex/DexFileWriter.java +++ b/jack/src/com/android/jack/backend/dex/DexFileWriter.java @@ -29,8 +29,11 @@ import com.android.sched.schedulable.Produce; import com.android.sched.schedulable.RunnableSchedulable; import com.android.sched.schedulable.Support; import com.android.sched.util.config.ThreadConfig; -import com.android.sched.util.file.OutputStreamFile; +import com.android.sched.vfs.OutputVDir; +import com.android.sched.vfs.OutputVFile; +import com.android.sched.vfs.VPath; +import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -46,28 +49,30 @@ import javax.annotation.Nonnull; @Support(DexNonZipOutput.class) public class DexFileWriter extends DexWriter implements RunnableSchedulable<JSession> { + public static final String DEX_FILENAME = "classes.dex"; + @Nonnull - private final OutputStreamFile outputFile = ThreadConfig.get(Options.DEX_FILE_OUTPUT); + private final OutputVDir outputVDir = ThreadConfig.get(Options.DEX_OUTPUT_DIR); @Override public void run(@Nonnull JSession session) throws Exception { DexFile dexFile = getDexFile(session); + OutputVFile dexVFile = outputVDir.createOutputVFile(new VPath(DEX_FILENAME, '/')); + OutputStream osDex = new BufferedOutputStream(dexVFile.openWrite()); - OutputStream outputStream = outputFile.getOutputStream(); try { if (emitOneDexPerType) { - mergeDexPerType(dexFile, outputStream); + mergeDexPerType(dexFile, osDex); } else { try { dexFile.prepare(); - dexFile.writeTo(outputStream, null, false); + dexFile.writeTo(osDex, null, false); } catch (IOException e) { - throw new JackIOException("Could not write Dex file to output '" - + outputFile.getLocation() + "'", e); + throw new JackIOException("Could not write Dex file to output '" + dexVFile + "'", e); } } } finally { - outputStream.close(); + osDex.close(); } } } diff --git a/jack/src/com/android/jack/backend/dex/DexZipWriter.java b/jack/src/com/android/jack/backend/dex/DexZipWriter.java index 41ccc941..41942b6f 100644 --- a/jack/src/com/android/jack/backend/dex/DexZipWriter.java +++ b/jack/src/com/android/jack/backend/dex/DexZipWriter.java @@ -56,7 +56,7 @@ public class DexZipWriter extends DexWriter implements RunnableSchedulable<JSess private static final String DEX_NAME = "classes.dex"; @Nonnull - private final OutputVDir outputVDir = ThreadConfig.get(Options.DEX_ZIP_OUTPUT); + private final OutputVDir outputVDir = ThreadConfig.get(Options.DEX_OUTPUT_ZIP); @Nonnull private final Logger logger = LoggerFactory.getLogger(); diff --git a/jack/tests/com/android/jack/AnnotationTestTools.java b/jack/tests/com/android/jack/AnnotationTestTools.java index 75c229b6..6501b062 100644 --- a/jack/tests/com/android/jack/AnnotationTestTools.java +++ b/jack/tests/com/android/jack/AnnotationTestTools.java @@ -16,6 +16,8 @@ package com.android.jack; +import com.android.jack.backend.dex.DexFileWriter; + import java.io.File; import java.io.IOException; @@ -33,7 +35,7 @@ public class AnnotationTestTools { String classpathStr = TestTools.getClasspathsAsString(bootclasspath, classpath); - File jackDex = TestTools.createTempFile("jackdex", ".dex"); + File jackDex = TestTools.createTempDir("jack", "dex"); boolean useEcjAsRefCompiler = false; @@ -57,7 +59,7 @@ public class AnnotationTestTools { null); } - private static void compareDexToReference(@Nonnull File jackDex, + private static void compareDexToReference(@Nonnull File jackDexFolder, @Nonnull Options compilerArgs, @CheckForNull ProguardFlags[] proguardFlags, @CheckForNull File[] bootclasspath, @@ -80,6 +82,6 @@ public class AnnotationTestTools { // Compare Jack Dex file to reference DexAnnotationsComparator comparator = new DexAnnotationsComparator(); - comparator.compare(refDex, jackDex); + comparator.compare(refDex, new File(jackDexFolder, DexFileWriter.DEX_FILENAME)); } } diff --git a/jack/tests/com/android/jack/BridgeTest.java b/jack/tests/com/android/jack/BridgeTest.java index ad09d1eb..126c3952 100644 --- a/jack/tests/com/android/jack/BridgeTest.java +++ b/jack/tests/com/android/jack/BridgeTest.java @@ -123,8 +123,8 @@ public class BridgeTest { options = new Options(); options.jayceImport = new ArrayList<File>(1); options.jayceImport.add(jackZipOfPublicExtendsGeneric); - File outDexFile = TestTools.createTempFile("tmpBridge", ".dex"); + File outDexFolder = TestTools.createTempDir("tmpBridge", "dex"); TestTools.compileSourceToDex(options, new File(srcFolder, "Caller.java"), - TestTools.getDefaultBootclasspathString(), outDexFile, false /* zip */); + TestTools.getDefaultBootclasspathString(), outDexFolder, false /* zip */); } } diff --git a/jack/tests/com/android/jack/ClasspathTest.java b/jack/tests/com/android/jack/ClasspathTest.java index 94b7b42f..54b98f40 100644 --- a/jack/tests/com/android/jack/ClasspathTest.java +++ b/jack/tests/com/android/jack/ClasspathTest.java @@ -82,9 +82,8 @@ public class ClasspathTest { } { - File testOut = new File(outFolder, "classes.dex"); Options testOptions = TestTools.buildCommandLineArgs(new File(testFolder, "jack")); - testOptions.setOutputFile(testOut); + testOptions.setOutputDir(outFolder); testOptions.addJayceImport(lib2Out); testOptions.setClasspath(lib1BisOut.getAbsolutePath()); TestTools.runCompilation(testOptions); diff --git a/jack/tests/com/android/jack/ConstantTest.java b/jack/tests/com/android/jack/ConstantTest.java index ffcf4447..bfb74046 100644 --- a/jack/tests/com/android/jack/ConstantTest.java +++ b/jack/tests/com/android/jack/ConstantTest.java @@ -16,6 +16,8 @@ package com.android.jack; +import com.android.jack.backend.dex.DexFileWriter; + import junit.framework.Assert; import org.jf.dexlib.CodeItem; @@ -75,10 +77,11 @@ public class ConstantTest { TestTools.runCompilation(TestTools.buildCommandLineArgs(TestTools .getJackTestsWithJackFolder("constant/test005"))); - File out = TestTools.createTempFile("uselessConstantInstructions", ".dex"); + File outFolder = TestTools.createTempDir("uselessConstantInstructions", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("constant/test005"), - TestTools.getClasspathAsString(BOOTCLASSPATH), out, false); + TestTools.getClasspathAsString(BOOTCLASSPATH), outFolder, false); DexFile dexFile = new DexFile(out); CodeItem ci = diff --git a/jack/tests/com/android/jack/DxTest.java b/jack/tests/com/android/jack/DxTest.java index 521c9f32..aaa875f6 100644 --- a/jack/tests/com/android/jack/DxTest.java +++ b/jack/tests/com/android/jack/DxTest.java @@ -16,6 +16,8 @@ package com.android.jack; +import com.android.jack.backend.dex.DexFileWriter; + import junit.framework.Assert; import org.jf.dexlib.ClassDataItem.EncodedMethod; @@ -70,10 +72,11 @@ public class DxTest { */ @Test public void testRegisterOverlapping002() throws Exception { - File out = TestTools.createTempFile("registerOverlapping", ".dex"); + File outFolder = TestTools.createTempDir("registerOverlapping", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("dx/overlapping"), - TestTools.getClasspathAsString(BOOTCLASSPATH), out, false); + TestTools.getClasspathAsString(BOOTCLASSPATH), outFolder, false); DexFile dexFile = new DexFile(out); EncodedMethod em = @@ -89,10 +92,11 @@ public class DxTest { */ @Test public void testRegisterOverlapping001() throws Exception { - File out = TestTools.createTempFile("registerOverlapping", ".dex"); + File outFolder = TestTools.createTempDir("registerOverlapping", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("dx/overlapping"), - TestTools.getClasspathAsString(BOOTCLASSPATH), out, false); + TestTools.getClasspathAsString(BOOTCLASSPATH), outFolder, false); DexFile dexFile = new DexFile(out); EncodedMethod em = diff --git a/jack/tests/com/android/jack/FibonacciThreeAddressTest.java b/jack/tests/com/android/jack/FibonacciThreeAddressTest.java index 85021198..c648c8a5 100644 --- a/jack/tests/com/android/jack/FibonacciThreeAddressTest.java +++ b/jack/tests/com/android/jack/FibonacciThreeAddressTest.java @@ -16,6 +16,7 @@ package com.android.jack; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.dx.dex.file.ClassDefItem; import com.android.jack.dx.dex.file.DexFile; import com.android.jack.ir.ast.JDefinedClassOrInterface; @@ -107,7 +108,8 @@ public class FibonacciThreeAddressTest { File outputDir = FileUtils.getWorkingDirectory(); Options fiboArgs = TestTools.buildCommandLineArgs(JAVA_FILEPATH); - File outputFile = new File(outputDir, fiboArgs.getOutputFile().getName()); + fiboArgs.setOutputDir(outputDir); + File outputFile = new File(outputDir, DexFileWriter.DEX_FILENAME); File outputDirectory = outputFile.getParentFile(); FileUtils.createIfNotExists(outputDirectory); diff --git a/jack/tests/com/android/jack/NoClasspathTest.java b/jack/tests/com/android/jack/NoClasspathTest.java index 4aa59f98..5f0d8536 100644 --- a/jack/tests/com/android/jack/NoClasspathTest.java +++ b/jack/tests/com/android/jack/NoClasspathTest.java @@ -87,8 +87,8 @@ public class NoClasspathTest { File extJack = TestTools.createTempFile("ext", ".zip"); TestTools.compileSourceToJack(new Options(), EXT_SOURCELIST, corePath, extJack, true); - File ext = TestTools.createTempFile("ext", ".dex"); - TestTools.compileJackToDex(new Options(), extJack, ext, false); + File extFolder = TestTools.createTempDir("ext", "dex"); + TestTools.compileJackToDex(new Options(), extJack, extFolder, false); } @Test @@ -117,31 +117,31 @@ public class NoClasspathTest { TestTools.compileSourceToJack( new Options(), FRAMEWORK_SOURCELIST, classpath, frameworkJackZip, true); - File frameworkDex = TestTools.createTempFile("framework", ".dex"); - TestTools.compileJackToDex(new Options(), frameworkJackZip, frameworkDex, false); + File frameworkDexFolder = TestTools.createTempDir("framework", "dex"); + TestTools.compileJackToDex(new Options(), frameworkJackZip, frameworkDexFolder, false); } @Test public void guava() throws Exception { - File guavaDex = TestTools.createTempFile("guava", ".dex"); - TestTools.compileJackToDex(new Options(), GUAVA_JAR, guavaDex, false); + File guavaDexFolder = TestTools.createTempDir("guava", "dex"); + TestTools.compileJackToDex(new Options(), GUAVA_JAR, guavaDexFolder, false); } @Test public void services() throws Exception { - File servicesDex = TestTools.createTempFile("service", ".dex"); - TestTools.compileJackToDex(new Options(), SERVICES_JAR, servicesDex, false); + File servicesDexFolder = TestTools.createTempDir("service", "dex"); + TestTools.compileJackToDex(new Options(), SERVICES_JAR, servicesDexFolder, false); } @Test public void arity() throws Exception { - File arityDex = TestTools.createTempFile("arity", ".dex"); - TestTools.compileJackToDex(new Options(), ARITY_JAR, arityDex, false); + File arityDexFolder = TestTools.createTempDir("arity", "dex"); + TestTools.compileJackToDex(new Options(), ARITY_JAR, arityDexFolder, false); } @Test public void playservices() throws Exception { - File playServiceDex = TestTools.createTempFile("playservices", ".dex"); - TestTools.compileJackToDex(new Options(), PLAY_SERVICE_JAR, playServiceDex, false); + File playServiceDexFolder = TestTools.createTempDir("playservices", "dex"); + TestTools.compileJackToDex(new Options(), PLAY_SERVICE_JAR, playServiceDexFolder, false); } } diff --git a/jack/tests/com/android/jack/NoPackageTest.java b/jack/tests/com/android/jack/NoPackageTest.java index c5eeff35..56ba35e3 100644 --- a/jack/tests/com/android/jack/NoPackageTest.java +++ b/jack/tests/com/android/jack/NoPackageTest.java @@ -43,8 +43,8 @@ public class NoPackageTest { File sourceDir = TestTools.getJackTestsWithJackFolder(testName); TestTools.compileSourceToJack( new Options(), sourceDir, classpath, tmpDir, false); - File tmpDex = TestTools.createTempFile("NoPackageTest", ".dex"); - TestTools.compileJackToDex(new Options(), tmpDir, tmpDex, false); + File tmpDexFolder = TestTools.createTempDir("NoPackageTest", "dex"); + TestTools.compileJackToDex(new Options(), tmpDir, tmpDexFolder, false); } } diff --git a/jack/tests/com/android/jack/SwitchesTest.java b/jack/tests/com/android/jack/SwitchesTest.java index ff9f9ead..15d6ee99 100644 --- a/jack/tests/com/android/jack/SwitchesTest.java +++ b/jack/tests/com/android/jack/SwitchesTest.java @@ -16,6 +16,8 @@ package com.android.jack; +import com.android.jack.backend.dex.DexFileWriter; + import junit.framework.Assert; import org.jf.dexlib.ClassDataItem.EncodedMethod; @@ -123,11 +125,12 @@ public class SwitchesTest { */ @Test public void testCompile9() throws Exception { - File out = TestTools.createTempFile("packedSwitchPayloadTest", ".dex"); + File outFolder = TestTools.createTempDir("packedSwitchPayloadTest", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("switchstatement/test009"), - TestTools.getClasspathAsString(BOOTCLASSPATH), out, false); + TestTools.getClasspathAsString(BOOTCLASSPATH), outFolder, false); DexFile dexFile = new DexFile(out); EncodedMethod em = diff --git a/jack/tests/com/android/jack/TestTools.java b/jack/tests/com/android/jack/TestTools.java index 7e062046..830c47ca 100644 --- a/jack/tests/com/android/jack/TestTools.java +++ b/jack/tests/com/android/jack/TestTools.java @@ -18,6 +18,7 @@ package com.android.jack; import com.android.dx.command.dexer.Main.Arguments; import com.android.jack.Options.VerbosityLevel; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.backend.jayce.JackFormatProduct; import com.android.jack.dx.dex.file.DexFile; import com.android.jack.ir.ast.JDefinedClassOrInterface; @@ -413,13 +414,13 @@ public class TestTools { } @Nonnull - public static Options buildCommandLineArgs(@Nonnull File fileOrSourcelist) { + public static Options buildCommandLineArgs(@Nonnull File fileOrSourcelist) throws IOException { return buildCommandLineArgs(fileOrSourcelist, null); } @Nonnull public static Options buildCommandLineArgs(@Nonnull File fileOrSourcelist, - @CheckForNull File jarjarRules) { + @CheckForNull File jarjarRules) throws IOException { Options options = buildCommandLineArgs(null /* bootclasspath */, null /* classpath */, new File[]{fileOrSourcelist}); options.jarjarRulesFile = jarjarRules; @@ -428,16 +429,16 @@ public class TestTools { } @Nonnull - public static Options buildCommandLineArgs(@Nonnull File[] filesOrSourcelists) { - return buildCommandLineArgs(null /* bootclasspath */, null /* classpath */, - filesOrSourcelists); + public static Options buildCommandLineArgs(@Nonnull File[] filesOrSourcelists) + throws IOException { + return buildCommandLineArgs(null /* bootclasspath */, null /* classpath */, filesOrSourcelists); } @Nonnull public static Options buildCommandLineArgs( @CheckForNull File[] bootclasspath, @CheckForNull File[] classpath, @Nonnull File fileOrSourceList, @CheckForNull ProguardFlags[] proguardFlagsFiles, - boolean runDxOptimizations, boolean emitDebugInfo) { + boolean runDxOptimizations, boolean emitDebugInfo) throws IOException { Options options = buildCommandLineArgs(bootclasspath, classpath, fileOrSourceList); options.proguardFlagsFiles = new ArrayList<File>(); options.emitLocalDebugInfo = emitDebugInfo; @@ -451,17 +452,18 @@ public class TestTools { options.proguardFlagsFiles.add(proguardFlagsFile); } } + options.setOutputDir(TestTools.createTempDir("test", "dex")); return options; } @Nonnull public static Options buildCommandLineArgs(@CheckForNull File[] bootclasspath, - @CheckForNull File[] classpath, @Nonnull File fileOrSourcelist) { + @CheckForNull File[] classpath, @Nonnull File fileOrSourcelist) throws IOException { return buildCommandLineArgs(bootclasspath, classpath, new File[]{fileOrSourcelist}); } @Nonnull public static Options buildCommandLineArgs(@CheckForNull File[] bootclasspath, - @CheckForNull File[] classpath, @Nonnull File[] filesOrSourcelists) { + @CheckForNull File[] classpath, @Nonnull File[] filesOrSourcelists) throws IOException { Options options = new Options(); if (bootclasspath == null) { @@ -484,6 +486,7 @@ public class TestTools { addFile(file, ecjArgs); } options.ecjArguments = ecjArgs; + options.setOutputDir(TestTools.createTempDir("test", "dex")); return options; } @@ -521,7 +524,8 @@ public class TestTools { * Build a {@code JSession} by using the monolithic plan. */ @Nonnull - public static JSession buildSession(@Nonnull Options options, @Nonnull RunnableHooks hooks) throws Exception { + public static JSession buildSession(@Nonnull Options options, @Nonnull RunnableHooks hooks) + throws Exception { if (options.proguardFlagsFiles != null && !options.proguardFlagsFiles.isEmpty()) { if (options.flags == null) { options.flags = new Flags(); @@ -611,7 +615,7 @@ public class TestTools { boolean useEcjAsRefCompiler = withDebugInfo; String classpathStr = getClasspathsAsString(bootclasspath, classpath); - File jackDex = TestTools.createTempFile("jackdex", ".dex"); + File jackDexFolder = TestTools.createTempDir("jack", "dex"); Options options = new Options(); if (runDxOptimizations) { @@ -623,7 +627,7 @@ public class TestTools { compileSourceToDex(options, fileOrSourceList, classpathStr, - jackDex, + jackDexFolder, false /* zip */, jarjarRules, proguardFlagFiles, @@ -631,7 +635,7 @@ public class TestTools { Options refOptions = buildCommandLineArgs(bootclasspath, classpath, fileOrSourceList); - TestTools.compareDexToReference(jackDex, + TestTools.compareDexToReference(jackDexFolder, refOptions, proguardFlagFiles, null, @@ -655,11 +659,11 @@ public class TestTools { } jackOptions.addProperty(Options.METHOD_FILTER.getName(), "supported-methods"); - File out = TestTools.createTempFile("checklisting", ".dex"); + File outFolder = TestTools.createTempDir("checklisting", "dex"); TestTools.compileSourceToDex(jackOptions, fileOrSourceList, TestTools.getClasspathsAsString(jackBootclasspath, jackClasspath), - out, + outFolder, false /* zip */); } @@ -674,11 +678,11 @@ public class TestTools { jackOptions.addProperty(Options.METHOD_FILTER.getName(), "supported-methods"); jackOptions.disableDxOptimizations(); - File out = TestTools.createTempFile("checklisting", ".dex"); + File outFolder = TestTools.createTempDir("checklisting", "dex"); TestTools.compileSourceToDex(jackOptions, fileOrSourceList, TestTools.getClasspathsAsString(jackBootclasspath, jackClasspath), - out, + outFolder, false /* zip */, null /* jarjarRules */, proguardFlags, @@ -802,21 +806,22 @@ public class TestTools { } /** - * Compares the given dex {@link File} to a a dex file generated with a reference compiler and - * {@code dx}. - * <p>If {@code stopsOnError} is set to true, the comparison will stop after the first error and - * the test will fail. If not, the test can succeed even if there are differences found. + * Compares the classes.dex file into {@code jackDexFolder} to a a dex file generated with a + * reference compiler and {@code dx}. + * <p> + * If {@code stopsOnError} is set to true, the comparison will stop after the first error and the + * test will fail. If not, the test can succeed even if there are differences found. * * @param compilerArgs the arguments given to a reference compiler * @param withDebugInfo generate debug infos and compare them * @param compareInstructionNumber enable comparison of number of instructions * @param instructionNumberTolerance tolerance factor for comparison of number of instructions * @throws DifferenceFoundException if a difference between the two Dex files is found and - * haltOnError is set to true + * haltOnError is set to true * @throws IOException * @throws InterruptedException */ - private static void compareDexToReference(@Nonnull File jackDex, + private static void compareDexToReference(@Nonnull File jackDexFolder, @Nonnull Options compilerArgs, @CheckForNull ProguardFlags[] proguardFlags, @CheckForNull File[] bootclasspath, @@ -843,7 +848,8 @@ public class TestTools { // Compare Jack Dex file to reference new DexComparator(withDebugInfo, strict, false /* compareDebugInfoBinary */, - compareInstructionNumber, instructionNumberTolerance).compare(refDex, jackDex); + compareInstructionNumber, instructionNumberTolerance).compare(refDex, + new File(jackDexFolder, DexFileWriter.DEX_FILENAME)); } private static void unzip(@Nonnull File jarfile, @Nonnull File outputFolder) { diff --git a/jack/tests/com/android/jack/ToolchainTest.java b/jack/tests/com/android/jack/ToolchainTest.java index 3d0fd50a..85185590 100644 --- a/jack/tests/com/android/jack/ToolchainTest.java +++ b/jack/tests/com/android/jack/ToolchainTest.java @@ -69,8 +69,8 @@ public class ToolchainTest { TestTools.shrobJackToJack( new Options(), shrobTestJackOut, classpath, shrobTestShrunkOut, flagFiles, false); - File shrobTestDexOut = TestTools.createTempFile("shrobbed", ".dex"); - TestTools.compileJackToDex(new Options(), shrobTestShrunkOut, shrobTestDexOut, false); + File shrobTestDexOutFolder = TestTools.createTempDir("shrobbed", "dex"); + TestTools.compileJackToDex(new Options(), shrobTestShrunkOut, shrobTestDexOutFolder, false); } @Test @@ -100,14 +100,14 @@ public class ToolchainTest { TestTools.compileSourceToJack( new Options(), BOUNCY_SOURCELIST, corePath.getAbsolutePath(), bouncyCastleJack, true); - File bouncyCastle = TestTools.createTempFile("bouncy", ".dex"); - TestTools.compileJackToDex(new Options(), bouncyCastleJack, bouncyCastle, false); + File bouncyCastleOutFolder = TestTools.createTempDir("bouncy", "dex"); + TestTools.compileJackToDex(new Options(), bouncyCastleJack, bouncyCastleOutFolder, false); } @Test public void core() throws Exception { - File coreDex = TestTools.createTempFile("core", ".dex"); - TestTools.compileJackToDex(new Options(), corePath, coreDex, false); + File coreOutFolder = TestTools.createTempDir("core", "dex"); + TestTools.compileJackToDex(new Options(), corePath, coreOutFolder, false); } @Test @@ -118,8 +118,8 @@ public class ToolchainTest { TestTools.getFromAndroidTree( "out/host/common/obj/JAVA_LIBRARIES/hamcrest-core-hostdex-jack_intermediates/classes.jar"), junitJack, true); - File junit = TestTools.createTempFile("junit", ".dex"); - TestTools.compileJackToDex(new Options(), junitJack, junit, false); + File junitOutFolder = TestTools.createTempDir("junit", "dex"); + TestTools.compileJackToDex(new Options(), junitJack, junitOutFolder, false); } @Test @@ -166,7 +166,7 @@ public class ToolchainTest { TestTools.jarjarJackToJack( new Options(), jarjarTestJackOut, classpath, jarjarTestRenamedOut, jarjarRules, true); - File jarjarTestDexOut = TestTools.createTempFile("jarjared", ".dex"); - TestTools.compileJackToDex(new Options(), jarjarTestRenamedOut, jarjarTestDexOut, false); + File jarjarTestDexOutFolder = TestTools.createTempDir("jarjared", "dex"); + TestTools.compileJackToDex(new Options(), jarjarTestRenamedOut, jarjarTestDexOutFolder, false); } } diff --git a/jack/tests/com/android/jack/WithPhantomTest.java b/jack/tests/com/android/jack/WithPhantomTest.java index acf2047c..6016350b 100644 --- a/jack/tests/com/android/jack/WithPhantomTest.java +++ b/jack/tests/com/android/jack/WithPhantomTest.java @@ -94,7 +94,7 @@ public class WithPhantomTest { new ProguardFlags(testFolder, "obf2.flags")), false /* non-zipped */); - File tempOut5 = TestTools.createTempFile("jack", ".dex"); + File tempOut5 = TestTools.createTempDir("jack", "dex"); TestTools.compileJackToDex(new Options(), tempJackFolder, tempOut5, false /* non-zipped */); } @@ -147,8 +147,9 @@ public class WithPhantomTest { new ProguardFlags(testFolder, "obf2.flags")), false /* non-zipped */); - File tempOut5 = TestTools.createTempFile("jack", ".dex"); - TestTools.compileJackToDex(new Options(), tempJackFolder, tempOut5, false /* non-zipped */); + File tempOutFolder = TestTools.createTempDir("jack", "dex"); + TestTools.compileJackToDex(new Options(), tempJackFolder, tempOutFolder, + false /* non-zipped */); } @Category(value = KnownBugs.class) @@ -180,8 +181,9 @@ public class WithPhantomTest { new ProguardFlags(testFolder, "obf1.flags")), false /* non-zipped */); - File tempOut2 = TestTools.createTempFile("jack", ".dex"); - TestTools.compileJackToDex(new Options(), tempJackFolder, tempOut2, false /* non-zipped */); + File tempOutFolder = TestTools.createTempDir("jack", "dex"); + TestTools.compileJackToDex(new Options(), tempJackFolder, tempOutFolder, + false /* non-zipped */); } @Test @@ -205,8 +207,9 @@ public class WithPhantomTest { new ProguardFlags(testFolder, "obf1.flags")), false /* non-zipped */); - File tempOut2 = TestTools.createTempFile("jack", ".dex"); - TestTools.compileJackToDex(new Options(), tempJackFolder, tempOut2, false /* non-zipped */); + File tempOutFolder = TestTools.createTempDir("jack", "dex"); + TestTools.compileJackToDex(new Options(), tempJackFolder, tempOutFolder, + false /* non-zipped */); } } diff --git a/jack/tests/com/android/jack/compile/androidtree/core/CoreCompilationTest.java b/jack/tests/com/android/jack/compile/androidtree/core/CoreCompilationTest.java index a96da5af..0d0147bf 100644 --- a/jack/tests/com/android/jack/compile/androidtree/core/CoreCompilationTest.java +++ b/jack/tests/com/android/jack/compile/androidtree/core/CoreCompilationTest.java @@ -21,6 +21,7 @@ import com.android.jack.JarJarRules; import com.android.jack.Options; import com.android.jack.ProguardFlags; import com.android.jack.TestTools; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.category.RedundantTests; import com.android.jack.category.SlowTests; import com.android.sched.vfs.Container; @@ -60,20 +61,22 @@ public class CoreCompilationTest { @Test @Category(SlowTests.class) public void compileCoreWithJackAndDex() throws Exception { - File coreDexFromJava = TestTools.createTempFile("coreFromJava", ".dex"); + File coreDexFolderFromJava = TestTools.createTempDir("coreFromJava", "dex"); + File coreDexFromJava = new File(coreDexFolderFromJava, DexFileWriter.DEX_FILENAME); Options options = new Options(); options.addProperty(Options.GENERATE_JACK_FILE.getName(), "true"); File outputFile = new File("/tmp/jackIncrementalOutput"); options.addProperty( - Options.DEX_OUTPUT_CONTAINER_TYPE.getName(), Container.FILE.toString()); + Options.DEX_OUTPUT_CONTAINER_TYPE.getName(), Container.DIR.toString()); options.addProperty(Options.JACK_FILE_OUTPUT_DIR.getName(), outputFile.getAbsolutePath()); options.addProperty( Options.JACK_OUTPUT_CONTAINER_TYPE.getName(), Container.DIR.toString()); - TestTools.compileSourceToDex(options, SOURCELIST, null, coreDexFromJava, false); + TestTools.compileSourceToDex(options, SOURCELIST, null, coreDexFolderFromJava, false); - File coreDexFromJack = TestTools.createTempFile("coreFromJack", ".dex"); - TestTools.compileJackToDex(new Options(), outputFile, coreDexFromJack, + File coreDexFolderFromJack = TestTools.createTempDir("coreFromJack", "dex"); + File coreDexFromJack = new File(coreDexFolderFromJack, DexFileWriter.DEX_FILENAME); + TestTools.compileJackToDex(new Options(), outputFile, coreDexFolderFromJack, false); // Compare dex files structures and number of instructions diff --git a/jack/tests/com/android/jack/errorhandling/AnnotationProcessorErrorTest.java b/jack/tests/com/android/jack/errorhandling/AnnotationProcessorErrorTest.java index 8a606d25..3911598b 100644 --- a/jack/tests/com/android/jack/errorhandling/AnnotationProcessorErrorTest.java +++ b/jack/tests/com/android/jack/errorhandling/AnnotationProcessorErrorTest.java @@ -111,6 +111,7 @@ public class AnnotationProcessorErrorTest { options.setEcjArguments(ecjArgs); options.setClasspath(TestTools.getDefaultBootclasspathString() + File.pathSeparator + te.getJackFolder()); + options.setOutputDir(TestTools.createTempDir("annot", "dex")); try { te.startErrRedirection(); @@ -186,8 +187,9 @@ public class AnnotationProcessorErrorTest { options.setEcjArguments(ecjArgs); options.setClasspath(TestTools.getDefaultBootclasspathString() + File.pathSeparator + te.getJackFolder()); + File dexOutput = new File(te.getTestingFolder(), "classes.dex"); - options.setOutputFile(dexOutput); + options.setOutputDir(te.getTestingFolder()); te.compile(options); @@ -220,6 +222,7 @@ public class AnnotationProcessorErrorTest { options.setEcjArguments(ecjArgs); options.setClasspath(TestTools.getDefaultBootclasspathString() + File.pathSeparator + te.getJackFolder()); + options.setOutputDir(TestTools.createTempDir("annot", "dex")); te.compile(options); diff --git a/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java b/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java index 24658909..a7b3d8e7 100644 --- a/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java +++ b/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java @@ -18,6 +18,7 @@ package com.android.jack.experimental.incremental; import com.android.jack.Options; import com.android.jack.TestTools; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.backend.jayce.JayceFileImporter; import com.android.jack.util.ExecuteFile; import com.android.jack.util.NamingTools; @@ -78,7 +79,8 @@ public class IncrementalTestingEnvironment extends TestTools { if (!this.sourceFolder.mkdirs()) { throw new IOException("Failed to create folder " + this.sourceFolder.getAbsolutePath()); } - dexFile = new File(testingFolder, "result.dex"); + + dexFile = new File(testingFolder, DexFileWriter.DEX_FILENAME); compilerStateDir = new File(testingFolder, "compileState"); if (!compilerStateDir.exists() && !compilerStateDir.mkdir()) { throw new IOException("Failed to create folder " + compilerStateDir.getAbsolutePath()); @@ -134,7 +136,7 @@ public class IncrementalTestingEnvironment extends TestTools { options.setIncrementalFolder(getCompilerStateFolder()); compileSourceToDex(options, sourceFolder, - TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), dexFile); + TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), testingFolder); Thread.sleep(1000); @@ -253,7 +255,7 @@ public class IncrementalTestingEnvironment extends TestTools { options.setEcjArguments(TestTools.buildEcjArgs()); addFile(sourceFolderOrSourceList, options.getEcjArguments()); options.setClasspath(classpath); - options.setOutputFile(out); + options.setOutputDir(out); JackIncremental.run(options); } } diff --git a/jack/tests/com/android/jack/java7/SwitchesTest.java b/jack/tests/com/android/jack/java7/SwitchesTest.java index 914f8fb0..6474af18 100644 --- a/jack/tests/com/android/jack/java7/SwitchesTest.java +++ b/jack/tests/com/android/jack/java7/SwitchesTest.java @@ -77,7 +77,7 @@ public class SwitchesTest { List<File> imports = new ArrayList<File>(1); imports.add(jackZipFile); options.setJayceImports(imports); - File outDexFile = TestTools.createTempFile("tmp", ".dex"); - TestTools.compileJackToDex(options, jackZipFile, outDexFile, false /* zip */); + File outDexFolder = TestTools.createTempDir("tmp", "dex"); + TestTools.compileJackToDex(options, jackZipFile, outDexFolder, false /* zip */); } } diff --git a/jack/tests/com/android/jack/shrob/ShrinkTest.java b/jack/tests/com/android/jack/shrob/ShrinkTest.java index 263f505d..e3c4f1d0 100644 --- a/jack/tests/com/android/jack/shrob/ShrinkTest.java +++ b/jack/tests/com/android/jack/shrob/ShrinkTest.java @@ -126,10 +126,10 @@ public class ShrinkTest extends AbstractTest { shrinkOption.addJayceImport(jackOut); TestTools.runCompilation(shrinkOption); - dexOut = TestTools.createTempFile("ShrinkTest", ".dex"); + dexOut = TestTools.createTempDir("ShrinkTest", "dex"); Options dxOption = new Options(); dxOption.addJayceImport(shrinkOut); - dxOption.setOutputFile(dexOut); + dxOption.setOutputDir(dexOut); TestTools.runCompilation(dxOption); } catch (Exception e) { diff --git a/jack/tests/com/android/jack/tools/merger/MergerTestTools.java b/jack/tests/com/android/jack/tools/merger/MergerTestTools.java index 0144cf0f..5677b129 100644 --- a/jack/tests/com/android/jack/tools/merger/MergerTestTools.java +++ b/jack/tests/com/android/jack/tools/merger/MergerTestTools.java @@ -20,6 +20,7 @@ import com.android.jack.DexAnnotationsComparator; import com.android.jack.DexComparator; import com.android.jack.Options; import com.android.jack.TestTools; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.backend.dex.rop.CodeItemBuilder; import com.android.jack.util.ExecuteFile; import com.android.sched.scheduler.ScheduleInstance; @@ -43,14 +44,15 @@ public class MergerTestTools { public boolean compareMonoDexWithOneDexPerType(@Nonnull File sourceFolder, boolean withDebug) throws Exception { - File monoDex = TestTools.createTempFile("mono", ".dex"); + File monoDexFolder = TestTools.createTempDir("mono", "dex"); + File monoDex = new File(monoDexFolder, DexFileWriter.DEX_FILENAME); Options options = new Options(); options.addProperty(Options.EMIT_LINE_NUMBER_DEBUG_INFO.getName(), Boolean.toString(withDebug)); options.addProperty(ScheduleInstance.DEFAULT_RUNNER.getName(), "single-threaded"); options.addProperty(CodeItemBuilder.FORCE_JUMBO.getName(), "true"); TestTools .compileSourceToDex(options, sourceFolder, TestTools.getDefaultBootclasspathString(), - monoDex, false /* zip */, null /* jarjarRules */, null /* flagFiles */, + monoDexFolder, false /* zip */, null /* jarjarRules */, null /* flagFiles */, withDebug /* withDebugInfo */); File oneDexPerTypeMerged = buildOneDexPerType(sourceFolder, withDebug); @@ -66,7 +68,8 @@ public class MergerTestTools { public boolean compareMonoDexWithOneDexPerTypeByUsingJackFiles(@Nonnull File sourceFolder, boolean withDebug) throws Exception { - File monoDex = TestTools.createTempFile("mono", ".dex"); + File monoDexFolder = TestTools.createTempDir("mono", "dex"); + File monoDex = new File(monoDexFolder, DexFileWriter.DEX_FILENAME); Options options = new Options(); options.addProperty(Options.GENERATE_JACK_FILE.getName(), "true"); @@ -79,7 +82,7 @@ public class MergerTestTools { options.addProperty(Options.EMIT_LINE_NUMBER_DEBUG_INFO.getName(), Boolean.toString(withDebug)); options.addProperty(ScheduleInstance.DEFAULT_RUNNER.getName(), "single-threaded"); options.addProperty(CodeItemBuilder.FORCE_JUMBO.getName(), "true"); - TestTools.compileSourceToDex(options, sourceFolder, null, monoDex, false); + TestTools.compileSourceToDex(options, sourceFolder, null, monoDexFolder, false); File oneDexPerTypeMerged = buildOneDexPerTypeFromJack(jackOutputFolder, true); @@ -94,31 +97,34 @@ public class MergerTestTools { public File buildOneDexPerTypeFromJack(@Nonnull File sourceFolder, boolean withDebug) throws Exception { - File multiDex = TestTools.createTempFile("multi", ".dex"); File multiDexFolder = TestTools.createTempDir("multi", "dex"); + File multiDex = new File(multiDexFolder, DexFileWriter.DEX_FILENAME); + File multiDexOnTypePerTypeFolder = TestTools.createTempDir("multiOnDexPerType", "dex"); Options options = new Options(); options.addProperty(Options.EMIT_LINE_NUMBER_DEBUG_INFO.getName(), Boolean.toString(withDebug)); options.addProperty(ScheduleInstance.DEFAULT_RUNNER.getName(), "single-threaded"); options.addProperty(Options.GENERATE_ONE_DEX_PER_TYPE.getName(), "true"); - options.addProperty(Options.DEX_FILE_FOLDER.getName(), multiDexFolder.getAbsolutePath()); + options.addProperty(Options.DEX_FILE_FOLDER.getName(), + multiDexOnTypePerTypeFolder.getAbsolutePath()); - TestTools.compileJackToDex(options, sourceFolder, multiDex, false); + TestTools.compileJackToDex(options, sourceFolder, multiDexFolder, false); return multiDex; } public File buildOneDexPerType(@Nonnull File sourceFolder, boolean withDebug) throws Exception { Options options; - File multiDex = TestTools.createTempFile("multi", ".dex"); File multiDexFolder = TestTools.createTempDir("multi", "dex"); + File multiDex = new File(multiDexFolder, DexFileWriter.DEX_FILENAME); + File multiDexOnTypePerTypeFolder = TestTools.createTempDir("multiOnDexPerType", "dex"); options = new Options(); options.addProperty(Options.EMIT_LINE_NUMBER_DEBUG_INFO.getName(), Boolean.toString(withDebug)); options.addProperty(ScheduleInstance.DEFAULT_RUNNER.getName(), "single-threaded"); options.addProperty(Options.GENERATE_ONE_DEX_PER_TYPE.getName(), "true"); - options.addProperty(Options.DEX_FILE_FOLDER.getName(), multiDexFolder.getAbsolutePath()); + options.addProperty(Options.DEX_FILE_FOLDER.getName(), multiDexOnTypePerTypeFolder.getAbsolutePath()); TestTools .compileSourceToDex(options, sourceFolder, TestTools.getDefaultBootclasspathString(), - multiDex, false /* zip */, null /* jarjarRules */, null /* flagFiles */, + multiDexFolder, false /* zip */, null /* jarjarRules */, null /* flagFiles */, withDebug /* withDebugInfo */); return multiDex; diff --git a/jack/tests/com/android/jack/transformations/cast/UselessCastRemoverTest.java b/jack/tests/com/android/jack/transformations/cast/UselessCastRemoverTest.java index 7ee5008b..8be4f387 100644 --- a/jack/tests/com/android/jack/transformations/cast/UselessCastRemoverTest.java +++ b/jack/tests/com/android/jack/transformations/cast/UselessCastRemoverTest.java @@ -19,6 +19,7 @@ package com.android.jack.transformations.cast; import com.android.jack.Options; import com.android.jack.TestTools; +import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.ir.InternalCompilerException; import com.android.jack.ir.ast.JCastOperation; import com.android.jack.ir.ast.JMethod; @@ -149,10 +150,12 @@ public class UselessCastRemoverTest { @Test public void test001() throws Exception { - File out = TestTools.createTempFile("uselessCastInstructions", ".dex"); + File outFolder = TestTools.createTempDir("uselessCastInstructions", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); + TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("cast/test001"), - TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), out, false); + TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), outFolder, false); DexFile dexFile = new DexFile(out); CodeItem ci = @@ -166,10 +169,11 @@ public class UselessCastRemoverTest { @Test public void test002() throws Exception { - File out = TestTools.createTempFile("uselessCastInstructions", ".dex"); + File outFolder = TestTools.createTempDir("uselessCastInstructions", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("cast/test002"), - TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), out, false); + TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), outFolder, false); DexFile dexFile = new DexFile(out); CodeItem ci = @@ -183,10 +187,11 @@ public class UselessCastRemoverTest { @Test public void test003() throws Exception { - File out = TestTools.createTempFile("uselessCastInstructions", ".dex"); + File outFolder = TestTools.createTempDir("uselessCastInstructions", "dex"); + File out = new File(outFolder, DexFileWriter.DEX_FILENAME); TestTools.compileSourceToDex(new Options(), TestTools.getJackTestsWithJackFolder("cast/test003"), - TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), out, false); + TestTools.getClasspathAsString(TestTools.getDefaultBootclasspath()), outFolder, false); DexFile dexFile = new DexFile(out); CodeItem ci = diff --git a/sched/src/com/android/sched/util/codec/OutputVDirCodec.java b/sched/src/com/android/sched/util/codec/OutputVDirCodec.java index 2fe93f2c..f41be159 100644 --- a/sched/src/com/android/sched/util/codec/OutputVDirCodec.java +++ b/sched/src/com/android/sched/util/codec/OutputVDirCodec.java @@ -81,8 +81,6 @@ public class OutputVDirCodec extends FileOrDirCodec case ZIP: containerName = "a zip archive"; break; - case FILE: - throw new AssertionError(); default: throw new AssertionError(); } diff --git a/sched/src/com/android/sched/vfs/Container.java b/sched/src/com/android/sched/vfs/Container.java index 5a9ab334..894aead0 100644 --- a/sched/src/com/android/sched/vfs/Container.java +++ b/sched/src/com/android/sched/vfs/Container.java @@ -20,7 +20,6 @@ package com.android.sched.vfs; * Container types. */ public enum Container { - FILE, DIR, ZIP }
\ No newline at end of file |