blob: 5fd70fb09dd64c46649319c55c9ddcc055d94405 [file] [log] [blame]
/*
* Copyright (C) 2013 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.toolchain;
import com.android.jack.ProguardFlags;
import com.android.jack.Sourcelist;
import com.android.jack.TestTools;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.AndroidToolchain;
import com.android.jack.test.toolchain.Toolchain.SourceLevel;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Tests that test different steps of the Jack toolchain.
* These tests only rely on the Android tree for source lists.
* They are supposed to be run in test-jack (ideally before each commit).
*/
@Ignore("Tree")
public class ToolchainTest {
private static Sourcelist CORE_SOURCELIST;
private static Sourcelist BOUNCY_SOURCELIST;
private static Sourcelist JUNIT_SOURCELIST;
private static File coreOut;
@BeforeClass
public static void setup() throws Exception {
CORE_SOURCELIST = TestTools.getTargetLibSourcelist("core-libart");
BOUNCY_SOURCELIST =
TestTools.getTargetLibSourcelist("bouncycastle");
JUNIT_SOURCELIST = TestTools.getHostLibSourcelist("junit4-hostdex-jack");
coreOut = AbstractTestTools.createTempFile("core", ".jack");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.setSourceLevel(SourceLevel.JAVA_7);
toolchain.srcToLib(coreOut, /* zipFiles = */ true, CORE_SOURCELIST);
}
@Test
public void shrobTestNoZip() throws Exception {
File shrobTestJackOut = AbstractTestTools.createTempDir();
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.shrob.test001");
File sourceDir = new File(testFolder, "jack");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.srcToLib(shrobTestJackOut, /* zipFiles = */ false, sourceDir);
File shrobTestShrunkOut = AbstractTestTools.createTempDir();
List<ProguardFlags> flagFiles = new ArrayList<ProguardFlags>();
flagFiles.add(new ProguardFlags(testFolder, "proguard.flags001"));
flagFiles.add(new ProguardFlags(testFolder, "proguard.flags004"));
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToLib(shrobTestJackOut, shrobTestShrunkOut, /* zipFiles = */ false);
File shrobTestDexOutFolder = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(shrobTestShrunkOut, shrobTestDexOutFolder, /* zipFile = */ false);
}
@Test
public void shrobTestZip() throws Exception {
File shrobTestJackOut = AbstractTestTools.createTempFile("shrobtest", ".jack");
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.shrob.test001");
File sourceDir = new File(testFolder, "jack");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.srcToLib(shrobTestJackOut, /* zipFiles = */ true, sourceDir);
File shrobTestShrunkOut = AbstractTestTools.createTempFile("shrunk", ".jack");
List<ProguardFlags> flagFiles = new ArrayList<ProguardFlags>();
flagFiles.add(new ProguardFlags(testFolder, "proguard.flags001"));
flagFiles.add(new ProguardFlags(testFolder, "proguard.flags004"));
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToLib(shrobTestJackOut, shrobTestShrunkOut, /* zipFiles = */ true);
File shrobTestDexOut = AbstractTestTools.createTempFile("shrobbed", ".dex.zip");
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(shrobTestShrunkOut, shrobTestDexOut, /* zipFile = */ true);
}
@Test
public void bouncyCastle() throws Exception {
File bouncyCastleJack = AbstractTestTools.createTempFile("bouncyjack", ".jack");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.srcToLib(bouncyCastleJack, /* zipFiles = */ true, BOUNCY_SOURCELIST);
File bouncyCastleOutFolder = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(bouncyCastleJack, bouncyCastleOutFolder, /* zipFile = */ false);
}
@Test
public void core() throws Exception {
File coreOutFolder = AbstractTestTools.createTempDir();
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(coreOut, coreOutFolder, /* zipFile = */ false);
}
@Test
public void junit() throws Exception {
File junitJack = AbstractTestTools.createTempFile("junit", ".zip");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.addToClasspath(TestTools.getFromAndroidTree(
"out/host/common/obj/JAVA_LIBRARIES/hamcrest-core-hostdex-jack_intermediates/classes.jack"))
.srcToLib(junitJack, /* zipFiles = */ true, JUNIT_SOURCELIST);
File junitOutFolder = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(junitJack, junitOutFolder, /* zipFile = */ false);
}
@Test
public void jarjarTest() throws Exception {
File jarjarTestJackOut = AbstractTestTools.createTempFile("jarjartest", ".jack");
File testFolder = AbstractTestTools.getTestRootDir("com.android.jack.jarjar.test003");
File sourceDir = new File(testFolder, "jack");
AndroidToolchain toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.srcToLib(jarjarTestJackOut, /* zipFiles = */ true, sourceDir);
File dalvikAnnotations = TestTools.getFromAndroidTree("libcore/dalvik/src/main/java/");
File dalvikAnnotationsJackOut = AbstractTestTools.createTempFile("dalvikannotations", ".jack");
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.addToClasspath(coreOut)
.srcToLib(dalvikAnnotationsJackOut, /* zipFiles = */ true, dalvikAnnotations);
File jarjarTestRenamedOut = AbstractTestTools.createTempFile("jarjartestrenamed", ".jack");
File jarjarRules = new File(testFolder, "jarjar-rules.txt");
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.setJarjarRules(Collections.singletonList(jarjarRules));
toolchain.libToLib(jarjarTestJackOut, jarjarTestRenamedOut, /* zipFiles = */ true);
File jarjarTestDexOutFolder = AbstractTestTools.createTempDir();
toolchain = AbstractTestTools.getCandidateToolchain(AndroidToolchain.class);
toolchain.libToExe(jarjarTestRenamedOut, jarjarTestDexOutFolder, /* zipFile = */ false);
}
}