diff options
Diffstat (limited to 'jack-tests')
21 files changed, 306 insertions, 360 deletions
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java index 5593472..6e69be5 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java @@ -184,6 +184,7 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { apiV01Config.setImportedJackLibraryFiles(staticLibs); apiV01Config.setSourceEntries(Lists.newArrayList(sources)); apiV01Config.setResourceDirs(resImport); + apiV01Config.setMetaDirs(metaImport); apiV01Config.setProguardConfigFiles(proguardFlags); if (!jarjarRules.isEmpty()) { apiV01Config.setJarJarConfigFiles(jarjarRules); @@ -210,6 +211,7 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { Collections.addAll(importedLibs, in); apiV01Config.setImportedJackLibraryFiles(importedLibs); apiV01Config.setResourceDirs(resImport); + apiV01Config.setMetaDirs(metaImport); apiV01Config.setProguardConfigFiles(proguardFlags); if (jarjarRules != null) { apiV01Config.setJarJarConfigFiles(jarjarRules); 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 a08fe71..92bd82a 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java @@ -47,6 +47,8 @@ public abstract class JackBasedToolchain extends AndroidToolchain { @Nonnull protected List<File> resImport = new ArrayList<File>(); @Nonnull + protected List<File> metaImport = new ArrayList<File>(); + @Nonnull protected final Map<String, String> annotationProcessorOptions = new HashMap<String, String>(); @CheckForNull protected String processorPath; @@ -87,8 +89,14 @@ public abstract class JackBasedToolchain extends AndroidToolchain { } @Nonnull - public JackBasedToolchain addResource(@Nonnull File resource) { - resImport.add(resource); + public JackBasedToolchain addResourceDir(@Nonnull File resourceDir) { + resImport.add(resourceDir); + return this; + } + + @Nonnull + public JackBasedToolchain addMetaDir(@Nonnull File metaDir) { + metaImport.add(metaDir); return this; } 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 fdcfedc..b9de041 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java @@ -163,6 +163,11 @@ public class JackCliToolchain extends JackBasedToolchain { args.add(res.getPath()); } + for (File meta : metaImport) { + args.add("--import-meta"); + args.add(meta.getPath()); + } + args.addAll(extraJackArgs); for (File jarjarFile : jarjarRules) { @@ -266,6 +271,11 @@ public class JackCliToolchain extends JackBasedToolchain { args.add(res.getPath()); } + for (File meta : metaImport) { + args.add("--import-meta"); + args.add(meta.getPath()); + } + addProperties(properties, args); if (!classpath.equals("")) { diff --git a/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java index 8592ee6..98004b4 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java @@ -114,7 +114,7 @@ public class LegacyJillToolchain extends JillBasedToolchain { if (resImport.size() > 0) { resDestDir = new File(classesDir, FileType.RSC.getPrefix()); if (!resDestDir.exists() && !resDestDir.mkdir()) { - throw new AssertionError("Could not create rsc dir"); + throw new AssertionError("Could not create resource dir"); } for (File res : resImport) { @@ -122,6 +122,18 @@ public class LegacyJillToolchain extends JillBasedToolchain { } } + File metaDestDir; + if (metaImport.size() > 0) { + metaDestDir = new File(classesDir, FileType.JPP.getPrefix()); + if (!metaDestDir.exists() && !metaDestDir.mkdir()) { + throw new AssertionError("Could not create meta dir"); + } + + for (File meta : metaImport) { + AbstractTestTools.copyDirectory(meta, metaDestDir); + } + } + File tmpJarsDir = AbstractTestTools.createTempDir(); File jarFile = new File(tmpJarsDir, "legacyLib.jar"); File jarFileJarjar = new File(tmpJarsDir, "legacyLibJarjar.jar"); diff --git a/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java b/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java index cc65221..9b1e7cc 100644 --- a/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java +++ b/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java @@ -239,7 +239,7 @@ public class AnnotationProcessorTests { { JackBasedToolchain jack = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); jack.setAnnotationProcessorPath(processors.getPath()); - jack.addResource(classesOut); + jack.addResourceDir(classesOut); jack.addToClasspath(jack.getDefaultBootClasspath()); jack.srcToLib(jackOut, /*zipFiles=*/false, @@ -250,7 +250,7 @@ public class AnnotationProcessorTests { { JackBasedToolchain jack = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); jack.setAnnotationProcessorPath(processors.getPath()); - jack.addResource(classesOut); + jack.addResourceDir(classesOut); jack.addToClasspath(jack.getDefaultBootClasspath()); jack.srcToLib(jackOut, /*zipFiles=*/false, diff --git a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java index 99b58f2..9eb04ed 100644 --- a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java +++ b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java @@ -84,7 +84,7 @@ public class AnnotationProcessorErrorTest { Collections.singletonList(ResourceAnnotationProcessor.class.getName())); ByteArrayOutputStream errOut = new ByteArrayOutputStream(); jackApiToolchain.setErrorStream(errOut); - jackApiToolchain.addResource(te.getOutputDexFolder()); + jackApiToolchain.addResourceDir(te.getOutputDexFolder()); jackApiToolchain.addProperty(ResourceImporter.RESOURCE_COLLISION_POLICY.getName(), CollisionPolicy.FAIL.name()); diff --git a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java index 9537ffe..eb90ff2 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java +++ b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java @@ -20,7 +20,8 @@ import com.android.jack.JackAbortException; import com.android.jack.backend.jayce.JayceFileImporter; import com.android.jack.backend.jayce.TypeImportConflictException; import com.android.jack.library.FileType; -import com.android.jack.library.JackLibrary; +import com.android.jack.library.FileTypeDoesNotExistException; +import com.android.jack.library.InputJackLibrary; import com.android.jack.library.LibraryReadingException; import com.android.jack.resource.ResourceImportConflictException; import com.android.jack.resource.ResourceImporter; @@ -32,78 +33,48 @@ import com.android.jack.test.toolchain.JackApiToolchainBase; import com.android.jack.test.toolchain.JackBasedToolchain; import com.android.jack.test.toolchain.JackCliToolchain; import com.android.jack.test.toolchain.LegacyJillToolchain; +import com.android.sched.util.location.FileLocation; +import com.android.sched.vfs.InputVFile; +import com.android.sched.vfs.VPath; import junit.framework.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; /** - * JUnit tests for resource support. + * JUnit tests for conflicts between Jayce files and resources. */ public class FileConflictTests { @Nonnull - private static final String COMMON_PATH_001 = "com/android/jack/fileconflict/test001/jack/"; + private static final VPath TYPE1_PATH = + new VPath("com/android/jack/fileconflict/test001/jack/MyClass", '/'); @Nonnull - private static final String COMMON_PATH_002 = "com/android/jack/fileconflict/test002/jack/"; + private static final VPath TYPE2_PATH = + new VPath("com/android/jack/fileconflict/test001/jack/MyClass2", '/'); @Nonnull - private static final String JACK_FILE_PATH_1 = - FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass.jayce"; + private static final VPath TYPE3_PATH = + new VPath("com/android/jack/fileconflict/test001/jack/MyClass3", '/'); @Nonnull - private static final String JACK_FILE_PATH_2 = - FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass2.jayce"; + private static final VPath RESOURCE1_PATH = new VPath("rsc/Resource1", '/'); @Nonnull - private static final String JACK_FILE_PATH_3 = - FileType.JAYCE.getPrefix() + "/" + COMMON_PATH_001 + "MyClass3.jayce"; + private static final VPath RESOURCE2_PATH = new VPath("rsc/Resource2", '/'); @Nonnull - private static final String DEX_FILE_PATH_1 = - FileType.DEX.getPrefix() + "/" + COMMON_PATH_001 + "MyClass.dex"; - @Nonnull - 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 - private static final String RESOURCE2_SHORTPATH = "Resource2"; - @Nonnull - private static final String RESOURCE3_SHORTPATH = "Resource3"; - @Nonnull - private static final String RESOURCE1_LONGPATH = FileType.RSC.getPrefix() + "/" - + RESOURCE1_SHORTPATH; - @Nonnull - private static final String RESOURCE2_LONGPATH = FileType.RSC.getPrefix() + "/" - + RESOURCE2_SHORTPATH; - @Nonnull - private static final String RESOURCE3_LONGPATH = FileType.RSC.getPrefix() + "/" - + RESOURCE3_SHORTPATH; + private static final VPath RESOURCE3_PATH = new VPath("rsc/Resource3", '/'); @Nonnull private static final File TEST001_DIR = @@ -124,7 +95,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test001a() throws Exception { File jackOutput = AbstractTestTools.createTempDir(); ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -147,7 +117,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test001b() throws Exception { File jackOutput = AbstractTestTools.createTempDir(); ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -171,19 +140,28 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test001c() throws Exception { File jackOutput = AbstractTestTools.createTempDir(); ByteArrayOutputStream errOut = new ByteArrayOutputStream(); runTest001(jackOutput, "keep-first", errOut /* errorStream */, /* isApiTest = */ false, /* verbose = */ false); - File myClass1 = new File(jackOutput, JACK_FILE_PATH_1); - File myClass2 = new File(jackOutput, JACK_FILE_PATH_2); - File myClass3 = new File(jackOutput, JACK_FILE_PATH_3); - Assert.assertTrue(myClass1.exists()); - Assert.assertTrue(myClass2.exists()); - Assert.assertTrue(myClass3.exists()); - Assert.assertTrue(errOut.toString().isEmpty()); + InputJackLibrary outputLib = null; + try { + outputLib = AbstractTestTools.getInputJackLibrary(jackOutput); + InputVFile myClass1 = outputLib.getFile(FileType.JAYCE, TYPE1_PATH); + InputVFile myClass2 = outputLib.getFile(FileType.JAYCE, TYPE2_PATH); + InputVFile myClass3 = outputLib.getFile(FileType.JAYCE, TYPE3_PATH); + checkJayceNotEmpty(myClass1); + checkJayceNotEmpty(myClass2); + checkJayceNotEmpty(myClass3); + } catch (FileTypeDoesNotExistException e) { + Assert.fail(); + } finally { + if (outputLib != null) { + outputLib.close(); + } + Assert.assertTrue(errOut.toString().isEmpty()); + } } /** @@ -199,20 +177,30 @@ public class FileConflictTests { ByteArrayOutputStream errOut = new ByteArrayOutputStream(); runTest001(jackOutput, "keep-first", errOut /* errorStream */, /* isApiTest = */ false, /* verbose = */ true); - File myClass1 = new File(jackOutput, JACK_FILE_PATH_1); - File myClass2 = new File(jackOutput, JACK_FILE_PATH_2); - File myClass3 = new File(jackOutput, JACK_FILE_PATH_3); - Assert.assertTrue(myClass1.exists()); - Assert.assertTrue(myClass2.exists()); - Assert.assertTrue(myClass3.exists()); - String errString = errOut.toString(); - Assert.assertTrue( - errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass")); - Assert.assertTrue( - errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass2")); - Assert.assertTrue( - errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass3")); - Assert.assertTrue(errString.contains("has already been imported")); + InputJackLibrary outputLib = null; + try { + outputLib = AbstractTestTools.getInputJackLibrary(jackOutput); + InputVFile myClass1 = outputLib.getFile(FileType.JAYCE, TYPE1_PATH); + InputVFile myClass2 = outputLib.getFile(FileType.JAYCE, TYPE2_PATH); + InputVFile myClass3 = outputLib.getFile(FileType.JAYCE, TYPE3_PATH); + checkJayceNotEmpty(myClass1); + checkJayceNotEmpty(myClass2); + checkJayceNotEmpty(myClass3); + } catch (FileTypeDoesNotExistException e) { + Assert.fail(); + } finally { + if (outputLib != null) { + outputLib.close(); + } + String errString = errOut.toString(); + Assert.assertTrue( + errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass")); + Assert.assertTrue( + errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass2")); + Assert.assertTrue( + errString.contains("Type com.android.jack.fileconflict.test001.jack.MyClass3")); + Assert.assertTrue(errString.contains("has already been imported")); + } } /** @@ -221,7 +209,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test002a() throws Exception { File jackOutput; ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -233,7 +220,6 @@ public class FileConflictTests { Assert.assertTrue(e.getCause() instanceof LibraryReadingException); Assert.assertTrue(e.getCause().getCause() instanceof ResourceImportConflictException); String errString = errOut.toString(); - Assert.assertTrue(errString.contains("Resource in")); Assert.assertTrue(errString.contains("rsc/Resource1")); Assert.assertTrue(errString.contains("has already been imported")); } @@ -245,7 +231,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test002b() throws Exception { File jackOutput; ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -257,7 +242,6 @@ public class FileConflictTests { Assert.assertTrue(e.getCause() instanceof LibraryReadingException); Assert.assertTrue(e.getCause().getCause() instanceof ResourceImportConflictException); String errString = errOut.toString(); - Assert.assertTrue(errString.contains("Resource in")); Assert.assertTrue(errString.contains("rsc/Resource1")); Assert.assertTrue(errString.contains("has already been imported")); } @@ -270,15 +254,22 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test002c() throws Exception { File jackOutput; ByteArrayOutputStream errOut = new ByteArrayOutputStream(); jackOutput = runTest002(false /* non-zipped */, "keep-first", errOut, /* isApiTest = */ false, /* verbose = */ false); - checkResourceContent(jackOutput, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(jackOutput, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(jackOutput, RESOURCE3_LONGPATH, "Res3"); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(jackOutput); + checkResourceContent(lib, RESOURCE1_PATH, "Res1"); + checkResourceContent(lib, RESOURCE2_PATH, "Res2"); + checkResourceContent(lib, RESOURCE3_PATH, "Res3"); + } finally { + if (lib != null) { + lib.close(); + } + } Assert.assertTrue(errOut.toString().isEmpty()); } @@ -288,7 +279,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test002d() throws Exception { File jackOutput; ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -300,7 +290,6 @@ public class FileConflictTests { Assert.assertTrue(e.getCause() instanceof LibraryReadingException); Assert.assertTrue(e.getCause().getCause() instanceof ResourceImportConflictException); String errString = errOut.toString(); - Assert.assertTrue(errString.contains("Resource in")); Assert.assertTrue(errString.contains("rsc/Resource1")); Assert.assertTrue(errString.contains("has already been imported")); } @@ -312,7 +301,6 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore public void test002e() throws Exception { File jackOutput; ByteArrayOutputStream errOut = new ByteArrayOutputStream(); @@ -324,7 +312,6 @@ public class FileConflictTests { Assert.assertTrue(e.getCause() instanceof LibraryReadingException); Assert.assertTrue(e.getCause().getCause() instanceof ResourceImportConflictException); String errString = errOut.toString(); - Assert.assertTrue(errString.contains("Resource in")); Assert.assertTrue(errString.contains("rsc/Resource1")); Assert.assertTrue(errString.contains("has already been imported")); } @@ -342,10 +329,17 @@ public class FileConflictTests { ByteArrayOutputStream errOut = new ByteArrayOutputStream(); jackOutput = runTest002(true /* zipped */, "keep-first", errOut, /* isApiTest = */ false, /* verbose = */ false); - ZipFile zipFile = new ZipFile(jackOutput); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(jackOutput); + checkResourceContent(lib, RESOURCE1_PATH, "Res1"); + checkResourceContent(lib, RESOURCE2_PATH, "Res2"); + checkResourceContent(lib, RESOURCE3_PATH, "Res3"); + } finally { + if (lib != null) { + lib.close(); + } + } Assert.assertTrue(errOut.toString().isEmpty()); } @@ -362,12 +356,18 @@ public class FileConflictTests { ByteArrayOutputStream errOut = new ByteArrayOutputStream(); jackOutput = runTest002(true /* zipped */, "keep-first", errOut, /* isApiTest = */ false, /* verbose = */ true); - ZipFile zipFile = new ZipFile(jackOutput); - checkResourceContent(zipFile, RESOURCE1_LONGPATH, "Res1"); - checkResourceContent(zipFile, RESOURCE2_LONGPATH, "Res2"); - checkResourceContent(zipFile, RESOURCE3_LONGPATH, "Res3"); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(jackOutput); + checkResourceContent(lib, RESOURCE1_PATH, "Res1"); + checkResourceContent(lib, RESOURCE2_PATH, "Res2"); + checkResourceContent(lib, RESOURCE3_PATH, "Res3"); + } finally { + if (lib != null) { + lib.close(); + } + } String errString = errOut.toString(); - Assert.assertTrue(errString.contains("Resource in")); Assert.assertTrue(errString.contains("rsc/Resource1")); Assert.assertTrue(errString.contains("has already been imported")); } @@ -378,9 +378,8 @@ public class FileConflictTests { * @throws Exception */ @Test - @Ignore - public void test003a() throws Exception { - // compile source files to a Jack dir + public void test003() throws Exception { + File jackOutput = AbstractTestTools.createTempDir(); File testSrcDir = AbstractTestTools.getTestRootDir("com.android.jack.fileconflict.test003"); File tempJackFolder = AbstractTestTools.createTempDir(); @@ -389,141 +388,99 @@ public class FileConflictTests { exclude.add(LegacyJillToolchain.class); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude); - toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) + toolchain.addResourceDir(new File(testSrcDir, "jack/rsc1")) + .addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( tempJackFolder, /* zipFiles = */ false, testSrcDir); - // get paths for Jack files - 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); - File digestFile = new File(tempJackFolder, FileType.DEX.getPrefix() + "/digest"); - - - // create Jack dirs to import - File jackImport1 = AbstractTestTools.createTempDir(); - AbstractTestTools.copyFileToDir(libProperties, libPropName, jackImport1); - AbstractTestTools.copyFileToDir(myClass1, jackFilePath, jackImport1); - AbstractTestTools.copyFileToDir(myClass1Dex, dexFilePath, jackImport1); - AbstractTestTools.copyFileToDir(digestFile, FileType.DEX.getPrefix() + "/digest", jackImport1); - - // copy Jack file to output dir - AbstractTestTools.copyFileToDir(myClass1, jackFilePath, jackOutput); - AbstractTestTools.copyFileToDir(myClass1Dex, dexFilePath, jackOutput); - - toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude); - toolchain.addProguardFlags(new File(testSrcDir, "proguard.flags")); - toolchain.libToLib(jackImport1, jackOutput, false); - } - - /** - * Test the behavior of Jack when outputting a resource to a Jack folder where a file of the - * same name already exists. We expect the previous file to be overridden. - * @throws Exception - */ - @Test - @Ignore("Now jack generate library, a previous file can not exists") - public void test003b() throws Exception { - File jackOutput = AbstractTestTools.createTempDir(); - - // compile source files to a Jack dir - File testSrcDir = AbstractTestTools.getTestRootDir("com.android.jack.fileconflict.test003.jack"); - File tempJackFolder = AbstractTestTools.createTempDir(); - JackBasedToolchain toolchain = - AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) + toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude); + toolchain.addResourceDir(new File(testSrcDir, "jack/rsc2")) + .addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( tempJackFolder, /* zipFiles = */ false, testSrcDir); - // get paths for Jack files - 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('/'); - File libProperties = new File(tempJackFolder, libPropName); - - // create Jack dirs to import - File jackImport1 = AbstractTestTools.createTempDir(); - String resourcePath = "com/android/jack/fileconflict/test003/jack/Resource"; - File resource = new File(testSrcDir, "Resource"); - AbstractTestTools.copyFileToDir(libProperties, libPropName, jackImport1); - AbstractTestTools.copyFileToDir(myClass1, jackFilePath, jackImport1); - AbstractTestTools.copyFileToDir(resource, resourcePath, jackImport1); - - // copy a different resource to output dir with the same name - File resource2 = new File(testSrcDir, "Resource2"); - AbstractTestTools.copyFileToDir(resource2, resourcePath, jackOutput); - - // run Jack on Jack dir - toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.libToLib(jackImport1, jackOutput, /* zipFiles = */ false); + VPath typePath = new VPath("com/android/jack/fileconflict/test003/jack/MyClass", '/'); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(tempJackFolder); - checkResourceContent(jackOutput, resourcePath, "Res1"); + // check Jayce file is not empty + InputVFile jayceFile = lib.getFile(FileType.JAYCE, typePath); + checkJayceNotEmpty(jayceFile); + // check Resource file content + checkResourceContent(lib, new VPath("Resource", '/'), "Res2"); + } finally { + if (lib != null) { + lib.close(); + } + } } /** - * Test the behavior of Jack when renaming a Jack file along with the resource with a matching + * Test the behavior of Jack when renaming a Jayce file along with the resource with a matching * name, and when a resource with the same name (after renaming) already exists. * @throws Exception */ @Test - @Category(KnownBugs.class) public void test004() throws Exception { File jackOutput = AbstractTestTools.createTempDir(); + VPath pathToType = new VPath("com/android/jack/fileconflict/test004/jack/MyClass", '/'); + VPath pathToRenamedType = new VPath("pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg", '/'); + VPath pathToResource2 = pathToRenamedType.clone().addSuffix(".txt"); - // compile source files to a Jack dir - File testSrcDir = AbstractTestTools.getTestRootDir("com.android.jack.fileconflict.test004.jack"); - File tempJackFolder = AbstractTestTools.createTempDir(); + // compile source files to a lib dir while importing ZmPyngg.txt + File testSrcDir = + AbstractTestTools.getTestRootDir("com.android.jack.fileconflict.test004.jack"); + File jackImport1 = AbstractTestTools.createTempDir(); JackApiToolchainBase toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class); - toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) + toolchain.addResourceDir(new File(testSrcDir, "rsc2")) + .addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( - tempJackFolder, + jackImport1, /* zipFiles = */ false, testSrcDir); - // get paths for Jack files - 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('/'); - File libProperties = new File(tempJackFolder, libPropName); - - // create Jack dirs to import - File jackImport1 = AbstractTestTools.createTempDir(); - File resource = new File(testSrcDir, "MyClass.txt"); - AbstractTestTools.copyFileToDir(libProperties, libPropName, jackImport1); - AbstractTestTools.copyFileToDir(myClass1, jackFilePath, jackImport1); - AbstractTestTools.copyFileToDir(resource, "com/android/jack/fileconflict/test004/jack/MyClass.txt", jackImport1); - - // copy a different resource to output dir with the same name - File resource2 = new File(testSrcDir, "a.txt"); - AbstractTestTools.copyFileToDir(resource2, "pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt", jackOutput); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(jackImport1); + checkResourceContent(lib, pathToResource2, "a"); + checkJayceNotEmpty(lib.getFile(FileType.JAYCE, pathToType)); + } finally { + if (lib != null) { + lib.close(); + } + } - // run Jack on Jack dir + // compile source files to the same lib dir while importing MyClass.txt which should be + // obfuscated as ZmPyngg.txt toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class); + toolchain.addResourceDir(new File(testSrcDir, "rsc1")); toolchain.addProguardFlags(new File(testSrcDir, "proguard.flags")); toolchain.addProperty(NameProviderFactory.NAMEPROVIDER.getName(), "rot13"); - toolchain.libToLib(jackImport1, jackOutput, /* zipFiles = */ false); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) + .srcToLib( + jackImport1, + /* zipFiles = */ false, + testSrcDir); - checkResourceContent(jackOutput, "pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt", - "MyClass"); + try { + lib = AbstractTestTools.getInputJackLibrary(jackImport1); + checkResourceContent(lib, pathToResource2, "MyClass"); + checkJayceNotEmpty(lib.getFile(FileType.JAYCE, pathToRenamedType)); + checkJayceNotEmpty(lib.getFile(FileType.JAYCE, pathToType)); // still here from 1st run + } finally { + if (lib != null) { + lib.close(); + } + } } @Nonnull @@ -538,54 +495,39 @@ public class FileConflictTests { private void runTest001(@Nonnull File jackOutput, @CheckForNull String collisionPolicy, @CheckForNull OutputStream errorStream, boolean isApiTest, boolean verbose) throws Exception { - // compile source files to a Jack dir - File tempJackFolder = AbstractTestTools.createTempDir(); - JackBasedToolchain toolchain = getToolchain(isApiTest); + // create Jack dirs to import + File jackLib1 = AbstractTestTools.createTempDir(); + File jackLib2 = AbstractTestTools.createTempDir(); + + File srcFile1 = new File(TEST001_DIR, "MyClass.java"); + File srcFile2 = new File(TEST001_DIR, "MyClass2.java"); + File srcFile3 = new File(TEST001_DIR, "MyClass3.java"); + JackBasedToolchain toolchain = getToolchain(isApiTest); if (errorStream != null) { toolchain.setErrorStream(errorStream); } toolchain.setVerbose(verbose); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()).srcToLib( - tempJackFolder, + jackLib1, /* zipFile = */ false, - TEST001_DIR); - - // get paths for Jack files - File myClass1 = new File(tempJackFolder, JACK_FILE_PATH_1); - 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); + srcFile1, srcFile2); - String libPropName = JackLibrary.LIBRARY_PROPERTIES_VPATH.getPathAsString('/'); - File libProperties = new File(tempJackFolder, libPropName); - File digestFile = new File(tempJackFolder, FileType.DEX.getPrefix() + "/digest"); - - // create Jack dirs to import - File jackImport1 = AbstractTestTools.createTempDir(); - File jackImport2 = AbstractTestTools.createTempDir(); - AbstractTestTools.copyFileToDir(digestFile, FileType.DEX.getPrefix() + "/digest", jackImport1); - AbstractTestTools.copyFileToDir(digestFile, FileType.DEX.getPrefix() + "/digest", jackImport2); - AbstractTestTools.copyFileToDir(libProperties, libPropName, jackImport1); - AbstractTestTools.copyFileToDir(myClass1, JACK_FILE_PATH_1, jackImport1); - AbstractTestTools.copyFileToDir(myClass1Dex, DEX_FILE_PATH_1, jackImport1); - AbstractTestTools.copyFileToDir(myClass2, JACK_FILE_PATH_2, jackImport1); - AbstractTestTools.copyFileToDir(myClass2Dex, DEX_FILE_PATH_2, jackImport1); - AbstractTestTools.copyFileToDir(libProperties, libPropName, jackImport2); - AbstractTestTools.copyFileToDir(myClass1, JACK_FILE_PATH_1, jackImport2); - AbstractTestTools.copyFileToDir(myClass1Dex, DEX_FILE_PATH_1, jackImport2); - AbstractTestTools.copyFileToDir(myClass3, JACK_FILE_PATH_3, jackImport2); - AbstractTestTools.copyFileToDir(myClass3Dex, DEX_FILE_PATH_3, jackImport2); + toolchain = getToolchain(isApiTest); + if (errorStream != null) { + toolchain.setErrorStream(errorStream); + } + toolchain.setVerbose(verbose); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()).srcToLib( + jackLib2, + /* zipFile = */ false, + srcFile1, srcFile3); // run Jack on Jack dirs toolchain = getToolchain(isApiTest); toolchain.addProguardFlags(new File(TEST001_DIR, "proguard.flags")); - toolchain.addStaticLibs(jackImport1, jackImport2); + toolchain.addStaticLibs(jackLib1, jackLib2); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()); if (collisionPolicy != null) { toolchain.addProperty(JayceFileImporter.COLLISION_POLICY.getName(), collisionPolicy); @@ -593,7 +535,7 @@ public class FileConflictTests { if (errorStream != null) { toolchain.setErrorStream(errorStream); } - toolchain.libToLib(new File [] {jackImport1, jackImport2}, jackOutput, /* zipFiles = */ false); + toolchain.libToLib(new File [] {jackLib1, jackLib2}, jackOutput, /* zipFiles = */ false); } @Nonnull @@ -604,7 +546,7 @@ public class FileConflictTests { File lib1 = new File(TEST002_DIR, "lib1"); JackBasedToolchain toolchain = getToolchain(isApiTest); - toolchain.addResource(new File(lib1, "rsc")); + toolchain.addResourceDir(new File(lib1, "rsc")); if (errorStream != null) { toolchain.setErrorStream(errorStream); } @@ -618,7 +560,7 @@ public class FileConflictTests { File jackImport2 = AbstractTestTools.createTempDir(); File lib2 = new File(TEST002_DIR, "lib2"); toolchain = getToolchain(isApiTest); - toolchain.addResource(new File(lib2, "rsc")); + toolchain.addResourceDir(new File(lib2, "rsc")); if (errorStream != null) { toolchain.setErrorStream(errorStream); } @@ -647,15 +589,12 @@ public class FileConflictTests { return jackOutput; } - private void checkResourceContent(@Nonnull File dir, @Nonnull String path, - @Nonnull String expectedContent) throws IOException { - assert dir.isDirectory(); - File file = new File(dir, path); - Assert.assertTrue(file.exists()); + private void checkResourceContent(@Nonnull InputJackLibrary lib, @Nonnull VPath path, + @Nonnull String expectedContent) throws IOException, FileTypeDoesNotExistException { BufferedReader reader = null; try { - InputStream in = new FileInputStream(file); - reader = new BufferedReader(new InputStreamReader(in)); + reader = new BufferedReader( + new InputStreamReader(lib.getFile(FileType.RSC, path).getInputStream())); String line = reader.readLine(); Assert.assertEquals(expectedContent, line); } finally { @@ -665,20 +604,8 @@ public class FileConflictTests { } } - private void checkResourceContent(@Nonnull ZipFile zipFile, @Nonnull String entryName, - @Nonnull String expectedContent) throws IOException { - ZipEntry entry = zipFile.getEntry(entryName); - Assert.assertNotNull(entry); - BufferedReader reader = null; - try { - InputStream in = zipFile.getInputStream(entry); - reader = new BufferedReader(new InputStreamReader(in)); - String line = reader.readLine(); - Assert.assertEquals(expectedContent, line); - } finally { - if (reader != null) { - reader.close(); - } - } + private void checkJayceNotEmpty(@Nonnull InputVFile jayceFile) { + File file = new File(((FileLocation) jayceFile.getLocation()).getPath()); + Assert.assertTrue(file.length() > 0); } } diff --git a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource1 b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource1 index b98ccd9..b98ccd9 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource1 +++ b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource1 diff --git a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource2 b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource2 index 1bcdbc0..1bcdbc0 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource2 +++ b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource2 diff --git a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource1 b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource1 index b98ccd9..b98ccd9 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource1 +++ b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource1 diff --git a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource3 b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource3 index d0da24e..d0da24e 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource3 +++ b/jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource3 diff --git a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/proguard.flags b/jack-tests/tests/com/android/jack/fileconflict/test003/jack/proguard.flags deleted file mode 100644 index b46ee55..0000000 --- a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/proguard.flags +++ /dev/null @@ -1,2 +0,0 @@ --keep class com.android.jack.fileconflict.test003.jack.* --dontobfuscate diff --git a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource b/jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc1/Resource index b98ccd9..b98ccd9 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource +++ b/jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc1/Resource diff --git a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource2 b/jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc2/Resource index 1bcdbc0..1bcdbc0 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource2 +++ b/jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc2/Resource diff --git a/jack-tests/tests/com/android/jack/fileconflict/test004/jack/MyClass.txt b/jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc1/com/android/jack/fileconflict/test004/jack/MyClass.txt index cc5c81f..cc5c81f 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test004/jack/MyClass.txt +++ b/jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc1/com/android/jack/fileconflict/test004/jack/MyClass.txt diff --git a/jack-tests/tests/com/android/jack/fileconflict/test004/jack/a.txt b/jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc2/pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt index 7898192..7898192 100644 --- a/jack-tests/tests/com/android/jack/fileconflict/test004/jack/a.txt +++ b/jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc2/pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt diff --git a/jack-tests/tests/com/android/jack/library/LibraryTests.java b/jack-tests/tests/com/android/jack/library/LibraryTests.java index a9bb144..c482827 100644 --- a/jack-tests/tests/com/android/jack/library/LibraryTests.java +++ b/jack-tests/tests/com/android/jack/library/LibraryTests.java @@ -121,7 +121,7 @@ public class LibraryTests { AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); File emptyLib = AbstractTestTools.createTempFile("rsc", toolchain.getLibraryExtension()); - toolchain.addResource(AbstractTestTools.getTestRootDir("com.android.jack.library.test001.lib")); + toolchain.addResourceDir(AbstractTestTools.getTestRootDir("com.android.jack.library.test001.lib")); toolchain.srcToLib(emptyLib, /* zipFiles = */ true); return emptyLib; diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java index 303a672..e9ec887 100644 --- a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java +++ b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java @@ -16,15 +16,12 @@ package com.android.jack.multidex; -import com.google.common.io.Files; - import com.android.jack.Options; import com.android.jack.backend.dex.DexFileWriter; import com.android.jack.backend.dex.MultiDexLegacy; import com.android.jack.comparator.DifferenceFoundException; import com.android.jack.dx.io.ClassDef; import com.android.jack.dx.io.DexBuffer; -import com.android.jack.library.FileType; import com.android.jack.preprocessor.PreProcessor; import com.android.jack.shrob.ListingComparator; import com.android.jack.test.category.KnownBugs; @@ -45,19 +42,15 @@ import com.android.sched.util.TextUtils; import junit.framework.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Properties; import javax.annotation.Nonnull; @@ -263,7 +256,8 @@ public class MultiDexTests { } @Nonnull - private static File prepareLib(@Nonnull File sources, @Nonnull File... classpath) throws Exception { + private static File prepareLib(@Nonnull File sources, @Nonnull File... classpath) + throws Exception { File outDir = AbstractTestTools.createTempDir(); List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); exclude.add(LegacyJillToolchain.class); @@ -289,37 +283,27 @@ public class MultiDexTests { } @Nonnull - private static File prepareLibrary(@Nonnull File frameworks) throws IOException, Exception { + private static File prepareLibrary(@Nonnull File classpath) throws IOException, Exception { return prepareLib(AbstractTestTools.getTestRootDir("com.android.jack.multidex.fakelibrary"), - frameworks); + classpath); } - 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(FileType.JPP.buildPropertyName(null /*suffix*/), "true"); - libraryProperties.store(fos, "Library properties"); - } catch (IOException e) { - Assert.fail(); - } finally { - if (fos != null) { - fos.close(); - } - } + @Nonnull + private static File prepareAutoLibrary() throws Exception { + File jppDir = AbstractTestTools.getTestRootDir("com.android.jack.multidex.jpp"); + File autoLibrary = AbstractTestTools.createTempDir(); + List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); + exclude.add(LegacyJillToolchain.class); + JackBasedToolchain toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude); + toolchain.addMetaDir(jppDir) + .addToClasspath(toolchain.getDefaultBootClasspath()) + .addToClasspath(frameworks) + .srcToLib( + autoLibrary, + /* zipFiles = */ false, + AbstractTestTools.getTestRootDir("com.android.jack.multidex.fakelibrary")); + return autoLibrary; } @Test @@ -330,7 +314,8 @@ public class MultiDexTests { JackApiToolchainBase toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class); - addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp")); + File jppDir = AbstractTestTools.getTestRootDir("com.android.jack.multidex.jpp"); + addCommonOptionsForMultiDex(toolchain, new File(jppDir, "config-001.jpp")); toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "multidex"); toolchain.addProperty(Options.USE_DEFAULT_LIBRARIES.getName(), "false"); @@ -361,7 +346,8 @@ public class MultiDexTests { JackApiToolchainBase toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class); - addCommonOptionsForMultiDex(toolchain, new File(testFolder, "config-001.jpp")); + File jppDir = AbstractTestTools.getTestRootDir("com.android.jack.multidex.jpp"); + addCommonOptionsForMultiDex(toolchain, new File(jppDir, "config-001.jpp")); toolchain.addProperty(DexFileWriter.DEX_WRITING_POLICY.getName(), "minimal-multidex"); toolchain.addStaticLibs(library); toolchain.addProperty(Options.USE_DEFAULT_LIBRARIES.getName(), "false"); @@ -388,14 +374,9 @@ public class MultiDexTests { @Test @Category(SlowTests.class) - @Ignore public void legacyAppTest002b_auto() throws Exception { File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test002.jack"); - File autoLibrary = prepareLibrary(frameworks); - 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")); + File autoLibrary = prepareAutoLibrary(); JackApiToolchainBase toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class); @@ -479,14 +460,9 @@ public class MultiDexTests { } @Test - @Ignore public void legacyAppTest002b_auto_withoutAnnotations() throws Exception { File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.multidex.test002.jack"); - File autoLibrary = prepareLibrary(frameworks); - 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")); + File autoLibrary = prepareAutoLibrary(); File out = AbstractTestTools.createTempDir(); List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); diff --git a/jack-tests/tests/com/android/jack/multidex/test002/jack/config-001.jpp b/jack-tests/tests/com/android/jack/multidex/jpp/config-001.jpp index cbcfdf5..2a3eb03 100644 --- a/jack-tests/tests/com/android/jack/multidex/test002/jack/config-001.jpp +++ b/jack-tests/tests/com/android/jack/multidex/jpp/config-001.jpp @@ -1,4 +1,4 @@ -multidexInstanciable: +multidexInstantiable: @@com.android.jack.annotations.MultiDexInstaller class * is { diff --git a/jack-tests/tests/com/android/jack/resource/ResourceTests.java b/jack-tests/tests/com/android/jack/resource/ResourceTests.java index 7098d91..edac93e 100644 --- a/jack-tests/tests/com/android/jack/resource/ResourceTests.java +++ b/jack-tests/tests/com/android/jack/resource/ResourceTests.java @@ -115,7 +115,7 @@ public class ResourceTests { // compile source file to a Jack dir File jackFolder = AbstractTestTools.createTempDir(); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackFolder, @@ -168,7 +168,7 @@ public class ResourceTests { // compile source file to a Jack dir File jackFolder = AbstractTestTools.createTempDir(); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackFolder, @@ -230,7 +230,7 @@ public class ResourceTests { // compile source file to a Jack dir File jackFolder = AbstractTestTools.createTempDir(); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackFolder, @@ -264,7 +264,7 @@ public class ResourceTests { // compile source file to a Jack dir File jackFolder = AbstractTestTools.createTempDir(); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackFolder, @@ -288,7 +288,7 @@ public class ResourceTests { // compile source file to a Jack dir File jackFolder = AbstractTestTools.createTempDir(); JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackFolder, @@ -321,7 +321,7 @@ public class ResourceTests { String resource2LongPath = "com/android/jack/resource/test003/jack/A.txt"; JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); - toolchain.addResource(rscFolder).addToClasspath(toolchain.getDefaultBootClasspath()) + toolchain.addResourceDir(rscFolder).addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackOutputFolder, /* zipFiles = */ false, @@ -370,7 +370,7 @@ public class ResourceTests { // compile source file to a Jack file JackBasedToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); File jackAr = AbstractTestTools.createTempFile("resourcetestjack", toolchain.getLibraryExtension()); - toolchain.addResource(new File(FILE, "rsc")); + toolchain.addResourceDir(new File(FILE, "rsc")); toolchain.addToClasspath(toolchain.getDefaultBootClasspath()) .srcToLib( jackAr, diff --git a/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java index 98f8bca..368e2ab 100644 --- a/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java +++ b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java @@ -18,21 +18,20 @@ package com.android.jack.withphantom; import com.android.jack.ProguardFlags; import com.android.jack.library.FileType; -import com.android.jack.test.category.KnownBugs; +import com.android.jack.library.InputJackLibrary; import com.android.jack.test.toolchain.AbstractTestTools; import com.android.jack.test.toolchain.IToolchain; import com.android.jack.test.toolchain.JackBasedToolchain; import com.android.jack.test.toolchain.LegacyJillToolchain; +import com.android.sched.vfs.InputVFile; +import com.android.sched.vfs.VPath; -import junit.framework.Assert; - -import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import java.io.File; -import java.io.FilenameFilter; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import javax.annotation.Nonnull; @@ -50,13 +49,7 @@ public class WithPhantomTests { @Nonnull private static final String TEST002_JACK = TEST002 + ".jack"; - @Nonnull - private static String fixPath(@Nonnull String unixPath) { - return unixPath.replace('/', File.separatorChar); - } - @Test - @Ignore public void testPhantomOuter() throws Exception { File tempJackFolder = AbstractTestTools.createTempDir(); List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); @@ -69,10 +62,16 @@ public class WithPhantomTests { /* zipFiles = */ false, AbstractTestTools.getTestRootDir(TEST001_JACK)); - boolean deleted = - new File(tempJackFolder, FileType.JAYCE.getPrefix() + File.separatorChar - + fixPath("com/android/jack/withphantom/test001/jack/A.jayce")).delete(); - Assert.assertTrue(deleted); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(tempJackFolder); + lib.getFile(FileType.JAYCE, new VPath("com/android/jack/withphantom/test001/jack/A", '/')) + .delete(); + } finally { + if (lib != null) { + lib.close(); + } + } File testFolder = AbstractTestTools.getTestRootDir(TEST001); @@ -93,6 +92,7 @@ public class WithPhantomTests { File tempOut4 = AbstractTestTools.createTempDir(); toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, exclude); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()); toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf2.flags")) .libToLib(tempJackFolder, tempOut4, /* zipFiles = */ false); @@ -102,7 +102,6 @@ public class WithPhantomTests { } @Test - @Ignore public void testPhantomInner() throws Exception { File tempJackFolder = AbstractTestTools.createTempDir(); List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); @@ -115,19 +114,22 @@ public class WithPhantomTests { /* zipFiles = */ false, AbstractTestTools.getTestRootDir(TEST001_JACK)); - 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); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(tempJackFolder); + lib.getFile(FileType.JAYCE, + new VPath("com/android/jack/withphantom/test001/jack/A$Inner1", '/')).delete(); + } finally { + if (lib != null) { + lib.close(); + } + } File testFolder = AbstractTestTools.getTestRootDir(TEST001); File tempOut1 = AbstractTestTools.createTempDir(); toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()); toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink1.flags")) .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); @@ -138,6 +140,7 @@ public class WithPhantomTests { File tempOut3 = AbstractTestTools.createTempDir(); toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()); toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) .libToLib(tempJackFolder, tempOut3, /* zipFiles = */ false); @@ -151,7 +154,6 @@ public class WithPhantomTests { toolchain.libToExe(tempJackFolder, tempOutFolder, /* zipFile = */ false); } - @Category(KnownBugs.class) @Test public void testPhantomLocal() throws Exception { File tempJackFolder = AbstractTestTools.createTempDir(); @@ -163,22 +165,28 @@ public class WithPhantomTests { /* zipFiles = */ false, AbstractTestTools.getTestRootDir(TEST002_JACK)); - 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$"); - } - }); - for (File file : inners) { - Assert.assertTrue(file.delete()); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(tempJackFolder); + Iterator<InputVFile> libIter = lib.iterator(FileType.JAYCE); + while (libIter.hasNext()) { + InputVFile jayceFile = libIter.next(); + String path = jayceFile.getPathFromRoot().getPathAsString('/'); + if (path.startsWith("com/android/jack/withphantom/test002/jack/A$")) { + jayceFile.delete(); + } + } + } finally { + if (lib != null) { + lib.close(); + } } File testFolder = AbstractTestTools.getTestRootDir(TEST002); File tempOut1 = AbstractTestTools.createTempDir(); toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addToClasspath(toolchain.getDefaultBootClasspath()); toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); @@ -188,7 +196,6 @@ public class WithPhantomTests { } @Test - @Ignore public void testPhantomLocalOuter() throws Exception { File tempJackFolder = AbstractTestTools.createTempDir(); List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>(); @@ -201,10 +208,16 @@ public class WithPhantomTests { /* zipFiles = */ false, AbstractTestTools.getTestRootDir(TEST002_JACK)); - boolean deleted = - new File(tempJackFolder, fixPath(FileType.JAYCE.getPrefix() + File.separatorChar - + "com/android/jack/withphantom/test002/jack/A.jayce")).delete(); - Assert.assertTrue(deleted); + InputJackLibrary lib = null; + try { + lib = AbstractTestTools.getInputJackLibrary(tempJackFolder); + lib.getFile(FileType.JAYCE, new VPath("com/android/jack/withphantom/test002/jack/A", '/')) + .delete(); + } finally { + if (lib != null) { + lib.close(); + } + } File testFolder = AbstractTestTools.getTestRootDir(TEST002); |