diff options
5 files changed, 85 insertions, 0 deletions
diff --git a/jack-tests/tests/com/android/jack/resource/test003/info.txt b/jack-tests/tests/com/android/jack/resource/test003/info.txt new file mode 100644 index 00000000..b8bf2e41 --- /dev/null +++ b/jack-tests/tests/com/android/jack/resource/test003/info.txt @@ -0,0 +1 @@ +This test contains resource files containing class names.
\ No newline at end of file diff --git a/jack-tests/tests/com/android/jack/resource/test003/jack/A.java b/jack-tests/tests/com/android/jack/resource/test003/jack/A.java new file mode 100644 index 00000000..b14ee511 --- /dev/null +++ b/jack-tests/tests/com/android/jack/resource/test003/jack/A.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.jack.resource.test003.jack; + +public class A { + +} diff --git a/jack-tests/tests/com/android/jack/resource/test003/jack/A.txt b/jack-tests/tests/com/android/jack/resource/test003/jack/A.txt new file mode 100644 index 00000000..84c7e59a --- /dev/null +++ b/jack-tests/tests/com/android/jack/resource/test003/jack/A.txt @@ -0,0 +1,11 @@ +com.android.jack.shrob.test003.jack.A +Lcom.android.jack.shrob.test003.jack.A; +com/android/jack/shrob/test003/jack/A +Lcom/android/jack/shrob/test003/jack/A; +A +fddfcom.android.jack.shrob.test003.jack.A +fgjgLcom.android.jack.shrob.test003.jack.A; +sddtcom/android/jack/shrob/test003/jack/A +fdhdhLcom/android/jack/shrob/test003/jack/A; +estsrtA + com.android.jack.shrob.test003.jack.A Lcom.android.jack.shrob.test003.jack.A; com/android/jack/shrob/test003/jack/A Lcom/android/jack/shrob/test003/jack/A; A
\ No newline at end of file diff --git a/jack-tests/tests/com/android/jack/resource/test003/proguard.flags001 b/jack-tests/tests/com/android/jack/resource/test003/proguard.flags001 new file mode 100644 index 00000000..5dac7acb --- /dev/null +++ b/jack-tests/tests/com/android/jack/resource/test003/proguard.flags001 @@ -0,0 +1,5 @@ +-keep,allowobfuscation class * { + *; +} +-adaptresourcefilenames +-adaptresourcefilecontents
\ No newline at end of file diff --git a/jack/tests/com/android/jack/ResourceTest.java b/jack/tests/com/android/jack/ResourceTest.java index 5c4cc200..f7232c24 100644 --- a/jack/tests/com/android/jack/ResourceTest.java +++ b/jack/tests/com/android/jack/ResourceTest.java @@ -16,12 +16,14 @@ package com.android.jack; +import com.android.jack.category.KnownBugs; import com.android.jack.util.BytesStreamSucker; import junit.framework.Assert; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.experimental.categories.Category; import java.io.BufferedReader; import java.io.File; @@ -220,6 +222,51 @@ public class ResourceTest { checkResourceContent(shrobbedJackDir, RESOURCE4_LONGPATH, "Res4"); } + @Test + @Category(KnownBugs.class) + public void testResourceContentAdaptation() throws Exception { + /// compile source file to a Jack dir + File jackOutputFolder = TestTools.createTempDir("tempjack", "dir"); + String testName = "resource/test003"; + File testFolder = TestTools.getJackTestFolder(testName); + File jackTestFolder = TestTools.getJackTestsWithJackFolder(testName); + TestTools.compileSourceToJack(new Options(), testFolder, TestTools.getDefaultBootclasspathString(), + jackOutputFolder, false /* non-zipped */); + + String resource1LongPath = "com/android/jack/resource/test003/jack/A"; + String resource2LongPath = "com/android/jack/resource/test003/jack/A.txt"; + + // add resources to Jack dir + copyFileToDir(new File(jackTestFolder, "A.txt"), resource1LongPath, jackOutputFolder); + copyFileToDir(new File(jackTestFolder, "A.txt"), resource2LongPath, jackOutputFolder); + + // run shrobbing from Jack dir to Jack dir + Options options = new Options(); + options.nameProvider = "rot13"; + File shrobbedJackDir = TestTools.createTempDir("shrobbedJack", "dir"); + ProguardFlags flags = new ProguardFlags(new File(testFolder, "proguard.flags001")); + TestTools.shrobJackToJack(options, + jackOutputFolder, + TestTools.getDefaultBootclasspathString(), + shrobbedJackDir, + Collections.singletonList(flags), + false /* non-zipped */); + + // check that resources are contained in Jack dir + String expected = "pbz.naqebvq.wnpx.fuebo.grfg003.wnpx.N\n" + + "Lcom.android.jack.shrob.test003.jack.A;\n" + + "com/android/jack/shrob/test003/jack/A\n" + + "Lcom/android/jack/shrob/test003/jack/A;\n" + "A\n" + + "fddfcom.android.jack.shrob.test003.jack.A" + + "fgjgLcom.android.jack.shrob.test003.jack.A;" + + "sddtcom/android/jack/shrob/test003/jack/A\n" + + "fdhdhLcom/android/jack/shrob/test003/jack/A;\n" + "estsrtA\n" + + " pbz.naqebvq.wnpx.fuebo.grfg003.wnpx.N Lcom.android.jack.shrob.test003.jack.A; " + + "com/android/jack/shrob/test003/jack/A Lcom/android/jack/shrob/test003/jack/A; A"; + checkResourceContent(shrobbedJackDir, "pbz/naqebvq/wnpx/erfbhepr/grfg003/wnpx/A", expected); + checkResourceContent(shrobbedJackDir, "pbz/naqebvq/wnpx/erfbhepr/grfg003/wnpx/N.txt", expected); + } + @Nonnull private File createJackArchiveWithResources() throws Exception { // compile source file to a Jack file |