diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2014-11-14 09:38:56 +0100 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2014-11-17 17:27:54 +0100 |
commit | 2f5cdf7f3f2fcf407c6c46c2d55498728da0453b (patch) | |
tree | b1af6d4cfc2d37b3e073abcce0af44dfc26e12c8 /jack/tests | |
parent | 1cf6a3899617f508ed1b476d2eeb8464fa86e158 (diff) | |
download | toolchain_jack-2f5cdf7f3f2fcf407c6c46c2d55498728da0453b.zip toolchain_jack-2f5cdf7f3f2fcf407c6c46c2d55498728da0453b.tar.gz toolchain_jack-2f5cdf7f3f2fcf407c6c46c2d55498728da0453b.tar.bz2 |
Jack generates lib version 1.1
- All jayce files are into a folder jayce
- All intermediates dex files are into a folder dex
- All .jpp files are into a folder jpp
- All resource files are into a folder rsc
- Disable usage of dex from library when jarjar and obfuscation is enabled
Change-Id: Id0f92b4519953a0bc41c76a55700a2c6f6ce5ec3
Diffstat (limited to 'jack/tests')
8 files changed, 210 insertions, 197 deletions
diff --git a/jack/tests/com/android/jack/ClasspathTest.java b/jack/tests/com/android/jack/ClasspathTest.java index 324bff7..3870062 100644 --- a/jack/tests/com/android/jack/ClasspathTest.java +++ b/jack/tests/com/android/jack/ClasspathTest.java @@ -16,6 +16,8 @@ package com.android.jack; +import com.android.jack.library.FileType; + import junit.framework.Assert; import org.junit.BeforeClass; @@ -112,10 +114,10 @@ public class ClasspathTest { } { - // delete unused inner in classpath and check we can still compile with it - boolean deleted = - new File(libOut, - "com/android/jack/classpath/test003/lib/HasInnersClasses$InnerToDelete.jayce") + // delete unused inner in classpath and check we can still compile with it + boolean deleted = + new File(libOut, FileType.JAYCE.getPrefix() + + "/com/android/jack/classpath/test003/lib/HasInnersClasses$InnerToDelete.jayce") .delete(); Assert.assertTrue(deleted); File testOut = TestTools.createTempDir("ClasspathTest", "test"); diff --git a/jack/tests/com/android/jack/FileConflictTest.java b/jack/tests/com/android/jack/FileConflictTest.java index 1eb8d40..91f99fa 100644 --- a/jack/tests/com/android/jack/FileConflictTest.java +++ b/jack/tests/com/android/jack/FileConflictTest.java @@ -20,12 +20,14 @@ import com.android.jack.backend.jayce.ImportConflictException; import com.android.jack.backend.jayce.JayceFileImporter; import com.android.jack.backend.jayce.ResourceImportConflictException; import com.android.jack.category.KnownBugs; +import com.android.jack.library.FileType; import com.android.jack.library.JackLibrary; import com.android.sched.util.stream.ByteStreamSucker; import junit.framework.Assert; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -55,15 +57,29 @@ public class FileConflictTest { @Nonnull private static final String COMMON_PATH_002 = "com/android/jack/fileconflict/test002/jack/"; @Nonnull - private static final String JACK_FILE_PATH_1 = COMMON_PATH_001 + "MyClass.jayce"; + private static final String JACK_FILE_PATH_1 = + FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass.jayce"; @Nonnull - private static final String JACK_FILE_PATH_2 = COMMON_PATH_001 + "MyClass2.jayce"; + private static final String JACK_FILE_PATH_2 = + FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass2.jayce"; @Nonnull - private static final String JACK_FILE_PATH_3 = COMMON_PATH_001 + "MyClass3.jayce"; + private static final String JACK_FILE_PATH_3 = + FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass3.jayce"; @Nonnull - private static final String JACK_FILE_PATH_002_1 = COMMON_PATH_002 + "IrrelevantForTest.jayce"; + private static final String DEX_FILE_PATH_1 = + FileType.DEX.getPrefix() + "/" + COMMON_PATH_001 + "MyClass.dex"; @Nonnull - private static final String JACK_FILE_PATH_002_2 = COMMON_PATH_002 + "IrrelevantForTest2.jayce"; + private static final String DEX_FILE_PATH_2 = + FileType.DEX.getPrefix() + "/" + COMMON_PATH_001 + "MyClass2.dex"; + @Nonnull + private static final String DEX_FILE_PATH_3 = + FileType.DEX.getPrefix() + "/" + COMMON_PATH_001 + "MyClass3.dex"; + @Nonnull + private static final String JACK_FILE_PATH_002_1 = + FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_002 + "IrrelevantForTest.jayce"; + @Nonnull + private static final String JACK_FILE_PATH_002_2 = + FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_002 + "IrrelevantForTest2.jayce"; @Nonnull private static final String RESOURCE1_SHORTPATH = "Resource1"; @Nonnull @@ -71,11 +87,14 @@ public class FileConflictTest { @Nonnull private static final String RESOURCE3_SHORTPATH = "Resource3"; @Nonnull - private static final String RESOURCE1_LONGPATH = COMMON_PATH_002 + RESOURCE1_SHORTPATH; + private static final String RESOURCE1_LONGPATH = FileType.RSC.getPrefix() + "/" + + RESOURCE1_SHORTPATH; @Nonnull - private static final String RESOURCE2_LONGPATH = COMMON_PATH_002 + RESOURCE2_SHORTPATH; + private static final String RESOURCE2_LONGPATH = FileType.RSC.getPrefix() + "/" + + RESOURCE2_SHORTPATH; @Nonnull - private static final String RESOURCE3_LONGPATH = COMMON_PATH_002 + RESOURCE3_SHORTPATH; + private static final String RESOURCE3_LONGPATH = FileType.RSC.getPrefix() + "/" + + RESOURCE3_SHORTPATH; @Nonnull private static final File TEST001_DIR = @@ -242,9 +261,15 @@ public class FileConflictTest { TestTools.getDefaultBootclasspathString(), tempJackFolder, false /* non-zipped */); // get paths for Jack files - String jackFilePath = "com/android/jack/fileconflict/test003/jack/MyClass.jayce"; + String jackFilePath = + FileType.JAYCE.getPrefix() + "/com/android/jack/fileconflict/test003/jack/MyClass.jayce"; File myClass1 = new File(tempJackFolder, jackFilePath); + // get paths for Dex files + String dexFilePath = + FileType.DEX.getPrefix() + "/com/android/jack/fileconflict/test003/jack/MyClass.dex"; + File myClass1Dex = new File(tempJackFolder, dexFilePath); + String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); File libProperties = new File(tempJackFolder, libPropName); @@ -252,9 +277,11 @@ public class FileConflictTest { File jackImport1 = TestTools.createTempDir("jackimport1", "dir"); copyFileToDir(libProperties, libPropName, jackImport1); copyFileToDir(myClass1, jackFilePath, jackImport1); + copyFileToDir(myClass1Dex, dexFilePath, jackImport1); // copy Jack file to output dir copyFileToDir(myClass1, jackFilePath, jackOutput); + copyFileToDir(myClass1Dex, dexFilePath, jackOutput); // run Jack on Jack dir ProguardFlags flags = new ProguardFlags(new File(testSrcDir, "proguard.flags")); @@ -272,6 +299,7 @@ public class FileConflictTest { * @throws Exception */ @Test + @Ignore("Now jack generate library, a previous file can not exists") public void test003b() throws Exception { File jackOutput = TestTools.createTempDir("jackoutput", "dir"); @@ -282,7 +310,8 @@ public class FileConflictTest { TestTools.getDefaultBootclasspathString(), tempJackFolder, false /* non-zipped */); // get paths for Jack files - String jackFilePath = "com/android/jack/fileconflict/test003/jack/MyClass.jayce"; + String jackFilePath = + FileType.JAYCE.getPrefix() + "/com/android/jack/fileconflict/test003/jack/MyClass.jayce"; File myClass1 = new File(tempJackFolder, jackFilePath); String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); @@ -329,7 +358,8 @@ public class FileConflictTest { TestTools.getDefaultBootclasspathString(), tempJackFolder, false /* non-zipped */); // get paths for Jack files - String jackFilePath = "com/android/jack/fileconflict/test004/jack/MyClass.jayce"; + String jackFilePath = + FileType.JAYCE.getPrefix() + "/com/android/jack/fileconflict/test004/jack/MyClass.jayce"; File myClass1 = new File(tempJackFolder, jackFilePath); String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); @@ -374,6 +404,10 @@ public class FileConflictTest { File myClass2 = new File(tempJackFolder, JACK_FILE_PATH_2); File myClass3 = new File(tempJackFolder, JACK_FILE_PATH_3); + // get paths for dex files + File myClass1Dex = new File(tempJackFolder, DEX_FILE_PATH_1); + File myClass2Dex = new File(tempJackFolder, DEX_FILE_PATH_2); + File myClass3Dex = new File(tempJackFolder, DEX_FILE_PATH_3); String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); File libProperties = new File(tempJackFolder, libPropName); @@ -383,10 +417,14 @@ public class FileConflictTest { File jackImport2 = TestTools.createTempDir("jackimport2", "dir"); copyFileToDir(libProperties, libPropName, jackImport1); copyFileToDir(myClass1, JACK_FILE_PATH_1, jackImport1); + copyFileToDir(myClass1Dex, DEX_FILE_PATH_1, jackImport1); copyFileToDir(myClass2, JACK_FILE_PATH_2, jackImport1); + copyFileToDir(myClass2Dex, DEX_FILE_PATH_2, jackImport1); copyFileToDir(libProperties, libPropName, jackImport2); copyFileToDir(myClass1, JACK_FILE_PATH_1, jackImport2); + copyFileToDir(myClass1Dex, DEX_FILE_PATH_1, jackImport2); copyFileToDir(myClass3, JACK_FILE_PATH_3, jackImport2); + copyFileToDir(myClass3Dex, DEX_FILE_PATH_3, jackImport2); // run Jack on Jack dirs ProguardFlags flags = new ProguardFlags(new File(TEST001_DIR, "proguard.flags")); @@ -406,37 +444,23 @@ public class FileConflictTest { private void runTest002(@Nonnull File jackOutput, boolean zip, @CheckForNull String collisionPolicy) throws Exception { // compile source files to a Jack dir - File tempJackFolder = TestTools.createTempDir("jack", "dir"); - TestTools.compileSourceToJack(new Options(), TEST002_DIR, - TestTools.getDefaultBootclasspathString(), tempJackFolder, false /* non-zipped */); - - // get paths for Jack files - File myClass1 = new File(tempJackFolder, JACK_FILE_PATH_002_1); - File myClass2 = new File(tempJackFolder, JACK_FILE_PATH_002_2); - - // get paths for resources - File resource1 = new File(TEST002_DIR, RESOURCE1_SHORTPATH); - File resource2 = new File(TEST002_DIR, RESOURCE2_SHORTPATH); - File resource3 = new File(TEST002_DIR, RESOURCE3_SHORTPATH); - - String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); - File libProperties = new File(tempJackFolder, libPropName); - - // create Jack dirs to import - File jackImport1 = TestTools.createTempDir("jackimport1", "dir"); - File jackImport2 = TestTools.createTempDir("jackimport2", "dir"); - copyFileToDir(libProperties, libPropName, jackImport1); - copyFileToDir(myClass1, JACK_FILE_PATH_002_1, jackImport1); - copyFileToDir(resource1, RESOURCE1_LONGPATH, jackImport1); - copyFileToDir(resource2, RESOURCE2_LONGPATH, jackImport1); - copyFileToDir(libProperties, libPropName, jackImport2); - copyFileToDir(myClass2, JACK_FILE_PATH_002_2, jackImport2); - copyFileToDir(resource2, RESOURCE1_LONGPATH, jackImport2); - copyFileToDir(resource3, RESOURCE3_LONGPATH, jackImport2); + File jackImport1 = TestTools.createTempDir("jack", "dir"); + Options options = new Options(); + File lib1 = new File(TEST002_DIR, "lib1"); + options.addResource(new File(lib1, "rsc")); + TestTools.compileSourceToJack(options, lib1, TestTools.getDefaultBootclasspathString(), + jackImport1, false /* non-zipped */); + + File jackImport2 = TestTools.createTempDir("jack", "dir"); + options = new Options(); + File lib2 = new File(TEST002_DIR, "lib2"); + options.addResource(new File(lib2, "rsc")); + TestTools.compileSourceToJack(options, lib2, TestTools.getDefaultBootclasspathString(), + jackImport2, false /* non-zipped */); // run Jack on Jack dirs ProguardFlags flags = new ProguardFlags(new File(TEST002_DIR, "proguard.flags")); - Options options = new Options(); + options = new Options(); List<File> jayceImports = new ArrayList<File>(2); jayceImports.add(jackImport1); jayceImports.add(jackImport2); diff --git a/jack/tests/com/android/jack/ResourceTest.java b/jack/tests/com/android/jack/ResourceTest.java index 1543542..b42ae80 100644 --- a/jack/tests/com/android/jack/ResourceTest.java +++ b/jack/tests/com/android/jack/ResourceTest.java @@ -17,7 +17,7 @@ package com.android.jack; import com.android.jack.category.KnownBugs; -import com.android.jack.library.JackLibrary; +import com.android.jack.library.FileType; import com.android.sched.util.stream.ByteStreamSucker; import junit.framework.Assert; @@ -37,7 +37,6 @@ import java.io.StringReader; import java.util.Collections; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; import javax.annotation.Nonnull; @@ -49,7 +48,11 @@ public class ResourceTest { @Nonnull private static final String COMMON_PATH = "com/android/jack/resource/test001/jack/"; @Nonnull - private static final String JACK_FILE_PATH = COMMON_PATH + "IrrelevantForTest.jayce"; + private static final String JACK_FILE_PATH = FileType.JAYCE.getPrefix() + "/" + COMMON_PATH + + "IrrelevantForTest.jayce"; + @Nonnull + private static final String DEX_FILE_PATH = FileType.DEX.getPrefix() + "/" + COMMON_PATH + + "IrrelevantForTest.dex"; @Nonnull private static final String RESOURCE1_SHORTPATH = "Resource1"; @Nonnull @@ -59,15 +62,6 @@ public class ResourceTest { @Nonnull private static final String RESOURCE4_SHORTPATH = "pack/Resource4"; @Nonnull - private static final String RESOURCE1_LONGPATH = COMMON_PATH + RESOURCE1_SHORTPATH; - @Nonnull - private static final String RESOURCE2_LONGPATH = COMMON_PATH + RESOURCE2_SHORTPATH; - @Nonnull - private static final String RESOURCE3_LONGPATH = COMMON_PATH + RESOURCE3_SHORTPATH; - @Nonnull - private static final String RESOURCE4_LONGPATH = COMMON_PATH + RESOURCE4_SHORTPATH; - - @Nonnull private static final File FILE = TestTools.getJackTestsWithJackFolder("resource/test001"); @@ -86,10 +80,10 @@ public class ResourceTest { TestTools.compileJackToDex(new Options(), jackAr, dexDir, false /* zipped */); // check that resources are contained in dex dir - checkResourceContent(dexDir, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(dexDir, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(dexDir, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(dexDir, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromDir(dexDir, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ false); } @Test @@ -103,35 +97,31 @@ public class ResourceTest { // check that resources are contained in dex archive ZipFile zipFile = new ZipFile(dexAr); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(zipFile, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromZip(zipFile, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ false); } @Test public void testJackDirToDexArchive() throws Exception { // compile source file to a Jack dir File jackFolder = TestTools.createTempDir("tempjack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), jackFolder, false /* non-zipped */); - // add resources to Jack dir - copyFileToDir(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, jackFolder); - // compile Jack dir to dex archive File dexAr = TestTools.createTempFile("resourcetestdex", ".zip"); TestTools.compileJackToDex(new Options(), jackFolder, dexAr, true /* zipped */); // check that resources are contained in dex archive ZipFile zipFile = new ZipFile(dexAr); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(zipFile, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromZip(zipFile, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ false); + checkResourceContentFromZip(zipFile, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ false); } @Test @@ -151,25 +141,21 @@ public class ResourceTest { // check that resources are contained in dex archive ZipFile zipFile = new ZipFile(shrobbedJackAr); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(zipFile, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromZip(zipFile, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ true); } @Test public void testJackDirToJackArchive() throws Exception { // compile source file to a Jack dir File jackFolder = TestTools.createTempDir("tempjack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), jackFolder, false /* non-zipped */); - // add resources to Jack dir - copyFileToDir(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, jackFolder); - // run shrobbing from Jack dir to Jack archive File shrobbedJackAr = TestTools.createTempFile("shrobbedJackAr", ".zip"); ProguardFlags flags = new ProguardFlags(new File(FILE, "proguard.flags")); @@ -182,10 +168,10 @@ public class ResourceTest { // check that resources are contained in Jack archive ZipFile zipFile = new ZipFile(shrobbedJackAr); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(zipFile, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromZip(zipFile, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ true); + checkResourceContentFromZip(zipFile, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ true); } @Test @@ -204,25 +190,21 @@ public class ResourceTest { false /* non-zipped */); // check that resources are contained in Jack dir - checkResourceContent(shrobbedJackDir, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(shrobbedJackDir, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(shrobbedJackDir, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(shrobbedJackDir, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ true); } @Test public void testJackDirToJackDir() throws Exception { /// compile source file to a Jack dir File jackFolder = TestTools.createTempDir("tempjack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), jackFolder, false /* non-zipped */); - // add resources to Jack dir - copyFileToDir(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, jackFolder); - // run shrobbing from Jack dir to Jack dir File shrobbedJackDir = TestTools.createTempDir("shrobbedJack", "dir"); ProguardFlags flags = new ProguardFlags(new File(FILE, "proguard.flags")); @@ -234,34 +216,30 @@ public class ResourceTest { false /* non-zipped */); // check that resources are contained in Jack dir - checkResourceContent(shrobbedJackDir, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(shrobbedJackDir, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(shrobbedJackDir, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(shrobbedJackDir, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ true); + checkResourceContentFromDir(shrobbedJackDir, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ true); } @Test public void testJackDirToDexDir() throws Exception { // compile source file to a Jack dir File jackFolder = TestTools.createTempDir("tempjack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), jackFolder, false /* non-zipped */); - // add resources to Jack dir - copyFileToDir(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, jackFolder); - // compile Jack dir to a dex dir File dexDir = TestTools.createTempDir("resourcetestdex", "dir"); TestTools.compileJackToDex(new Options(), jackFolder, dexDir, false /* zipped */); // check that resources are contained in dex dir - checkResourceContent(dexDir, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(dexDir, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(dexDir, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(dexDir, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromDir(dexDir, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ false); } @Test @@ -269,24 +247,20 @@ public class ResourceTest { public void testJackToDexInSameDir() throws Exception { // compile source file to a Jack dir File jackFolder = TestTools.createTempDir("tempjack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), jackFolder, false /* non-zipped */); - // add resources to Jack dir - copyFileToDir(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, jackFolder); - copyFileToDir(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, jackFolder); - // compile Jack dir to same dir File dexDir = jackFolder; TestTools.compileJackToDex(new Options(), jackFolder, dexDir, false /* zipped */); // check that resources are contained in dex dir - checkResourceContent(dexDir, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(dexDir, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(dexDir, RESOURCE3_LONGPATH, "Res3"); - checkResourceContent(dexDir, RESOURCE4_LONGPATH, "Res4"); + checkResourceContentFromDir(dexDir, RESOURCE1_SHORTPATH, "Res1", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE2_SHORTPATH, "Res2", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE3_SHORTPATH, "Res3", /*isLib*/ false); + checkResourceContentFromDir(dexDir, RESOURCE4_SHORTPATH, "Res4", /*isLib*/ false); } @Test @@ -330,37 +304,19 @@ public class ResourceTest { @Nonnull private File createJackArchiveWithResources() throws Exception { // compile source file to a Jack file - File tempJackFolder = TestTools.createTempDir("jack", "dir"); - TestTools.compileSourceToJack(new Options(), FILE, TestTools.getDefaultBootclasspathString(), - tempJackFolder, false /* non-zipped */); - - // create Jack archive with resources - File singleJackFile = new File(tempJackFolder, JACK_FILE_PATH); + //File tempJackFolder = TestTools.createTempDir("jack", "dir"); File jackAr = TestTools.createTempFile("resourcetestjack", ".zip"); - ZipOutputStream zos = null; - try { - zos = new ZipOutputStream(new FileOutputStream(jackAr)); - - String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); - File libProperties = new File(tempJackFolder, libPropName); + Options options = new Options(); + options.addResource(new File(FILE, "rsc")); + TestTools.compileSourceToJack(options, FILE, TestTools.getDefaultBootclasspathString(), + jackAr, true /* non-zipped */); - copyFileToZip(libProperties, libPropName, zos); - copyFileToZip(singleJackFile, JACK_FILE_PATH, zos); - copyFileToZip(new File(FILE, RESOURCE1_SHORTPATH), RESOURCE1_LONGPATH, zos); - copyFileToZip(new File(FILE, RESOURCE2_SHORTPATH), RESOURCE2_LONGPATH, zos); - copyFileToZip(new File(FILE, RESOURCE3_SHORTPATH), RESOURCE3_LONGPATH, zos); - copyFileToZip(new File(FILE, RESOURCE4_SHORTPATH), RESOURCE4_LONGPATH, zos); - } finally { - if (zos != null) { - zos.close(); - } - } return jackAr; } - private void checkResourceContent(@Nonnull ZipFile zipFile, @Nonnull String entryName, - @Nonnull String expectedContent) throws IOException { - ZipEntry entry = zipFile.getEntry(entryName); + private void checkResourceContentFromZip(@Nonnull ZipFile zipFile, @Nonnull String entryName, + @Nonnull String expectedContent, boolean isLib) throws IOException { + ZipEntry entry = zipFile.getEntry((isLib ? FileType.RSC.getPrefix() + '/' : "") + entryName); Assert.assertNotNull(entry); BufferedReader candidateReader = null; BufferedReader referenceReader = null; @@ -379,10 +335,10 @@ public class ResourceTest { } } - private void checkResourceContent(@Nonnull File dir, @Nonnull String path, - @Nonnull String expectedContent) throws IOException { + private void checkResourceContentFromDir(@Nonnull File dir, @Nonnull String path, + @Nonnull String expectedContent, boolean isLib) throws IOException { assert dir.isDirectory(); - File file = new File(dir, path); + File file = new File(isLib ? new File(dir, FileType.RSC.getPrefix()) : dir, path); Assert.assertTrue(file.exists()); BufferedReader candidateReader = null; BufferedReader referenceReader = null; @@ -460,21 +416,4 @@ public class ResourceTest { } } } - - private void copyFileToZip(@Nonnull File fileToCopy, @Nonnull String entryName, - @Nonnull ZipOutputStream zos) - throws IOException { - FileInputStream fis = null; - try { - fis = new FileInputStream(fileToCopy); - ZipEntry sourceEntry = new ZipEntry(entryName); - zos.putNextEntry(sourceEntry); - ByteStreamSucker sucker = new ByteStreamSucker(fis, zos); - sucker.suck(); - } finally { - if (fis != null) { - fis.close(); - } - } - } } diff --git a/jack/tests/com/android/jack/WithPhantomTest.java b/jack/tests/com/android/jack/WithPhantomTest.java index 3affdad..1c19656 100644 --- a/jack/tests/com/android/jack/WithPhantomTest.java +++ b/jack/tests/com/android/jack/WithPhantomTest.java @@ -17,6 +17,7 @@ package com.android.jack; import com.android.jack.category.KnownBugs; +import com.android.jack.library.FileType; import com.android.sched.util.collect.Lists; import junit.framework.Assert; @@ -52,8 +53,9 @@ public class WithPhantomTest { TestTools.compileSourceToJack(new Options(), TestTools.getJackTestsWithJackFolder(TEST001), BOOTCLASSPATH, tempJackFolder, false /* non-zipped */); - boolean deleted = new File(tempJackFolder, - fixPath("com/android/jack/withphantom/test001/jack/A.jayce")).delete(); + boolean deleted = + new File(tempJackFolder, FileType.JAYCE.getPrefix() + File.separatorChar + + fixPath("com/android/jack/withphantom/test001/jack/A.jayce")).delete(); Assert.assertTrue(deleted); File testFolder = TestTools.getJackTestFolder(TEST001); @@ -105,8 +107,13 @@ public class WithPhantomTest { TestTools.compileSourceToJack(new Options(), TestTools.getJackTestsWithJackFolder(TEST001), BOOTCLASSPATH, tempJackFolder, false /* non-zipped */); - boolean deleted = new File(tempJackFolder, - fixPath("com/android/jack/withphantom/test001/jack/A$Inner1.jayce")).delete(); + boolean deleted = + new File(tempJackFolder, fixPath(FileType.JAYCE.getPrefix() + File.separatorChar + + "com/android/jack/withphantom/test001/jack/A$Inner1.jayce")).delete(); + Assert.assertTrue(deleted); + deleted = + new File(tempJackFolder, fixPath(FileType.DEX.getPrefix() + File.separatorChar + + "com/android/jack/withphantom/test001/jack/A$Inner1.dex")).delete(); Assert.assertTrue(deleted); File testFolder = TestTools.getJackTestFolder(TEST001); @@ -159,8 +166,9 @@ public class WithPhantomTest { TestTools.compileSourceToJack(new Options(), TestTools.getJackTestsWithJackFolder(TEST002), BOOTCLASSPATH, tempJackFolder, false /* non-zipped */); - File[] inners = new File(tempJackFolder, - fixPath("com/android/jack/withphantom/test002/jack/")).listFiles(new FilenameFilter() { + File[] inners = + new File(tempJackFolder, fixPath(FileType.JAYCE.getPrefix() + File.separatorChar + + "com/android/jack/withphantom/test002/jack/")).listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.startsWith("A$"); @@ -192,8 +200,9 @@ public class WithPhantomTest { TestTools.compileSourceToJack(new Options(), TestTools.getJackTestsWithJackFolder(TEST002), BOOTCLASSPATH, tempJackFolder, false /* non-zipped */); - boolean deleted = new File(tempJackFolder, - fixPath("com/android/jack/withphantom/test002/jack/A.jayce")).delete(); + boolean deleted = + new File(tempJackFolder, fixPath(FileType.JAYCE.getPrefix() + File.separatorChar + + "com/android/jack/withphantom/test002/jack/A.jayce")).delete(); Assert.assertTrue(deleted); File testFolder = TestTools.getJackTestFolder(TEST002); diff --git a/jack/tests/com/android/jack/errorhandling/JackFormatErrorTest.java b/jack/tests/com/android/jack/errorhandling/JackFormatErrorTest.java index 6db2b08..ff39378 100644 --- a/jack/tests/com/android/jack/errorhandling/JackFormatErrorTest.java +++ b/jack/tests/com/android/jack/errorhandling/JackFormatErrorTest.java @@ -21,6 +21,7 @@ import com.android.jack.Main; import com.android.jack.Options; import com.android.jack.TestTools; import com.android.jack.jayce.JayceProperties; +import com.android.jack.library.FileType; import com.android.jack.library.JackLibrary; import com.android.jack.library.JackLibraryFactory; import com.android.jack.library.LibraryFormatException; @@ -53,13 +54,14 @@ public class JackFormatErrorTest { public void testJackFormatError001() throws Exception { TestingEnvironment ite = new TestingEnvironment(); - ite.addFile(ite.getJackFolder(), "jack.incremental", "A.jayce", "jayce(" - + JackLibraryFactory.DEFAULT_MAJOR_VERSION + "." + Version.MINOR + ")Corrupted"); + ite.addFile(new File(ite.getJackFolder(), FileType.JAYCE.getPrefix()), "jack.incremental", + "A.jayce", "jayce(" + JackLibraryFactory.DEFAULT_MAJOR_VERSION + "." + Version.MINOR + + ")Corrupted"); ite.addFile(ite.getJackFolder(), "", "jack.properties", JackLibrary.KEY_LIB_EMITTER + "=unknown\n" + JackLibrary.KEY_LIB_EMITTER_VERSION + "=0\n" - + JackLibrary.KEY_LIB_MAJOR_VERSION + "=1\n" - + JackLibrary.KEY_LIB_MINOR_VERSION + "=0\n" + + JackLibrary.KEY_LIB_MAJOR_VERSION + "=" + Version.MAJOR + "\n" + + JackLibrary.KEY_LIB_MINOR_VERSION + "=" + Version.MINOR + "\n" + JayceProperties.KEY_JAYCE + "=true\n" + JayceProperties.KEY_JAYCE_MAJOR_VERSION + "=2\n" + JayceProperties.KEY_JAYCE_MINOR_VERSION + "=14\n"); @@ -97,13 +99,13 @@ public class JackFormatErrorTest { public void testJackFormatError002() throws Exception { TestingEnvironment ite = new TestingEnvironment(); - ite.addFile(ite.getJackFolder(), "jack.incremental", "A.jayce", - "jayce()"); + ite.addFile(new File(ite.getJackFolder(), FileType.JAYCE.getPrefix()), "jack.incremental", + "A.jayce", "jayce()"); ite.addFile(ite.getJackFolder(), "", "jack.properties", JackLibrary.KEY_LIB_EMITTER + "=unknown\n" + JackLibrary.KEY_LIB_EMITTER_VERSION + "=0\n" - + JackLibrary.KEY_LIB_MAJOR_VERSION + "=1\n" - + JackLibrary.KEY_LIB_MINOR_VERSION + "=0\n" + + JackLibrary.KEY_LIB_MAJOR_VERSION + "=" + Version.MAJOR + "\n" + + JackLibrary.KEY_LIB_MINOR_VERSION + "=" + Version.MINOR + "\n" + JayceProperties.KEY_JAYCE + "=true\n" + JayceProperties.KEY_JAYCE_MAJOR_VERSION + "=2\n" + JayceProperties.KEY_JAYCE_MINOR_VERSION + "=14\n"); @@ -140,13 +142,13 @@ public class JackFormatErrorTest { public void testJackFormatError003() throws Exception { TestingEnvironment ite = new TestingEnvironment(); - ite.addFile(ite.getJackFolder(), "jack.incremental", "A.jayce", - "jayce()"); + ite.addFile(new File(ite.getJackFolder(), FileType.JAYCE.getPrefix()), "jack.incremental", + "A.jayce", "jayce()"); ite.addFile(ite.getJackFolder(), "", "jack.properties", JackLibrary.KEY_LIB_EMITTER + "=unknown\n" + JackLibrary.KEY_LIB_EMITTER_VERSION + "=0\n" - + JackLibrary.KEY_LIB_MAJOR_VERSION + "=1\n" - + JackLibrary.KEY_LIB_MINOR_VERSION + "=0\n" + + JackLibrary.KEY_LIB_MAJOR_VERSION + "=" + Version.MAJOR + "\n" + + JackLibrary.KEY_LIB_MINOR_VERSION + "=" + Version.MINOR + "\n" + JayceProperties.KEY_JAYCE + "=true\n" + JayceProperties.KEY_JAYCE_MAJOR_VERSION + "=0\n" + JayceProperties.KEY_JAYCE_MINOR_VERSION + "=0\n"); diff --git a/jack/tests/com/android/jack/experimental/incremental/DependenciesTest015.java b/jack/tests/com/android/jack/experimental/incremental/DependenciesTest015.java index b697d1e..acd3cb3 100644 --- a/jack/tests/com/android/jack/experimental/incremental/DependenciesTest015.java +++ b/jack/tests/com/android/jack/experimental/incremental/DependenciesTest015.java @@ -110,7 +110,7 @@ public class DependenciesTest015 { iteProg.incrementalBuildFromFolder(null /*classpath*/, Arrays.asList(iteLib.getJackFolder())); iteProg.snapshotJackFilesModificationDate(); - Assert.assertEquals(1, iteProg.getJackFiles().size()); + Assert.assertEquals(2, iteProg.getJackFiles().size()); DexBuffer db = new DexBuffer(new FileInputStream(iteProg.getDexFile())); Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;")); @@ -126,7 +126,7 @@ public class DependenciesTest015 { iteProg.incrementalBuildFromFolder(null, Arrays.asList(iteLib.getJackFolder())); iteProg.snapshotJackFilesModificationDate(); - Assert.assertEquals(1, iteProg.getJackFiles().size()); + Assert.assertEquals(3, iteProg.getJackFiles().size()); db = new DexBuffer(new FileInputStream(iteProg.getDexFile())); Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;")); diff --git a/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java b/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java index 608dde2..90c16b9 100644 --- a/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java +++ b/jack/tests/com/android/jack/experimental/incremental/IncrementalTestingEnvironment.java @@ -20,6 +20,7 @@ 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.library.FileType; import com.android.jack.util.ExecuteFile; import com.android.jack.util.NamingTools; @@ -189,7 +190,8 @@ public class IncrementalTestingEnvironment extends TestTools { if (previousDate == null || jackFile.lastModified() > previousDate.longValue()) { String jackFileName = jackFile.getAbsolutePath(); String binaryTypeName = jackFileName.substring(0, jackFileName.indexOf(".jayce")); - binaryTypeName = binaryTypeName.substring(jackFolder.getAbsolutePath().length() + 1); + binaryTypeName = binaryTypeName.substring((jackFolder.getAbsolutePath() + File.separatorChar + + FileType.JAYCE.getPrefix()).length() + 1); fqnOfRebuiltTypes.add(binaryTypeName.replace(File.separatorChar,'.')); } } diff --git a/jack/tests/com/android/jack/multidex/MultiDexTests.java b/jack/tests/com/android/jack/multidex/MultiDexTests.java index bf53e86..2edbb0b 100644 --- a/jack/tests/com/android/jack/multidex/MultiDexTests.java +++ b/jack/tests/com/android/jack/multidex/MultiDexTests.java @@ -22,7 +22,9 @@ import com.android.jack.Options; import com.android.jack.TestTools; import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.backend.dex.MultiDexLegacy; +import com.android.jack.library.FileType; import com.android.jack.preprocessor.PreProcessor; +import com.android.jack.preprocessor.PreprocessorProperties; import com.android.jack.shrob.ListingComparator; import com.android.jack.util.ExecuteFile; @@ -35,8 +37,10 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.util.Properties; import javax.annotation.Nonnull; @@ -248,9 +252,38 @@ public class MultiDexTests { TestTools.getJackTestFolder("multidex/fakelibrary"), TestTools.getDefaultBootclasspathString() + File.pathSeparator + frameworks.getPath(), library, false); + return library; } + private static void setMetaIntoJackProperties(@Nonnull File library) throws IOException { + File jackProperties = new File(library, "jack.properties"); + Properties libraryProperties = new Properties(); + FileInputStream fis = null; + FileOutputStream fos = null; + try { + fis = new FileInputStream(jackProperties); + libraryProperties.load(fis); + } catch (IOException e) { + Assert.fail(); + } finally { + if (fis != null) { + fis.close(); + } + } + try { + fos = new FileOutputStream(jackProperties); + libraryProperties.put(PreprocessorProperties.KEY_JPP, "true"); + libraryProperties.store(fos, "Library properties"); + } catch (IOException e) { + Assert.fail(); + } finally { + if (fos != null) { + fos.close(); + } + } + } + @Test public void legacyAppTest002a() throws Exception { @@ -306,7 +339,8 @@ public class MultiDexTests { File testFolder = TestTools.getJackTestsWithJackFolder("multidex/test002"); File autoLibrary = prepareLibrary(frameworks); - File jackInf = new File(autoLibrary, "JACK-INF"); + setMetaIntoJackProperties(autoLibrary); + File jackInf = new File(autoLibrary, FileType.JPP.getPrefix()); Assert.assertTrue(jackInf.mkdir()); Files.copy(new File(testFolder,"config-001.jpp"), new File(jackInf, "config-001.jpp")); @@ -387,7 +421,8 @@ public class MultiDexTests { File testFolder = TestTools.getJackTestsWithJackFolder("multidex/test002"); File autoLibrary = prepareLibrary(frameworks); - File jackInf = new File(autoLibrary, "JACK-INF"); + setMetaIntoJackProperties(autoLibrary); + File jackInf = new File(autoLibrary, FileType.JPP.getPrefix()); Assert.assertTrue(jackInf.mkdir()); Files.copy(new File(testFolder,"config-001.jpp"), new File(jackInf, "config-001.jpp")); |