Fix support for local jars in library projects.
[android/platform/tools/build.git] / builder / src / test / java / com / android / builder / VariantConfigurationTest.java
1 /*
2  * Copyright (C) 2012 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.builder;
18
19 import com.android.annotations.NonNull;
20 import junit.framework.TestCase;
21
22 import java.io.File;
23
24 public class VariantConfigurationTest extends TestCase {
25
26     private ProductFlavor mDefaultConfig;
27     private ProductFlavor mFlavorConfig;
28     private BuildType mBuildType;
29
30     private static class ManifestParserMock implements ManifestParser {
31
32         private final String mPackageName;
33
34         ManifestParserMock(String packageName) {
35             mPackageName = packageName;
36         }
37
38         @Override
39         public String getPackage(File manifestFile) {
40             return mPackageName;
41         }
42
43         @Override
44         public int getMinSdkVersion(@NonNull File manifestFile) {
45             return 0;
46         }
47
48         @Override
49         public String getVersionName(File manifestFile) {
50             return "1.0";
51         }
52     }
53
54     @Override
55     protected void setUp() throws Exception {
56         mDefaultConfig = new ProductFlavor("main");
57         mFlavorConfig = new ProductFlavor("flavor");
58         mBuildType = new BuildType("debug");
59     }
60
61     public void testPackageOverrideNone() {
62         VariantConfiguration variant = getVariant();
63
64         assertNull(variant.getPackageOverride());
65     }
66
67     public void testPackageOverridePackageFromFlavor() {
68         mFlavorConfig.setPackageName("foo.bar");
69
70         VariantConfiguration variant = getVariant();
71
72         assertEquals("foo.bar", variant.getPackageOverride());
73     }
74
75     public void testPackageOverridePackageFromFlavorWithSuffix() {
76         mFlavorConfig.setPackageName("foo.bar");
77         mBuildType.setPackageNameSuffix(".fortytwo");
78
79         VariantConfiguration variant = getVariant();
80
81         assertEquals("foo.bar.fortytwo", variant.getPackageOverride());
82     }
83
84     public void testPackageOverridePackageFromFlavorWithSuffix2() {
85         mFlavorConfig.setPackageName("foo.bar");
86         mBuildType.setPackageNameSuffix("fortytwo");
87
88         VariantConfiguration variant = getVariant();
89
90         assertEquals("foo.bar.fortytwo", variant.getPackageOverride());
91     }
92
93     public void testPackageOverridePackageWithSuffixOnly() {
94
95         mBuildType.setPackageNameSuffix("fortytwo");
96
97         VariantConfiguration variant = getVariantWithManifestPackage("fake.package.name");
98
99         assertEquals("fake.package.name.fortytwo", variant.getPackageOverride());
100     }
101
102     public void testVersionNameFromFlavorWithSuffix() {
103         mFlavorConfig.setVersionName("1.0");
104         mBuildType.setVersionNameSuffix("-DEBUG");
105
106         VariantConfiguration variant = getVariant();
107
108         assertEquals("1.0-DEBUG", variant.getVersionName());
109     }
110
111     public void testVersionNameWithSuffixOnly() {
112         mBuildType.setVersionNameSuffix("-DEBUG");
113
114         VariantConfiguration variant = getVariantWithManifestVersion("2.0b1");
115
116         assertEquals("2.0b1-DEBUG", variant.getVersionName());
117     }
118
119     private VariantConfiguration getVariant() {
120         VariantConfiguration variant = new VariantConfiguration(
121                 mDefaultConfig, new MockSourceProvider("main"),
122                 mBuildType, new MockSourceProvider("debug"),
123                 VariantConfiguration.Type.DEFAULT, "test") {
124             // don't do validation.
125             @Override
126             protected void validate() {
127
128             }
129         };
130
131         variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
132
133         return variant;
134     }
135
136     private VariantConfiguration getVariantWithManifestPackage(final String packageName) {
137         VariantConfiguration variant = new VariantConfiguration(
138                 mDefaultConfig, new MockSourceProvider("main"),
139                 mBuildType, new MockSourceProvider("debug"),
140                 VariantConfiguration.Type.DEFAULT, "test") {
141             @Override
142             public String getPackageFromManifest() {
143                 return packageName;
144             }
145             // don't do validation.
146             @Override
147             protected void validate() {
148
149             }
150         };
151
152         variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
153         return variant;
154     }
155
156     private VariantConfiguration getVariantWithManifestVersion(final String versionName) {
157         VariantConfiguration variant = new VariantConfiguration(
158                 mDefaultConfig, new MockSourceProvider("main"),
159                 mBuildType, new MockSourceProvider("debug"),
160                 VariantConfiguration.Type.DEFAULT, "test") {
161             @Override
162             public String getVersionNameFromManifest() {
163                 return versionName;
164             }
165             // don't do validation.
166             @Override
167             protected void validate() {
168
169             }
170         };
171
172         variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
173         return variant;
174     }
175 }