summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java2
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java8
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java10
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/LegacyJillToolchain.java14
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java424
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource1 (renamed from jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource1)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/rsc/Resource2 (renamed from jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib1/rsc/Resource2)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource1 (renamed from jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource1)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/rsc/Resource3 (renamed from jack-tests/tests/com/android/jack/fileconflict/test002/jack/lib2/rsc/Resource3)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test003/jack/proguard.flags2
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc1/Resource (renamed from jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test003/jack/rsc2/Resource (renamed from jack-tests/tests/com/android/jack/fileconflict/test003/jack/Resource2)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc1/com/android/jack/fileconflict/test004/jack/MyClass.txt (renamed from jack-tests/tests/com/android/jack/fileconflict/test004/jack/MyClass.txt)0
-rw-r--r--jack-tests/tests/com/android/jack/fileconflict/test004/jack/rsc2/pcz/nbqfcvq/wnpx/svyrpcbsyvph/hrgh004/wnpx/ZmPyngg.txt (renamed from jack-tests/tests/com/android/jack/fileconflict/test004/jack/a.txt)0
-rw-r--r--jack-tests/tests/com/android/jack/multidex/MultiDexTests.java76
-rw-r--r--jack-tests/tests/com/android/jack/multidex/jpp/config-001.jpp (renamed from jack-tests/tests/com/android/jack/multidex/test002/jack/config-001.jpp)2
-rw-r--r--jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java93
-rw-r--r--jack/rsc/jack-version.properties26
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceFileImporter.java3
-rw-r--r--jack/src/com/android/jack/resource/ResourceImportConflictException.java13
-rw-r--r--jack/src/com/android/jack/resource/ResourceImporter.java3
21 files changed, 326 insertions, 350 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 5cf13c1..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;
@@ -92,6 +94,12 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
return this;
}
+ @Nonnull
+ public JackBasedToolchain addMetaDir(@Nonnull File metaDir) {
+ metaImport.add(metaDir);
+ return this;
+ }
+
@Override
@Nonnull
public JackBasedToolchain setSourceLevel(@Nonnull SourceLevel sourceLevel) {
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/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
index 5ace69f..8b18094 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("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("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("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();
@@ -245,7 +232,6 @@ public class FileConflictTests {
* @throws Exception
*/
@Test
- @Ignore
public void test002b() throws Exception {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -270,15 +256,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 +281,6 @@ public class FileConflictTests {
* @throws Exception
*/
@Test
- @Ignore
public void test002d() throws Exception {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -312,7 +304,6 @@ public class FileConflictTests {
* @throws Exception
*/
@Test
- @Ignore
public void test002e() throws Exception {
File jackOutput;
ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -342,10 +333,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,10 +360,17 @@ 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"));
@@ -378,9 +383,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 +393,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 +500,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 +540,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
@@ -647,15 +594,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 +609,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/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/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);
diff --git a/jack/rsc/jack-version.properties b/jack/rsc/jack-version.properties
new file mode 100644
index 0000000..9a505b2
--- /dev/null
+++ b/jack/rsc/jack-version.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+version-file.version.code=1
+
+version=1.1-rc4
+version.release.name=Brest
+version.release.code=2
+version.sub-release.kind=CANDIDATE
+version.sub-release.code=17
+
+# These properties are added by the release step
+# version.buildid=<BUILDID>
+# version.sha=<SHA>
diff --git a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
index 796f760..783791c 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
@@ -206,8 +206,7 @@ public class JayceFileImporter {
Resource newResource = new Resource(path, file);
for (Resource existingResource : session.getResources()) {
if (existingResource.getPath().equals(path)) {
- throw new ResourceImportConflictException(newResource.getLocation(),
- existingResource.getLocation());
+ throw new ResourceImportConflictException(existingResource, newResource.getLocation());
}
}
session.addResource(newResource);
diff --git a/jack/src/com/android/jack/resource/ResourceImportConflictException.java b/jack/src/com/android/jack/resource/ResourceImportConflictException.java
index fcac334..ff8c828 100644
--- a/jack/src/com/android/jack/resource/ResourceImportConflictException.java
+++ b/jack/src/com/android/jack/resource/ResourceImportConflictException.java
@@ -17,6 +17,7 @@
package com.android.jack.resource;
import com.android.jack.backend.jayce.ImportConflictException;
+import com.android.jack.ir.ast.Resource;
import com.android.sched.util.location.Location;
import javax.annotation.Nonnull;
@@ -31,20 +32,20 @@ public class ResourceImportConflictException extends ImportConflictException {
@Nonnull
private final Location newResourceLocation;
@Nonnull
- private final Location existingResourceLocation;
+ private final Resource existingResource;
- public ResourceImportConflictException(@Nonnull Location newResourceLocation,
- @Nonnull Location existingResourceLocation) {
+ public ResourceImportConflictException(@Nonnull Resource existingResource,
+ @Nonnull Location newResourceLocation) {
this.newResourceLocation = newResourceLocation;
- this.existingResourceLocation = existingResourceLocation;
+ this.existingResource = existingResource;
}
@Override
@Nonnull
public String getMessage() {
- return "Resource in "
+ return "Resource \'" + existingResource.getPath().getPathAsString('/') + "\' from "
+ newResourceLocation.getDescription() + " has already been imported from "
- + existingResourceLocation.getDescription()
+ + existingResource.getLocation().getDescription()
+ " (see property '" + ResourceImporter.RESOURCE_COLLISION_POLICY.getName()
+ "' for resource collision policy)";
}
diff --git a/jack/src/com/android/jack/resource/ResourceImporter.java b/jack/src/com/android/jack/resource/ResourceImporter.java
index 68e6f9b..d4a6d14 100644
--- a/jack/src/com/android/jack/resource/ResourceImporter.java
+++ b/jack/src/com/android/jack/resource/ResourceImporter.java
@@ -72,8 +72,7 @@ public class ResourceImporter extends ResourceOrMetaImporter {
for (Resource existingResource : session.getResources()) {
if (existingResource.getPath().equals(path)) {
if (resourceCollisionPolicy == CollisionPolicy.FAIL) {
- throw new ResourceImportConflictException(newResource.getLocation(),
- existingResource.getLocation());
+ throw new ResourceImportConflictException(existingResource, newResource.getLocation());
} else {
session.getUserLogger().log(Level.INFO,
"Resource in {0} has already been imported from {1}: ignoring import", new Object[] {