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 | |
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')
26 files changed, 233 insertions, 52 deletions
diff --git a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java index d7a3c2e..5172c47 100644 --- a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java +++ b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java @@ -16,7 +16,6 @@ package com.android.setupwizardlib.view; -import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; import android.graphics.PorterDuff; @@ -31,7 +30,6 @@ import android.widget.Button; * Button for navigation bar, which includes tinting of its compound drawables to be used for dark * and light themes. */ -@SuppressLint("AppCompatCustomView") public class NavigationBarButton extends Button { public NavigationBarButton(Context context) { diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/ExpandableSwitchItemTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/ExpandableSwitchItemTest.java index 3020ed3..4fb3e28 100644 --- a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/ExpandableSwitchItemTest.java +++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/ExpandableSwitchItemTest.java @@ -32,6 +32,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -43,7 +44,7 @@ import org.robolectric.annotation.Config; import java.util.ArrayList; @RunWith(SuwLibRobolectricTestRunner.class) -@Config(sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) +@Config(constants = BuildConfig.class, sdk = { Config.OLDEST_SDK, Config.NEWEST_SDK }) public class ExpandableSwitchItemTest { private TextView mSummaryView; diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java index fa5bbba..d391d80 100644 --- a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java +++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java @@ -31,6 +31,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.R; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; @@ -39,7 +40,7 @@ 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 SwitchItemTest { private SwitchCompat mSwitch; diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java index 7a08235..43e7f03 100644 --- a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java +++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java @@ -25,6 +25,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; @@ -34,7 +35,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 DimensionConsistencyTest { // Visual height of the framework switch widget diff --git a/library/lint.xml b/library/lint.xml index 625b20d..ca22c65 100644 --- a/library/lint.xml +++ b/library/lint.xml @@ -1,11 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <lint> - <!-- SUW lib prefixes styleable resources --> - <issue id="CustomViewStyleable" severity="ignore" /> <issue id="ExtraTranslation" severity="ignore" /> <issue id="GradleDependency" severity="ignore" /> <issue id="MissingTranslation" severity="ignore" /> - <!-- Stop lint from complaining about SDK version checks in the "platform" variant --> - <issue id="ObsoleteSdkInt" severity="ignore" /> <issue id="RtlEnabled" severity="ignore" /> </lint> diff --git a/library/main/res/values/styles.xml b/library/main/res/values/styles.xml index e1e229f..0e7685b 100644 --- a/library/main/res/values/styles.xml +++ b/library/main/res/values/styles.xml @@ -32,6 +32,9 @@ <item name="suwScrollIndicators">top|bottom</item> </style> + <!-- Deprecated. Use SuwThemeGlifV2 instead --> + <style name="SuwThemeGlifPixel" parent="SuwThemeGlifV2" /> + <style name="SuwThemeGlifV2.Light" parent="SuwThemeGlif.Light"> <item name="android:colorBackground">@color/suw_glif_background_color_light</item> <item name="android:windowLightStatusBar" tools:targetApi="m">true</item> @@ -45,6 +48,9 @@ <item name="suwScrollIndicators">top|bottom</item> </style> + <!-- Deprecated. Use SuwThemeGlifV2.Light instead --> + <style name="SuwThemeGlifPixel.Light" parent="SuwThemeGlifV2.Light" /> + <style name="SuwThemeGlifV3" parent="SuwThemeGlifV2"> <item name="suwButtonColor">@color/suw_glif_v3_footer_button_color</item> </style> @@ -88,10 +94,11 @@ <item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">gravity</item> </style> - <!-- Ignore UnusedResources: Used by clients --> - <style name="TextAppearance.SuwDescription.Secondary" - parent="TextAppearance.SuwDescription" - tools:ignore="UnusedResources"> + <style name="TextAppearance.SuwDescription.Light" parent="TextAppearance.SuwDescription"> + <item name="android:fontFamily" tools:ignore="NewApi">sans-serif-light</item> + </style> + + <style name="TextAppearance.SuwDescription.Secondary" parent="TextAppearance.SuwDescription"> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> @@ -204,10 +211,7 @@ <item name="android:textAllCaps" tools:targetApi="ice_cream_sandwich">false</item> </style> - <!-- Ignore UnusedResources: used by clients --> - <style name="SuwGlifButton.Tertiary" - parent="SuwGlifButton.BaseTertiary" - tools:ignore="UnusedResources" /> + <style name="SuwGlifButton.Tertiary" parent="SuwGlifButton.BaseTertiary" /> <!-- The start and end paddings are asymmetric because start buttons are borderless buttons which aligns the text label. --> diff --git a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java index cf9ddac..f4bb8f5 100644 --- a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java +++ b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java @@ -80,12 +80,24 @@ public class WizardManagerHelper { public static final String THEME_GLIF_V2 = "glif_v2"; /** + * @deprecated Use {@link #THEME_GLIF_V2} instead. + */ + @Deprecated + public static final String THEME_GLIF_PIXEL = THEME_GLIF_V2; + + /** * Passed in a setup wizard intent as {@link #EXTRA_THEME}. This is the default theme used in * setup wizard for O DR. */ public static final String THEME_GLIF_V2_LIGHT = "glif_v2_light"; /** + * @deprecated Use {@link #THEME_GLIF_V2_LIGHT} instead. + */ + @Deprecated + public static final String THEME_GLIF_PIXEL_LIGHT = THEME_GLIF_V2_LIGHT; + + /** * Passed in a setup wizard intent as {@link #EXTRA_THEME}. This is the dark variant of the * theme used in setup wizard for P. */ diff --git a/library/platform/res/values-v23/styles.xml b/library/platform/res/values-v23/styles.xml index 26ab230..aaccd17 100644 --- a/library/platform/res/values-v23/styles.xml +++ b/library/platform/res/values-v23/styles.xml @@ -35,7 +35,7 @@ <item name="android:listPreferredItemPaddingStart">?attr/suwMarginSides</item> <item name="android:navigationBarColor">@android:color/black</item> <item name="android:statusBarColor">@android:color/black</item> - <item name="android:textAppearanceListItemSmall">@style/TextAppearance.SuwItemSummary</item> + <item name="android:textAppearanceListItemSmall">@android:style/TextAppearance.Material.Body1</item> <item name="android:textColorLink">@color/suw_link_color_dark</item> <item name="android:windowAnimationStyle">@style/Animation.SuwWindowAnimation</item> <item name="android:windowDisablePreview">true</item> @@ -65,7 +65,7 @@ <item name="android:listPreferredItemPaddingStart">?attr/suwMarginSides</item> <item name="android:navigationBarColor">@android:color/black</item> <item name="android:statusBarColor">@android:color/black</item> - <item name="android:textAppearanceListItemSmall">@style/TextAppearance.SuwItemSummary</item> + <item name="android:textAppearanceListItemSmall">@android:style/TextAppearance.Material.Body1</item> <item name="android:textColorLink">@color/suw_link_color_light</item> <item name="android:windowAnimationStyle">@style/Animation.SuwWindowAnimation</item> <item name="android:windowDisablePreview">true</item> diff --git a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java index 5912f7f..b509389 100644 --- a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java +++ b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java @@ -27,6 +27,7 @@ import static org.robolectric.RuntimeEnvironment.application; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.OnScrollListener; +import com.android.setupwizardlib.BuildConfig; import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; import org.junit.Before; @@ -37,7 +38,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 RecyclerViewScrollHandlingDelegateTest { diff --git a/library/rules.gradle b/library/rules.gradle index f5face8..6b0acce 100644 --- a/library/rules.gradle +++ b/library/rules.gradle @@ -21,12 +21,9 @@ android { res.srcDirs = ['main/res'] } - flavorDimensions 'compat' - productFlavors { // Platform version that will not include the compatibility libraries platform { - dimension 'compat' minSdkVersion 23 dependencies { @@ -46,17 +43,16 @@ android { // deps = ['project-name': 'com.example.group:project-name:1.0.0'] // } // - platformImplementation deps['support-annotations'] + platformCompile deps['support-annotations'] } } // Provides backwards compatibility for Gingerbread or above, using support libraries. gingerbreadCompat { - dimension 'compat' minSdkVersion 9 dependencies { - gingerbreadCompatImplementation deps['support-appcompat-v7'] - gingerbreadCompatImplementation deps['support-recyclerview-v7'] + gingerbreadCompatCompile deps['support-appcompat-v7'] + gingerbreadCompatCompile deps['support-recyclerview-v7'] } } } diff --git a/library/self.gradle b/library/self.gradle index a3e5334..69f9654 100644 --- a/library/self.gradle +++ b/library/self.gradle @@ -13,12 +13,12 @@ android.sourceSets { res.srcDirs = ['test/instrumentation/res'] dependencies { - androidTestImplementation 'com.android.support.test:rules:0.5' - androidTestImplementation 'com.android.support.test:runner:0.5' - androidTestImplementation 'com.google.dexmaker:dexmaker:1.2' - androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' - androidTestImplementation 'junit:junit:4.+' - androidTestImplementation 'org.mockito:mockito-core:1.9.5' + androidTestCompile 'com.android.support.test:rules:0.5' + androidTestCompile 'com.android.support.test:runner:0.5' + androidTestCompile 'com.google.dexmaker:dexmaker:1.2' + androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' + androidTestCompile 'junit:junit:4.+' + androidTestCompile 'org.mockito:mockito-core:1.9.5' } } @@ -38,12 +38,12 @@ android.sourceSets { java.srcDirs = ['test/robotest/src'] dependencies { - testImplementation 'org.robolectric:robolectric:3.4.2' - testImplementation 'org.robolectric:framework:3.4.2' - testImplementation 'junit:junit:4.+' - testImplementation 'org.mockito:mockito-core:1.9.5' + testCompile 'org.robolectric:robolectric:3.4.2' + testCompile 'org.robolectric:framework:3.4.2' + testCompile 'junit:junit:4.+' + testCompile 'org.mockito:mockito-core:1.9.5' // Workaround for https://github.com/robolectric/robolectric/issues/2566 - testImplementation 'org.khronos:opengl-api:gl1.1-android-2.1_r1' + testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1' } } @@ -51,9 +51,6 @@ android.sourceSets { java.srcDirs = ['gingerbread/test/robotest/src', 'recyclerview/test/robotest/src'] } } - -android.testOptions.unitTests.includeAndroidResources = true - android.defaultConfig.testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" android.lintOptions { abortOnError true 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, |