aboutsummaryrefslogtreecommitdiff
path: root/builder/src/test
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-08-24 15:50:38 -0700
committerXavier Ducrohet <xav@android.com>2012-08-27 12:18:27 -0700
commit59917af54d258431f1c76188367326c827de6469 (patch)
tree6da374857d63a646aa1df0a2f940b6e16dd6352c /builder/src/test
parent7acd5fa2ae5ad226334d62141a7ba9cb94d083c6 (diff)
downloadbuild-59917af54d258431f1c76188367326c827de6469.tar.gz
Change the way AndroidBuilder is configured.
In order to build test apps and library apps we need to seriously change the configuration of the builder. It now receives a VariantConfiguration that contains all that is needed. If the builder builds a test app it also receives a VariantConfiguration for the tested app. This is critical for building apps that test libraries as they will embed the library. Also, the plugin now creates all tasks in afterEvaluate as it is a lot simpler to loop on all build types and product flavors. It also allow conditionally creating some tasks based on the configuration of the project flavors and build types. Made a copy of the basic testapps where the build is configured for multi-flavors. Change-Id: Ib9a70b6fa79dec6cf939e1d4bd2e75559529e820
Diffstat (limited to 'builder/src/test')
-rw-r--r--builder/src/test/java/com/android/builder/AndroidBuilderTest.java132
-rw-r--r--builder/src/test/java/com/android/builder/BuildTypeHolderMock.java74
-rw-r--r--builder/src/test/java/com/android/builder/BuildTypeTest.java4
-rw-r--r--builder/src/test/java/com/android/builder/MockSourceSet.java (renamed from builder/src/test/java/com/android/builder/samples/DefaultPathProvider.java)17
-rw-r--r--builder/src/test/java/com/android/builder/ProductFlavorHolderMock.java74
-rw-r--r--builder/src/test/java/com/android/builder/VariantConfigurationTest.java126
-rw-r--r--builder/src/test/java/com/android/builder/samples/Main.java118
7 files changed, 133 insertions, 412 deletions
diff --git a/builder/src/test/java/com/android/builder/AndroidBuilderTest.java b/builder/src/test/java/com/android/builder/AndroidBuilderTest.java
deleted file mode 100644
index f4192b3..0000000
--- a/builder/src/test/java/com/android/builder/AndroidBuilderTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2012 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.builder;
-
-import com.android.annotations.NonNull;
-import com.android.utils.ILogger;
-import com.android.utils.StdLogger;
-import junit.framework.TestCase;
-
-public class AndroidBuilderTest extends TestCase {
-
- private ProductFlavorHolder mMain;
- private ProductFlavorHolder mFlavor;
- private BuildTypeHolder mDebug;
-
- private static class AndroidBuilderMock extends AndroidBuilder {
-
- public AndroidBuilderMock(@NonNull SdkParser sdkParser, ILogger logger, boolean verboseExec) {
- super(sdkParser, logger, verboseExec);
- }
-
- AndroidBuilderMock(@NonNull SdkParser sdkParser, @NonNull ManifestParser manifestParser, @NonNull CommandLineRunner cmdLineRunner, @NonNull ILogger logger, boolean verboseExec) {
- super(sdkParser, manifestParser, cmdLineRunner, logger, verboseExec);
- }
-
- @Override
- protected void validateMainFlavor() {
- // do nothing
- }
- }
-
- private static class ManifestParserMock implements ManifestParser {
-
- private final String mPackageName;
-
- ManifestParserMock(String packageName) {
- mPackageName = packageName;
- }
-
- @Override
- public String getPackage(String manifestFile) {
- return mPackageName;
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- mMain = new ProductFlavorHolderMock(new ProductFlavor("main"));
- mFlavor = new ProductFlavorHolderMock(new ProductFlavor("flavor"));
- mDebug = new BuildTypeHolderMock(new BuildType("debug"));
- }
-
- public void testPackageOverrideNone() {
- AndroidBuilder builder = new AndroidBuilderMock(new DefaultSdkParser(""),
- new StdLogger(StdLogger.Level.ERROR), false /*verboseExec*/);
-
- builder.setBuildVariant(mMain, mDebug);
- builder.addProductFlavor(mFlavor);
-
- assertNull(builder.getPackageOverride(""));
- }
-
- public void testPackageOverridePackageFromFlavor() {
- AndroidBuilder builder = new AndroidBuilderMock(new DefaultSdkParser(""),
- new StdLogger(StdLogger.Level.ERROR), false /*verboseExec*/);
-
- mFlavor.getProductFlavor().setPackageName("foo.bar");
-
- builder.setBuildVariant(mMain, mDebug);
- builder.addProductFlavor(mFlavor);
-
- assertEquals("foo.bar", builder.getPackageOverride(""));
- }
-
- public void testPackageOverridePackageFromFlavorWithSuffix() {
- AndroidBuilder builder = new AndroidBuilderMock(new DefaultSdkParser(""),
- new StdLogger(StdLogger.Level.ERROR), false /*verboseExec*/);
-
- mFlavor.getProductFlavor().setPackageName("foo.bar");
- mDebug.getBuildType().setPackageNameSuffix(".fortytwo");
-
- builder.setBuildVariant(mMain, mDebug);
- builder.addProductFlavor(mFlavor);
-
- assertEquals("foo.bar.fortytwo", builder.getPackageOverride(""));
- }
-
- public void testPackageOverridePackageFromFlavorWithSuffix2() {
- AndroidBuilder builder = new AndroidBuilderMock(new DefaultSdkParser(""),
- new StdLogger(StdLogger.Level.ERROR), false /*verboseExec*/);
-
- mFlavor.getProductFlavor().setPackageName("foo.bar");
- mDebug.getBuildType().setPackageNameSuffix("fortytwo");
-
- builder.setBuildVariant(mMain, mDebug);
- builder.addProductFlavor(mFlavor);
-
- assertEquals("foo.bar.fortytwo", builder.getPackageOverride(""));
- }
-
- public void testPackageOverridePackageWithSuffixOnly() {
- StdLogger logger = new StdLogger(StdLogger.Level.ERROR);
-
- AndroidBuilder builder = new AndroidBuilderMock(
- new DefaultSdkParser(""),
- new ManifestParserMock("fake.package.name"),
- new CommandLineRunner(logger),
- logger,
- false /*verboseExec*/);
-
- mDebug.getBuildType().setPackageNameSuffix("fortytwo");
-
- builder.setBuildVariant(mMain, mDebug);
- builder.addProductFlavor(mFlavor);
-
- assertEquals("fake.package.name.fortytwo", builder.getPackageOverride(""));
- }
-}
diff --git a/builder/src/test/java/com/android/builder/BuildTypeHolderMock.java b/builder/src/test/java/com/android/builder/BuildTypeHolderMock.java
deleted file mode 100644
index 0e0ae48..0000000
--- a/builder/src/test/java/com/android/builder/BuildTypeHolderMock.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2012 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.builder;
-
-import java.io.File;
-import java.util.Set;
-
-class BuildTypeHolderMock implements BuildTypeHolder {
-
- private final BuildType mBuildType;
-
- BuildTypeHolderMock(BuildType buildType) {
- mBuildType = buildType;
- }
-
- @Override
- public BuildType getBuildType() {
- return mBuildType;
- }
-
- @Override
- public Set<File> getJavaSource() {
- return null;
- }
-
- @Override
- public Set<File> getJavaResources() {
- return null;
- }
-
- @Override
- public File getAndroidResources() {
- return null;
- }
-
- @Override
- public File getAndroidAssets() {
- return null;
- }
-
- @Override
- public File getAndroidManifest() {
- return null;
- }
-
- @Override
- public File getAidlSource() {
- return null;
- }
-
- @Override
- public File getRenderscriptSource() {
- return null;
- }
-
- @Override
- public File getNativeSource() {
- return null;
- }
-}
diff --git a/builder/src/test/java/com/android/builder/BuildTypeTest.java b/builder/src/test/java/com/android/builder/BuildTypeTest.java
index 1fecbb5..6bdff49 100644
--- a/builder/src/test/java/com/android/builder/BuildTypeTest.java
+++ b/builder/src/test/java/com/android/builder/BuildTypeTest.java
@@ -25,7 +25,7 @@ public class BuildTypeTest extends TestCase {
assertTrue(type.isDebuggable());
assertTrue(type.isDebugJniBuild());
- assertTrue(type.isDebugSigningKey());
+ assertTrue(type.isDebugSigned());
}
public void testRelease() {
@@ -33,6 +33,6 @@ public class BuildTypeTest extends TestCase {
assertFalse(type.isDebuggable());
assertFalse(type.isDebugJniBuild());
- assertFalse(type.isDebugSigningKey());
+ assertFalse(type.isDebugSigned());
}
}
diff --git a/builder/src/test/java/com/android/builder/samples/DefaultPathProvider.java b/builder/src/test/java/com/android/builder/MockSourceSet.java
index 874a281..6a5d15c 100644
--- a/builder/src/test/java/com/android/builder/samples/DefaultPathProvider.java
+++ b/builder/src/test/java/com/android/builder/MockSourceSet.java
@@ -14,29 +14,22 @@
* limitations under the License.
*/
-package com.android.builder.samples;
-
-import com.android.builder.PathProvider;
+package com.android.builder;
import java.io.File;
import java.util.Collections;
import java.util.Set;
/**
- * Implementation of PathProvider for testing that provides the default convention paths.
+ * Implementation of SourceSet for testing that provides the default convention paths.
*/
-public class DefaultPathProvider implements PathProvider {
-
- private final String mRoot;
+class MockSourceSet implements SourceSet {
- DefaultPathProvider(String root) {
+ public MockSourceSet(String root) {
mRoot = root;
}
- @Override
- public Set<File> getJavaSource() {
- return Collections.singleton(new File(mRoot, "java"));
- }
+ private final String mRoot;
@Override
public Set<File> getJavaResources() {
diff --git a/builder/src/test/java/com/android/builder/ProductFlavorHolderMock.java b/builder/src/test/java/com/android/builder/ProductFlavorHolderMock.java
deleted file mode 100644
index f887a14..0000000
--- a/builder/src/test/java/com/android/builder/ProductFlavorHolderMock.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2012 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.builder;
-
-import java.io.File;
-import java.util.Set;
-
-class ProductFlavorHolderMock implements ProductFlavorHolder {
-
- private final ProductFlavor mProductFlavor;
-
- ProductFlavorHolderMock(ProductFlavor productFlavor) {
- mProductFlavor = productFlavor;
- }
-
- @Override
- public ProductFlavor getProductFlavor() {
- return mProductFlavor;
- }
-
- @Override
- public Set<File> getJavaSource() {
- return null;
- }
-
- @Override
- public Set<File> getJavaResources() {
- return null;
- }
-
- @Override
- public File getAndroidResources() {
- return null;
- }
-
- @Override
- public File getAndroidAssets() {
- return null;
- }
-
- @Override
- public File getAndroidManifest() {
- return null;
- }
-
- @Override
- public File getAidlSource() {
- return null;
- }
-
- @Override
- public File getRenderscriptSource() {
- return null;
- }
-
- @Override
- public File getNativeSource() {
- return null;
- }
-}
diff --git a/builder/src/test/java/com/android/builder/VariantConfigurationTest.java b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
new file mode 100644
index 0000000..2be0a48
--- /dev/null
+++ b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2012 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.builder;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+public class VariantConfigurationTest extends TestCase {
+
+ private ProductFlavor mDefaultConfig;
+ private ProductFlavor mFlavorConfig;
+ private BuildType mBuildType;
+
+ private static class ManifestParserMock implements ManifestParser {
+
+ private final String mPackageName;
+
+ ManifestParserMock(String packageName) {
+ mPackageName = packageName;
+ }
+
+ public String getPackage(File manifestFile) {
+ return mPackageName;
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ mDefaultConfig = new ProductFlavor("main");
+ mFlavorConfig = new ProductFlavor("flavor");
+ mBuildType = new BuildType("debug");
+ }
+
+ public void testPackageOverrideNone() {
+ VariantConfiguration variant = getVariant();
+
+ assertNull(variant.getPackageOverride());
+ }
+
+ public void testPackageOverridePackageFromFlavor() {
+ mFlavorConfig.setPackageName("foo.bar");
+
+ VariantConfiguration variant = getVariant();
+
+ assertEquals("foo.bar", variant.getPackageOverride());
+ }
+
+ public void testPackageOverridePackageFromFlavorWithSuffix() {
+ mFlavorConfig.setPackageName("foo.bar");
+ mBuildType.setPackageNameSuffix(".fortytwo");
+
+ VariantConfiguration variant = getVariant();
+
+ assertEquals("foo.bar.fortytwo", variant.getPackageOverride());
+ }
+
+ public void testPackageOverridePackageFromFlavorWithSuffix2() {
+ mFlavorConfig.setPackageName("foo.bar");
+ mBuildType.setPackageNameSuffix("fortytwo");
+
+ VariantConfiguration variant = getVariant();
+
+ assertEquals("foo.bar.fortytwo", variant.getPackageOverride());
+ }
+
+ public void testPackageOverridePackageWithSuffixOnly() {
+
+ mBuildType.setPackageNameSuffix("fortytwo");
+
+ VariantConfiguration variant = getVariantWithManifestPackage("fake.package.name");
+
+ assertEquals("fake.package.name.fortytwo", variant.getPackageOverride());
+ }
+
+ private VariantConfiguration getVariant() {
+ VariantConfiguration variant = new VariantConfiguration(
+ mDefaultConfig, new MockSourceSet("main"),
+ mBuildType, new MockSourceSet("debug"),
+ VariantConfiguration.Type.DEFAULT) {
+ // don't do validation.
+ @Override
+ protected void validate() {
+
+ }
+ };
+
+ variant.addProductFlavor(mFlavorConfig, new MockSourceSet("custom"));
+
+ return variant;
+ }
+
+ private VariantConfiguration getVariantWithManifestPackage(final String packageName) {
+ VariantConfiguration variant = new VariantConfiguration(
+ mDefaultConfig, new MockSourceSet("main"),
+ mBuildType, new MockSourceSet("debug"),
+ VariantConfiguration.Type.DEFAULT) {
+ @Override
+ String getPackageFromManifest() {
+ return packageName;
+ }
+ // don't do validation.
+ @Override
+ protected void validate() {
+
+ }
+ };
+
+ variant.addProductFlavor(mFlavorConfig, new MockSourceSet("custom"));
+ return variant;
+ }
+}
diff --git a/builder/src/test/java/com/android/builder/samples/Main.java b/builder/src/test/java/com/android/builder/samples/Main.java
deleted file mode 100644
index 5cbc21a..0000000
--- a/builder/src/test/java/com/android/builder/samples/Main.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.android.builder.samples;
-
-import com.android.builder.AaptOptions;
-import com.android.builder.AndroidBuilder;
-import com.android.builder.BuildType;
-import com.android.builder.BuildTypeHolder;
-import com.android.builder.DefaultSdkParser;
-import com.android.builder.ProductFlavor;
-import com.android.builder.ProductFlavorHolder;
-import com.android.utils.StdLogger;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-
-public class Main {
-
- private static class DefaultBuildTypeHolder extends DefaultPathProvider
- implements BuildTypeHolder {
-
- private final BuildType mBuildType;
-
- DefaultBuildTypeHolder(String root, BuildType buildType) {
- super(root + File.separatorChar + "src" + File.separatorChar + buildType.getName());
- mBuildType = buildType;
- }
-
- @Override
- public BuildType getBuildType() {
- return mBuildType;
- }
- }
-
- private static class DefaultProductFlavorHolder extends DefaultPathProvider
- implements ProductFlavorHolder {
-
- private final ProductFlavor mProductFlavor;
-
- DefaultProductFlavorHolder(String root, ProductFlavor productFlavor) {
- super(root + File.separatorChar + "src" + File.separatorChar + productFlavor.getName());
- mProductFlavor = productFlavor;
- }
-
- @Override
- public ProductFlavor getProductFlavor() {
- return mProductFlavor;
- }
- }
-
- /**
- * Usage: <sdklocation> <samplelocation>
- *
- *
- * @param args
- * @throws IOException
- * @throws InterruptedException
- */
- public static void main(String[] args) throws IOException, InterruptedException {
-
- DefaultSdkParser parser = new DefaultSdkParser(args[0]);
-
- AndroidBuilder builder = new AndroidBuilder(parser,
- new StdLogger(StdLogger.Level.VERBOSE), true);
- builder.setTarget("android-15");
-
- ProductFlavor mainFlavor = new ProductFlavor("main");
- ProductFlavor customFlavor = new ProductFlavor("custom");
- BuildType debug = new BuildType(BuildType.DEBUG);
-
- customFlavor.setMinSdkVersion(15);
- customFlavor.setTargetSdkVersion(16);
-
- AaptOptions aaptOptions = new AaptOptions();
-
- String sample = args[1];
- String build = sample + File.separator + "build";
- checkFolder(build);
-
- String gen = build + File.separator + "gen";
- checkFolder(gen);
-
- String outRes = build + File.separator + "res";
- checkFolder(outRes);
-
- DefaultProductFlavorHolder mainHolder = new DefaultProductFlavorHolder(sample, mainFlavor);
- builder.setBuildVariant(
- mainHolder,
- new DefaultBuildTypeHolder(sample, debug));
- builder.addProductFlavor(new DefaultProductFlavorHolder(sample, customFlavor));
-
-
- String[] lines = new String[] {
- "public final static int A = 1;"
- };
- builder.generateBuildConfig(
- gen,
- Arrays.asList(lines));
-
- builder.preprocessResources(
- outRes);
-
- builder.processResources(
- mainHolder.getAndroidManifest().getAbsolutePath(),
- outRes,
- gen,
- build + File.separator + "foo.apk_",
- build + File.separator + "foo.proguard.txt",
- aaptOptions);
- }
-
- private static void checkFolder(String path) {
- File folder = new File(path);
- if (folder.exists() == false) {
- folder.mkdirs();
- }
- }
-
-}