diff options
author | Jean-Marie Henaff <jmhenaff@google.com> | 2014-05-19 17:34:13 +0200 |
---|---|---|
committer | Jean-Marie Henaff <jmhenaff@google.com> | 2014-10-14 10:35:18 +0200 |
commit | f265ce821c48ed54ad8d00060664b55a8f8e1bb7 (patch) | |
tree | 798f4464e8669ce31fbd5bbe0a2e3404d4e47ff1 /jack-tests/tests/com/android/jack/shrob | |
parent | 706b60417fe72a4a70bc61da2f915fe3693dd0c2 (diff) | |
download | toolchain_jack-f265ce821c48ed54ad8d00060664b55a8f8e1bb7.zip toolchain_jack-f265ce821c48ed54ad8d00060664b55a8f8e1bb7.tar.gz toolchain_jack-f265ce821c48ed54ad8d00060664b55a8f8e1bb7.tar.bz2 |
WIP Use JUnit for jack-tests.
(cherry picked from commit 452cbd7d69db557ecdbbd20875a669752cf2d9d7)
Change-Id: I96a34b90c9525fa4403f6f940d6fcdf4656722ab
Diffstat (limited to 'jack-tests/tests/com/android/jack/shrob')
-rw-r--r-- | jack-tests/tests/com/android/jack/shrob/AbstractTest.java | 561 | ||||
-rw-r--r-- | jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java | 166 |
2 files changed, 727 insertions, 0 deletions
diff --git a/jack-tests/tests/com/android/jack/shrob/AbstractTest.java b/jack-tests/tests/com/android/jack/shrob/AbstractTest.java new file mode 100644 index 0000000..319abaf --- /dev/null +++ b/jack-tests/tests/com/android/jack/shrob/AbstractTest.java @@ -0,0 +1,561 @@ +/* + * Copyright (C) 2012 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.shrob; + +import com.android.jack.Main; +import com.android.jack.ProguardFlags; +import com.android.jack.TestTools; +import com.android.jack.category.KnownBugs; +import com.android.jack.category.SlowTests; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import javax.annotation.Nonnull; + +/** + * Abstract class for running shrob tests + */ +public abstract class AbstractTest { + + @BeforeClass + public static void setUpClass() { + Main.class.getClassLoader().setDefaultAssertionStatus(true); + } + + protected abstract void runTest( + @Nonnull String testNumber, + @Nonnull String flagNumber, + @Nonnull String mappingNumber) + throws Exception; + + protected ProguardFlags generateApplyMapping(@Nonnull File mappingFile) throws IOException { + File applyMapping = TestTools.createTempFile("mapping.flags", null); + BufferedWriter writer = new BufferedWriter(new FileWriter(applyMapping)); + writer.append("-applymapping "); + writer.append(mappingFile.getAbsolutePath()); + writer.close(); + return new ProguardFlags(applyMapping); + } + + protected ProguardFlags generateInjars(@Nonnull File injar) throws IOException { + File injarFlags = TestTools.createTempFile("injars", ".flags"); + BufferedWriter writer = new BufferedWriter(new FileWriter(injarFlags)); + writer.append("-injars "); + writer.append(injar.getAbsolutePath()); + writer.close(); + return new ProguardFlags(injarFlags); + } + + @Test + public void test1_001() throws Exception { + runTest("001", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_002() throws Exception { + runTest("001", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_003() throws Exception { + runTest("001", "003", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_004() throws Exception { + runTest("001", "004", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_005() throws Exception { + runTest("001", "005", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_005_002() throws Exception { + runTest("001", "005", "002"); + } + + @Test + @Category(SlowTests.class) + public void test1_005_003() throws Exception { + runTest("001", "005", "003"); + } + + @Test + @Category(SlowTests.class) + public void test1_006() throws Exception { + runTest("001", "006", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_007() throws Exception { + runTest("001", "007", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_008() throws Exception { + runTest("001", "008", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_009() throws Exception { + runTest("001", "009", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_010() throws Exception { + runTest("001", "010", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_011() throws Exception { + runTest("001", "011", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_012() throws Exception { + runTest("001", "012", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_013() throws Exception { + runTest("001", "013", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_014() throws Exception { + runTest("001", "014", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_015() throws Exception { + runTest("001", "015", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_016() throws Exception { + runTest("001", "016", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_017() throws Exception { + runTest("001", "017", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_018() throws Exception { + runTest("001", "018", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_019() throws Exception { + runTest("001", "019", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_020() throws Exception { + runTest("001", "020", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_021() throws Exception { + runTest("001", "021", ""); + } + + @Test + @Category(SlowTests.class) + public void test1_022() throws Exception { + runTest("001", "022", ""); + } + + @Test + public void test2_001() throws Exception { + runTest("002", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test2_002() throws Exception { + runTest("002", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test2_003() throws Exception { + runTest("002", "003", ""); + } + + @Test + public void test4_001() throws Exception { + runTest("004", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test4_002() throws Exception { + runTest("004", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test4_003() throws Exception { + runTest("004", "003", ""); + } + + @Test + public void test5_001() throws Exception { + runTest("005", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_002() throws Exception { + runTest("005", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_003() throws Exception { + runTest("005", "003", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_004() throws Exception { + runTest("005", "004", ""); + } + + @Test + public void test5_005() throws Exception { + runTest("005", "005", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_006() throws Exception { + runTest("005", "006", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_007() throws Exception { + runTest("005", "007", ""); + } + + @Test + @Category(SlowTests.class) + public void test5_008() throws Exception { + runTest("005", "008", ""); + } + + @Test + public void test6_001() throws Exception { + runTest("006", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test6_002() throws Exception { + runTest("006", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test6_003() throws Exception { + runTest("006", "003", ""); + } + + @Test + @Category(SlowTests.class) + public void test6_004() throws Exception { + runTest("006", "004", ""); + } + + @Test + @Category(SlowTests.class) + public void test6_005() throws Exception { + runTest("006", "005", ""); + } + + @Test + @Category(SlowTests.class) + public void test6_006() throws Exception { + runTest("006", "006", ""); + } + + @Test + public void test7_001() throws Exception { + runTest("007", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test7_002() throws Exception { + runTest("007", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test7_003() throws Exception { + runTest("007", "003", ""); + } + + @Test + public void test8_001() throws Exception { + runTest("008", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test8_002() throws Exception { + runTest("008", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test8_003() throws Exception { + runTest("008", "003", ""); + } + + @Test + @Category(SlowTests.class) + public void test8_004() throws Exception { + runTest("008", "004", ""); + } + + @Test + public void test9_001() throws Exception { + runTest("009", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test9_002() throws Exception { + runTest("009", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test9_003() throws Exception { + runTest("009", "003", ""); + } + + @Test + public void test10_001() throws Exception { + runTest("010", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test10_002() throws Exception { + runTest("010", "002", ""); + } + + @Test + @Category(SlowTests.class) + public void test10_003() throws Exception { + runTest("010", "003", ""); + } + + @Test + public void test11_001() throws Exception { + runTest("011", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test11_002() throws Exception { + runTest("011", "002", ""); + } + + @Test + public void test12_001() throws Exception { + runTest("012", "001", ""); + } + + @Test + public void test13_001() throws Exception { + runTest("013", "001", ""); + } + + @Test + public void test14_001() throws Exception { + runTest("014", "001", ""); + } + + @Test + public void test15_001() throws Exception { + runTest("015", "001", ""); + } + + @Test + public void test16_001() throws Exception { + runTest("016", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test16_002() throws Exception { + runTest("016", "002", ""); + } + + @Test + public void test17_001() throws Exception { + runTest("017", "001", ""); + } + + @Test + public void test18_001() throws Exception { + runTest("018", "001", ""); + } + + @Test + public void test19_001() throws Exception { + runTest("019", "001", ""); + } + + @Test + public void test21_001() throws Exception { + runTest("021", "001", ""); + } + + @Test + public void test22_001() throws Exception { + runTest("022", "001", ""); + } + + @Test + public void test23_001() throws Exception { + runTest("023", "001", ""); + } + + @Test + public void test25_001() throws Exception { + runTest("025", "001", ""); + } + + @Test + public void test26_001() throws Exception { + runTest("026", "001", ""); + } + + @Test + public void test29_001() throws Exception { + runTest("029", "001", ""); + } + + @Test + public void test30_001() throws Exception { + runTest("030", "001", ""); + } + + @Test + public void test31_001() throws Exception { + runTest("031", "001", ""); + } + + @Test + public void test31_002() throws Exception { + runTest("031", "002", ""); + } + + @Test + public void test32_001() throws Exception { + runTest("032", "001", ""); + } + + @Test + public void test33_001() throws Exception { + runTest("033", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test33_002() throws Exception { + runTest("033", "002", ""); + } + + @Test + public void test34_001() throws Exception { + runTest("034", "001", ""); + } + + @Test + public void test35_001() throws Exception { + runTest("035", "001", ""); + } + + @Test + public void test36_001() throws Exception { + runTest("036", "001", ""); + } + + @Test + public void test37_001() throws Exception { + runTest("037", "001", ""); + } + + @Test + public void test38_001() throws Exception { + runTest("038", "001", ""); + } + + @Test + public void test39_001() throws Exception { + runTest("039", "001", ""); + } + + @Test + @Category(SlowTests.class) + public void test40_001() throws Exception { + runTest("040", "001", ""); + } + + @Test + @Category(KnownBugs.class) + public void test41_001() throws Exception { + runTest("041", "001", ""); + } +} diff --git a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java new file mode 100644 index 0000000..26cba49 --- /dev/null +++ b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2012 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.shrob; + +import com.android.jack.Options; +import com.android.jack.category.KnownBugs; +import com.android.jack.shrob.obfuscation.NameProviderFactory; +import com.android.jack.shrob.proguard.GrammarActions; +import com.android.jack.shrob.spec.Flags; +import com.android.jack.test.comparator.ComparatorMapping; +import com.android.jack.test.helper.SourceToDexComparisonTestHelper; +import com.android.jack.test.toolchain.AbstractTestTools; +import com.android.jack.test.toolchain.DummyToolchain; +import com.android.jack.test.toolchain.JackApiToolchain; + +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import java.io.File; + +import javax.annotation.Nonnull; + +public class ObfuscationWithoutMappingTests extends AbstractTest { + + @Override + protected void runTest( + @Nonnull String testNumber, + @Nonnull String flagNumber, + @Nonnull String mappingNumber) + throws Exception { + + String testName = "shrob/test" + testNumber; + + String testPackageName = "com.android.jack.shrob.test" + testNumber; + File testFolder = AbstractTestTools.getTestRootDir(testPackageName); + + JackApiToolchain toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchain.class); + Flags flags = new Flags(); + toolchain.setShrobFlags(flags); + GrammarActions.parse("proguard.flags" + flagNumber, testFolder.getAbsolutePath(), flags); + File refFolder = new File(testFolder, "refsObfuscationWithoutMapping"); + + toolchain.addProperty(NameProviderFactory.NAMEPROVIDER.getName(), "rot13"); + toolchain.addProperty(Options.METHOD_FILTER.getName(), "supported-methods"); + + File candidateOutputMapping = AbstractTestTools.createTempFile("mapping", ".txt"); + File refOutputMapping = new File(refFolder, "expected-" + flagNumber + ".txt"); + flags.setOutputMapping(candidateOutputMapping); + flags.setPrintMapping(true); + + SourceToDexComparisonTestHelper env = + new SourceToDexComparisonTestHelper(new File(testFolder, "jack")); + + env.setCandidateTestTools(toolchain); + env.setReferenceTestTools(new DummyToolchain()); + + env.runTest(new ComparatorMapping(candidateOutputMapping, refOutputMapping)); + + // // ============================================================== + + /* + * Comment for reviewers: the following code is an attempt to use jack based toolchain. + * It works, but requires to manipulate (copy, write...) shrob flags. + * Here I added a shrob option manually, but ideally to be able to use + * a Flags like object for CLI based toochains, we must be able to dump + * the flags as a file (TBD). Plus, if flags have "-include" directives with relative + * paths, files must be in the same location. + */ + +// +// String testName = "shrob/test" + testNumber; +// File testFolder = TestTools.getJackTestFolder(testName); +// File refFolder = new File(testFolder, "refsObfuscationWithoutMapping"); +// +// JackBasedToolchain jackToolchain = AbstractTestTools.getJackBasedToolchainAsCandidate(); +// +// jackToolchain.addProperty(NameProviderFactory.NAMEPROVIDER.getName(), "rot13"); +// jackToolchain.addProperty(Options.METHOD_FILTER.getName(), "supported-methods"); +// +// File candidateOutputMapping = TestTools.createTempFile("mapping", ".txt"); +// File refOutputMapping = new File(refFolder, "expected-" + flagNumber + ".txt"); +// +// jackToolchain.getCompilationResult().proguardMappingFile = candidateOutputMapping; +// +// // TODO(jmhenaff): having to seems like a no go for JackBasedToolchain (i.e. cli) +// File candidateFlags = new File(testFolder.getAbsolutePath(), "tmp-proguard.flags" + flagNumber); +// candidateFlags.deleteOnExit(); +// appendStringToFileCopy(new File(testFolder.getAbsolutePath(), "proguard.flags" + flagNumber), +// candidateFlags, "-printmapping " + candidateOutputMapping.getAbsolutePath()); +// +// SourceToDexComparisonTestEnv env = new SourceToDexComparisonTestEnv(bootclasspath, classpath, +// TestTools.getJackTestsWithJackFolder(testName)); +// +// env.setProguardFlags(new ProguardFlags[] {new ProguardFlags(candidateFlags)}); +// +// CompilationResult compilationResult = new CompilationResult(); +// compilationResult.proguardMappingFile = refOutputMapping; +// +// env.setCandidateTestTools(jackToolchain); +// env.setReferenceTestTools(new DummyTestTools(compilationResult)); +// +// env.addComparator(env.createMappingComparator()); +// env.compare(); + + } + + @Override + @Test + @Category(KnownBugs.class) + public void test33_001() throws Exception { + super.test33_001(); + } + + @Override + @Test + @Category(KnownBugs.class) + public void test34_001() throws Exception { + super.test34_001(); + } + + @Override + @Test + @Category(KnownBugs.class) + public void test35_001() throws Exception { + super.test35_001(); + } + +// private void appendStringToFileCopy(File source, File dest, String appended) throws IOException { +// BufferedReader reader = null; +// BufferedWriter writer = null; +// try { +// reader = new BufferedReader(new FileReader(source)); +// writer = new BufferedWriter(new FileWriter(dest)); +// String line; +// while ((line = reader.readLine()) != null) { +// writer.write(line); +// writer.write("\n"); +// } +// writer.write(appended); +// } finally { +// try { +// reader.close(); +// } catch (IOException e) { +// } +// try { +// writer.close(); +// } catch (IOException e) { +// } +// } +// } + +} |