From c28aa51a2c02b04968122913f1c7b40a8c14902c Mon Sep 17 00:00:00 2001 From: Christian Williams Date: Mon, 12 Sep 2016 15:33:50 -0700 Subject: [PATCH] Apparently styles can specify a parent of `"Null"`. --- .../src/main/java/org/robolectric/res/StyleResolver.java | 2 +- robolectric/src/test/java/org/robolectric/R.java | 9 +++++---- .../java/org/robolectric/shadows/ShadowThemeTest.java | 9 ++++++++- robolectric/src/test/resources/res/values/themes.xml | 3 ++- scripts/build-resources.rb | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/robolectric-resources/src/main/java/org/robolectric/res/StyleResolver.java b/robolectric-resources/src/main/java/org/robolectric/res/StyleResolver.java index 328680c15fa..332101f69e8 100644 --- a/robolectric-resources/src/main/java/org/robolectric/res/StyleResolver.java +++ b/robolectric-resources/src/main/java/org/robolectric/res/StyleResolver.java @@ -75,7 +75,7 @@ private static boolean hasParent(StyleData style) { private StyleData getParent(StyleData style) { String parent = getParentStyleName(style); - if (parent == null) return null; + if (parent == null || "Null".equals(parent)) return null; if (parent.startsWith("@")) parent = parent.substring(1); diff --git a/robolectric/src/test/java/org/robolectric/R.java b/robolectric/src/test/java/org/robolectric/R.java index 30e15c679ce..1a997c07368 100644 --- a/robolectric/src/test/java/org/robolectric/R.java +++ b/robolectric/src/test/java/org/robolectric/R.java @@ -346,11 +346,12 @@ public static final class style { public static final int Sized = 0x11007; public static final int Gastropod = 0x11008; public static final int Theme_ThirdTheme = 0x11009; - public static final int Theme_MyTheme = 0x1100a; - public static final int MyBlackTheme = 0x1100b; - public static final int MyBlueTheme = 0x1100c; + public static final int Theme_MyThemeWithEmptyParent = 0x1100a; + public static final int Theme_MyThemeWithNullStringParent = 0x1100b; + public static final int MyBlackTheme = 0x1100c; + public static final int MyBlueTheme = 0x1100d; - public static final int IndirectButtonStyle = 0x1100d; + public static final int IndirectButtonStyle = 0x1100e; } public static final class fraction { diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowThemeTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowThemeTest.java index b58e00a3bcf..daefc8d051c 100644 --- a/robolectric/src/test/java/org/robolectric/shadows/ShadowThemeTest.java +++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowThemeTest.java @@ -132,10 +132,17 @@ public class ShadowThemeTest { TestActivity activity = Robolectric.setupActivity(TestActivityWithAnotherTheme.class); Style style = shadowOf(activity.getAssets()).resolveStyle( null, - R.style.Theme_MyTheme); + R.style.Theme_MyThemeWithEmptyParent); assertThat(style.getAttrValue(new ResName("android", "attr", "background"))).isNull(); } + @Test public void whenAThemeHasNullStringParentAttr_shouldHaveNoParent() throws Exception { + TestActivity activity = Robolectric.setupActivity(TestActivityWithAnotherTheme.class); + Style style = shadowOf(activity.getAssets()).resolveStyle( + null, + R.style.Theme_MyThemeWithNullStringParent); + assertThat(style.getAttrValue(new ResName("android", "attr", "background"))).isNull(); + } @Test public void shouldApplyParentStylesFromAttrs() throws Exception { TestActivity activity = Robolectric.setupActivity(TestActivityWithAnotherTheme.class); diff --git a/robolectric/src/test/resources/res/values/themes.xml b/robolectric/src/test/resources/res/values/themes.xml index 701b86b0603..7d937f636fc 100644 --- a/robolectric/src/test/resources/res/values/themes.xml +++ b/robolectric/src/test/resources/res/values/themes.xml @@ -20,7 +20,8 @@ ?someLayoutOne -