blob: b7fcc983fc0d83ee08e0122a3e40cfbdd0d6363e [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.build.gradle;
import junit.framework.Test;
import junit.framework.TestSuite;
/**
* Automated tests building a set of projects using a set of gradle versions.
*
* This requires an SDK, found through the ANDROID_HOME environment variable or present in the
* Android Source tree under out/host/<platform>/sdk/... (result of 'make sdk')
*/
public class AutomatedBuildTest extends BuildTest {
private String projectName;
private String gradleVersion;
private TestType testType;
private static enum TestType { BUILD, REPORT }
private static final String[] sBuiltProjects = new String[] {
"aidl", "api", "applibtest", "assets", "attrOrder", "basic", "dependencies",
"dependencyChecker", "flavored", "flavorlib", "flavors", "libProguardJarDep",
"libProguardLibDep", "libTestDep", "libsTest", "localJars", "migrated", "multiproject",
"multires", "ndkSanAngeles", "overlay1", "overlay2", "pkgOverride", "proguard",
"proguardLib", "renderscript", "renderscriptInLib", "renderscriptMultiSrc",
"rsSupportMode", "sameNamedLibs", "tictactoe" /*, "autorepo"*/
};
private static final String[] sReportProjects = new String[] {
"basic", "flavorlib"
};
public static Test suite() {
TestSuite suite = new TestSuite();
suite.setName("AutomatedBuildTest");
for (String gradleVersion : BasePlugin.GRADLE_SUPPORTED_VERSIONS) {
if (isIgnoredGradleVersion(gradleVersion)) {
continue;
}
// first the project we build on all available versions of Gradle
for (String projectName : sBuiltProjects) {
String testName = "build_" + projectName + "_" + gradleVersion;
AutomatedBuildTest test = (AutomatedBuildTest) TestSuite.createTest(
AutomatedBuildTest.class, testName);
test.setProjectInfo(projectName, gradleVersion, TestType.BUILD);
suite.addTest(test);
}
// then the project to run reports on
for (String projectName : sReportProjects) {
String testName = "report_" + projectName + "_" + gradleVersion;
AutomatedBuildTest test = (AutomatedBuildTest) TestSuite.createTest(
AutomatedBuildTest.class, testName);
test.setProjectInfo(projectName, gradleVersion, TestType.REPORT);
suite.addTest(test);
}
}
return suite;
}
private void setProjectInfo(String projectName, String gradleVersion, TestType testType) {
this.projectName = projectName;
this.gradleVersion = gradleVersion;
this.testType = testType;
}
@Override
protected void runTest() throws Throwable {
if (testType == TestType.BUILD) {
buildProject(projectName, gradleVersion);
} else if (testType == TestType.REPORT) {
runTasksOn(projectName, gradleVersion, "androidDependencies", "signingReport");
}
}
}