diff options
| author | Jean-Marie Henaff <jmhenaff@google.com> | 2014-10-15 12:07:58 +0200 |
|---|---|---|
| committer | Jean-Marie Henaff <jmhenaff@google.com> | 2014-12-02 16:54:47 +0100 |
| commit | 8a2287c6a462fbd338086d0f3f819c4bd2469bd9 (patch) | |
| tree | 0bb7547db282ab3413000bbbdc6c448085ba5cdc /jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java | |
| parent | 4a95fec33c3822eb6a7b8c6bb8144608ae161f41 (diff) | |
| download | toolchain_jack-8a2287c6a462fbd338086d0f3f819c4bd2469bd9.tar.gz toolchain_jack-8a2287c6a462fbd338086d0f3f819c4bd2469bd9.tar.bz2 toolchain_jack-8a2287c6a462fbd338086d0f3f819c4bd2469bd9.zip | |
Use new JUnit based test framework
Bug: 18547020
Change-Id: I5d02ebdecbf79bea035ae8a042d50a06aa7c2a62
Diffstat (limited to 'jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java')
| -rw-r--r-- | jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java new file mode 100644 index 00000000..fbf946c2 --- /dev/null +++ b/jack-tests/tests/com/android/jack/withphantom/WithPhantomTests.java @@ -0,0 +1,208 @@ +/* + * 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.withphantom; + +import com.android.jack.ProguardFlags; +import com.android.jack.test.category.KnownBugs; +import com.android.jack.library.FileType; +import com.android.jack.test.toolchain.AbstractTestTools; +import com.android.jack.test.toolchain.JackBasedToolchain; + +import junit.framework.Assert; + +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import java.io.File; +import java.io.FilenameFilter; + +import javax.annotation.Nonnull; + +/** + * Test compilation involving phantoms. + */ +public class WithPhantomTests { + + @Nonnull + private static final String TEST001 = "com.android.jack.withphantom.test001"; + @Nonnull + private static final String TEST001_JACK = TEST001 + ".jack"; + @Nonnull + private static final String TEST002 = "com.android.jack.withphantom.test002"; + @Nonnull + private static final String TEST002_JACK = TEST002 + ".jack"; + + @Nonnull + private static String fixPath(@Nonnull String unixPath) { + return unixPath.replace('/', File.separatorChar); + } + + @Test + public void testPhantomOuter() throws Exception { + File tempJackFolder = AbstractTestTools.createTempDir(); + JackBasedToolchain toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.srcToLib( + AbstractTestTools.getClasspathAsString(toolchain.getDefaultBootClasspath()), + tempJackFolder, + /* 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); + + File testFolder = AbstractTestTools.getTestRootDir(TEST001); + + File tempOut1 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink1.flags")) + .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); + + File tempOut2 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink2.flags")) + .libToLib(tempJackFolder, tempOut2, /* zipFiles = */ false); + + File tempOut3 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) + .libToLib(tempJackFolder, tempOut3, /* zipFiles = */ false); + + File tempOut4 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf2.flags")) + .libToLib(tempJackFolder, tempOut4, /* zipFiles = */ false); + + File tempOut5 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.libToExe(tempJackFolder, tempOut5, /* zipFile = */ false); + } + + @Test + public void testPhantomInner() throws Exception { + File tempJackFolder = AbstractTestTools.createTempDir(); + JackBasedToolchain toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.srcToLib( + AbstractTestTools.getClasspathAsString(toolchain.getDefaultBootClasspath()), + tempJackFolder, + /* 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); + + File testFolder = AbstractTestTools.getTestRootDir(TEST001); + + File tempOut1 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink1.flags")) + .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); + + File tempOut2 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "shrink2.flags")) + .libToLib(tempJackFolder, tempOut2, /* zipFiles = */ false); + + File tempOut3 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) + .libToLib(tempJackFolder, tempOut3, /* zipFiles = */ false); + + File tempOut4 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf2.flags")) + .libToLib(tempJackFolder, tempOut4, /* zipFiles = */ false); + + File tempOutFolder = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.libToExe(tempJackFolder, tempOutFolder, /* zipFile = */ false); + } + + @Category(KnownBugs.class) + @Test + public void testPhantomLocal() throws Exception { + File tempJackFolder = AbstractTestTools.createTempDir(); + JackBasedToolchain toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.srcToLib( + AbstractTestTools.getClasspathAsString(toolchain.getDefaultBootClasspath()), + tempJackFolder, + /* 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()); + } + + File testFolder = AbstractTestTools.getTestRootDir(TEST002); + + File tempOut1 = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) + .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); + + File tempOutFolder = AbstractTestTools.createTempDir(); + toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.libToExe(tempJackFolder, tempOutFolder, /* zipFile = */ false); + } + + @Test + public void testPhantomLocalOuter() throws Exception { + File tempJackFolder = AbstractTestTools.createTempDir(); + JackBasedToolchain toolchain = + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class); + toolchain.srcToLib( + AbstractTestTools.getClasspathAsString(toolchain.getDefaultBootClasspath()), + tempJackFolder, + /* 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); + + File testFolder = AbstractTestTools.getTestRootDir(TEST002); + + File tempOut1 = AbstractTestTools.createTempDir(); + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class) + .addProguardFlags(new ProguardFlags(testFolder, "obf1.flags")) + .libToLib(tempJackFolder, tempOut1, /* zipFiles = */ false); + + File tempOutFolder = AbstractTestTools.createTempDir(); + AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class) + .libToExe(tempJackFolder, tempOutFolder, /* zipFile = */ false); + } + +} |
