diff options
author | Colin Cross <ccross@android.com> | 2017-12-13 02:48:52 +0000 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-12-13 02:48:52 +0000 |
commit | 46216d0e61318e7af168e9e903ef8d943bb49b2e (patch) | |
tree | 0a3c2652a2f4641674611a17c5426f8b56ba21f3 /library/test/robotest/src/com/android/setupwizardlib | |
parent | ba1332d1b4dd525a2ef313246482708cb2016052 (diff) | |
download | setupwizard-46216d0e61318e7af168e9e903ef8d943bb49b2e.tar.gz |
Revert "Changes needed to upgrade to new gradle version"
This reverts commit ba1332d1b4dd525a2ef313246482708cb2016052.
Reason for revert: Broke taimen builds in master
Change-Id: Iffffadbacae8c6c69907dcecc447f958cf6ce909
Diffstat (limited to 'library/test/robotest/src/com/android/setupwizardlib')
15 files changed, 185 insertions, 11 deletions
diff --git a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java index 360dfe2..967a52e 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java @@ -54,7 +54,7 @@ import org.robolectric.Robolectric; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) public class GlifLayoutTest { private Context mContext; diff --git a/library/test/robotest/src/com/android/setupwizardlib/items/ButtonItemTest.java b/library/test/robotest/src/com/android/setupwizardlib/items/ButtonItemTest.java index 40e5da8..93b9a6d 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/items/ButtonItemTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/items/ButtonItemTest.java @@ -39,6 +39,7 @@ import android.widget.Button; import android.widget.FrameLayout; import android.widget.LinearLayout; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.items.ButtonItem.OnClickListener; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -49,7 +50,9 @@ import org.junit.runner.RunWith; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config( + constants = BuildConfig.class, + sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) public class ButtonItemTest { private ViewGroup mParent; diff --git a/library/test/robotest/src/com/android/setupwizardlib/items/ItemGroupTest.java b/library/test/robotest/src/com/android/setupwizardlib/items/ItemGroupTest.java index ecaec71..a61b750 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/items/ItemGroupTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/items/ItemGroupTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import org.junit.Before; @@ -35,7 +36,9 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config( + constants = BuildConfig.class, + sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) public class ItemGroupTest { private static final Item CHILD_1 = new EqualsItem("Child 1"); diff --git a/library/test/robotest/src/com/android/setupwizardlib/robolectric/PatchedGradleManifestFactory.java b/library/test/robotest/src/com/android/setupwizardlib/robolectric/PatchedGradleManifestFactory.java new file mode 100644 index 0000000..64c63e7 --- /dev/null +++ b/library/test/robotest/src/com/android/setupwizardlib/robolectric/PatchedGradleManifestFactory.java @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2017 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.setupwizardlib.robolectric; + +import org.robolectric.annotation.Config; +import org.robolectric.internal.GradleManifestFactory; +import org.robolectric.internal.ManifestIdentifier; +import org.robolectric.res.FileFsFile; +import org.robolectric.util.Logger; +import org.robolectric.util.ReflectionHelpers; + +import java.io.File; +import java.net.URL; + +/** + * Modified GradleManifestFactory to patch an issue where some build variants have merged + * resources under res/merged/variant/type while others have it under bundles/variant/type/res. + * + * The change is that in the .exists() checks below we check for specific folders for the build + * variant rather than checking existence at the parent directory. + */ +class PatchedGradleManifestFactory extends GradleManifestFactory { + + @Override + public ManifestIdentifier identify(Config config) { + if (config.constants() == Void.class) { + Logger.error("Field 'constants' not specified in @Config annotation"); + Logger.error("This is required when using Robolectric with Gradle!"); + throw new RuntimeException("No 'constants' field in @Config annotation!"); + } + + final String buildOutputDir = getBuildOutputDir(config); + final String type = getType(config); + final String flavor = getFlavor(config); + final String abiSplit = getAbiSplit(config); + final String packageName = config.packageName().isEmpty() + ? config.constants().getPackage().getName() + : config.packageName(); + + final FileFsFile res; + final FileFsFile assets; + final FileFsFile manifest; + + if (FileFsFile.from(buildOutputDir, "data-binding-layout-out", flavor, type).exists()) { + // Android gradle plugin 1.5.0+ puts the merged layouts in data-binding-layout-out. + // https://github.com/robolectric/robolectric/issues/2143 + res = FileFsFile.from(buildOutputDir, "data-binding-layout-out", flavor, type); + } else if (FileFsFile.from(buildOutputDir, "res", "merged", flavor, type).exists()) { + // res/merged added in Android Gradle plugin 1.3-beta1 + res = FileFsFile.from(buildOutputDir, "res", "merged", flavor, type); + } else if (FileFsFile.from(buildOutputDir, "res", flavor, type).exists()) { + res = FileFsFile.from(buildOutputDir, "res", flavor, type); + } else { + res = FileFsFile.from(buildOutputDir, "bundles", flavor, type, "res"); + } + + if (FileFsFile.from(buildOutputDir, "assets", flavor, type).exists()) { + assets = FileFsFile.from(buildOutputDir, "assets", flavor, type); + } else { + assets = FileFsFile.from(buildOutputDir, "bundles", flavor, type, "assets"); + } + + String manifestName = config.manifest(); + URL manifestUrl = getClass().getClassLoader().getResource(manifestName); + if (manifestUrl != null && manifestUrl.getProtocol().equals("file")) { + manifest = FileFsFile.from(manifestUrl.getPath()); + } else if (FileFsFile.from(buildOutputDir, "manifests", "full", flavor, abiSplit, type, + manifestName).exists()) { + manifest = FileFsFile.from( + buildOutputDir, "manifests", "full", flavor, abiSplit, type, manifestName); + } else if (FileFsFile.from(buildOutputDir, "manifests", "aapt", flavor, abiSplit, type, + manifestName).exists()) { + // Android gradle plugin 2.2.0+ can put library manifest files inside of "aapt" + // instead of "full" + manifest = FileFsFile.from(buildOutputDir, "manifests", "aapt", flavor, abiSplit, + type, manifestName); + } else { + manifest = FileFsFile.from(buildOutputDir, "bundles", flavor, abiSplit, type, + manifestName); + } + + return new ManifestIdentifier(manifest, res, assets, packageName, null); + } + + private static String getBuildOutputDir(Config config) { + return config.buildDir() + File.separator + "intermediates"; + } + + private static String getType(Config config) { + try { + return ReflectionHelpers.getStaticField(config.constants(), "BUILD_TYPE"); + } catch (Throwable e) { + return null; + } + } + + private static String getFlavor(Config config) { + try { + return ReflectionHelpers.getStaticField(config.constants(), "FLAVOR"); + } catch (Throwable e) { + return null; + } + } + + private static String getAbiSplit(Config config) { + try { + return config.abiSplit(); + } catch (Throwable e) { + return null; + } + } +} diff --git a/library/test/robotest/src/com/android/setupwizardlib/robolectric/SuwLibRobolectricTestRunner.java b/library/test/robotest/src/com/android/setupwizardlib/robolectric/SuwLibRobolectricTestRunner.java index 61baa23..509201a 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/robolectric/SuwLibRobolectricTestRunner.java +++ b/library/test/robotest/src/com/android/setupwizardlib/robolectric/SuwLibRobolectricTestRunner.java @@ -20,13 +20,42 @@ import org.junit.runner.notification.RunNotifier; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; +import org.robolectric.internal.ManifestFactory; public class SuwLibRobolectricTestRunner extends RobolectricTestRunner { + private String mModuleRootPath; + public SuwLibRobolectricTestRunner(Class<?> testClass) throws InitializationError { super(testClass); } + // Hack to determine the module root path in the build folder (e.g. out/gradle/setup-wizard-lib) + private void updateModuleRootPath(Config config) { + String moduleRoot = config.constants().getResource("").toString() + .replace("file:", "").replace("jar:", ""); + mModuleRootPath = + moduleRoot.substring(0, moduleRoot.lastIndexOf("/build")) + "/setup-wizard-lib"; + } + + /** + * Return the default config used to run Robolectric tests. + */ + @Override + protected Config buildGlobalConfig() { + Config parent = super.buildGlobalConfig(); + updateModuleRootPath(parent); + return new Config.Builder(parent) + .setBuildDir(mModuleRootPath + "/build") + .build(); + } + + @Override + protected ManifestFactory getManifestFactory(Config config) { + return new PatchedGradleManifestFactory(); + } + @Override protected void runChild(FrameworkMethod method, RunNotifier notifier) { System.out.println("===== Running " + method + " ====="); diff --git a/library/test/robotest/src/com/android/setupwizardlib/span/LinkSpanTest.java b/library/test/robotest/src/com/android/setupwizardlib/span/LinkSpanTest.java index fe72e03..f86e057 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/span/LinkSpanTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/span/LinkSpanTest.java @@ -23,12 +23,15 @@ import android.content.Context; import android.content.ContextWrapper; import android.widget.TextView; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) +@Config(constants = BuildConfig.class) public class LinkSpanTest { @Test @@ -65,7 +68,6 @@ public class LinkSpanTest { assertSame("Clicked LinkSpan should be passed to setup", linkSpan, context.clickedSpan); } - @SuppressWarnings("deprecation") private static class TestContext extends ContextWrapper implements LinkSpan.OnClickListener { public LinkSpan clickedSpan = null; diff --git a/library/test/robotest/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegateTest.java b/library/test/robotest/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegateTest.java index ec3622d..fa81dc0 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegateTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegateTest.java @@ -31,6 +31,7 @@ import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.ListView; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import org.junit.Before; @@ -41,7 +42,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) @RunWith(SuwLibRobolectricTestRunner.class) public class ListViewScrollHandlingDelegateTest { diff --git a/library/test/robotest/src/com/android/setupwizardlib/template/RequireScrollMixinTest.java b/library/test/robotest/src/com/android/setupwizardlib/template/RequireScrollMixinTest.java index c641449..8e39c43 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/template/RequireScrollMixinTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/template/RequireScrollMixinTest.java @@ -34,6 +34,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.TemplateLayout; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import com.android.setupwizardlib.template.RequireScrollMixin.OnRequireScrollStateChangedListener; @@ -47,7 +48,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) @RunWith(SuwLibRobolectricTestRunner.class) public class RequireScrollMixinTest { diff --git a/library/test/robotest/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegateTest.java b/library/test/robotest/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegateTest.java index 429445c..f77e256 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegateTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegateTest.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.robolectric.RuntimeEnvironment.application; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import com.android.setupwizardlib.view.BottomScrollView; import com.android.setupwizardlib.view.BottomScrollView.BottomScrollListener; @@ -35,7 +36,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) @RunWith(SuwLibRobolectricTestRunner.class) public class ScrollViewScrollHandlingDelegateTest { diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifDimensionTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifDimensionTest.java index c10c122..2be64e1 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifDimensionTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifDimensionTest.java @@ -26,6 +26,7 @@ import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.ContextThemeWrapper; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -35,7 +36,7 @@ import org.junit.runner.RunWith; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = Config.ALL_SDKS) +@Config(constants = BuildConfig.class, sdk = Config.ALL_SDKS) public class GlifDimensionTest { private Context mContext; diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java index 3627806..aea2c03 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java @@ -30,6 +30,7 @@ import android.support.annotation.Nullable; import android.view.ContextThemeWrapper; import android.widget.Button; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -40,7 +41,7 @@ import org.robolectric.Robolectric; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK}) +@Config(constants = BuildConfig.class, sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK}) public class GlifStyleTest { private Context mContext; diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/PartnerTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/PartnerTest.java index 683e40b..aeb678f 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/util/PartnerTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/util/PartnerTest.java @@ -37,6 +37,7 @@ import android.content.res.Resources; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import com.android.setupwizardlib.util.Partner.ResourceEntry; @@ -56,6 +57,7 @@ import java.util.Collections; @RunWith(SuwLibRobolectricTestRunner.class) @Config( + constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }, shadows = ShadowApplicationPackageManager.class) public class PartnerTest { diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java index 0d15ef4..9195de2 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java @@ -31,6 +31,7 @@ import android.provider.Settings.Global; import android.provider.Settings.Secure; import android.support.annotation.StyleRes; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -43,7 +44,7 @@ import java.util.Arrays; import java.util.List; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = Config.NEWEST_SDK) +@Config(constants = BuildConfig.class, sdk = Config.NEWEST_SDK) public class WizardManagerHelperTest { @Test diff --git a/library/test/robotest/src/com/android/setupwizardlib/view/FillContentLayoutTest.java b/library/test/robotest/src/com/android/setupwizardlib/view/FillContentLayoutTest.java index ae4f3d1..f1332c0 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/view/FillContentLayoutTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/view/FillContentLayoutTest.java @@ -22,6 +22,7 @@ import static org.robolectric.RuntimeEnvironment.application; import android.view.View; import android.view.View.MeasureSpec; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import org.junit.Test; @@ -30,7 +31,7 @@ import org.robolectric.Robolectric; import org.robolectric.annotation.Config; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK}) +@Config(constants = BuildConfig.class, sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK}) public class FillContentLayoutTest { @Test diff --git a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java index 6db8852..ddf59ca 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java @@ -31,6 +31,7 @@ import android.os.Build.VERSION_CODES; import android.support.annotation.RawRes; import android.view.Surface; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import com.android.setupwizardlib.view.IllustrationVideoViewTest.ShadowMockMediaPlayer; @@ -53,6 +54,7 @@ import org.robolectric.util.ReflectionHelpers; @RunWith(SuwLibRobolectricTestRunner.class) @Config( + constants = BuildConfig.class, sdk = Config.NEWEST_SDK, shadows = { ShadowMockMediaPlayer.class, |