Fix support for local jars in library projects.
[android/platform/tools/build.git] / gradle / src / build-test / groovy / com / android / build / gradle / AutomatedBuildTest.java
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.build.gradle;
18
19 import junit.framework.Test;
20 import junit.framework.TestSuite;
21
22 /**
23  * Automated tests building a set of projects using a set of gradle versions.
24  *
25  * This requires an SDK, found through the ANDROID_HOME environment variable or present in the
26  * Android Source tree under out/host/<platform>/sdk/... (result of 'make sdk')
27  */
28 public class AutomatedBuildTest extends BuildTest {
29
30     private String projectName;
31     private String gradleVersion;
32     private TestType testType;
33
34     private static enum TestType { BUILD, REPORT };
35
36     private static final String[] sBuiltProjects = new String[] {
37             "aidl", "api", "applibtest", "assets", "basic", "dependencies", "flavored",
38             "flavorlib", "flavors", "libsTest", "localJars", "migrated", "multiproject", "multires",
39             "overlay1", "overlay2", "renderscript", "renderscriptInLib", "renderscriptMultiSrc",
40             "tictactoe"
41     };
42
43     private static final String[] sReportProjects = new String[] {
44             "basic", "flavorlib"
45     };
46
47     public static Test suite() {
48         TestSuite suite = new TestSuite();
49         suite.setName("AutomatedBuildTest");
50
51         for (String gradleVersion : BasePlugin.GRADLE_SUPPORTED_VERSIONS) {
52             // first the project we build on all available versions of Gradle
53             for (String projectName : sBuiltProjects) {
54                 String testName = "build_" + projectName + "_" + gradleVersion;
55
56                 AutomatedBuildTest test = (AutomatedBuildTest) TestSuite.createTest(
57                         AutomatedBuildTest.class, testName);
58                 test.setProjectInfo(projectName, gradleVersion, TestType.BUILD);
59                 suite.addTest(test);
60             }
61
62             // then the project to run reports on
63             for (String projectName : sReportProjects) {
64                 String testName = "report_" + projectName + "_" + gradleVersion;
65
66                 AutomatedBuildTest test = (AutomatedBuildTest) TestSuite.createTest(
67                         AutomatedBuildTest.class, testName);
68                 test.setProjectInfo(projectName, gradleVersion, TestType.REPORT);
69                 suite.addTest(test);
70             }
71         }
72
73         return suite;
74     }
75
76     private void setProjectInfo(String projectName, String gradleVersion, TestType testType) {
77         this.projectName = projectName;
78         this.gradleVersion = gradleVersion;
79         this.testType = testType;
80     }
81
82     @Override
83     protected void runTest() throws Throwable {
84         if (testType == TestType.BUILD) {
85             buildProject(projectName, gradleVersion);
86         } else if (testType == TestType.REPORT) {
87             runTasksOn(projectName, gradleVersion, "androidDependencies", "signingReport");
88         }
89     }
90 }