Skip to content

Commit 2854d87

Browse files
committed
Upgrade to Robolectric 3.1
1 parent 4d5ca6e commit 2854d87

8 files changed

Lines changed: 15 additions & 175 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,50 +0,0 @@
1-
/**
2-
* Copyright (C) 2010-2016 eBusiness Information, Excilys Group
3-
*
4-
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5-
* use this file except in compliance with the License. You may obtain a copy of
6-
* 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, WITHOUT
12-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13-
* License for the specific language governing permissions and limitations under
14-
* the License.
15-
*/
16-
package org.androidannotations.test;
17-
18-
import static org.robolectric.internal.Shadow.directlyOn;
19-
20-
import java.util.Arrays;
21-
22-
import org.robolectric.annotation.Implementation;
23-
import org.robolectric.annotation.Implements;
24-
import org.robolectric.annotation.RealObject;
25-
import org.robolectric.shadows.ShadowBundle;
26-
import org.robolectric.util.ReflectionHelpers;
27-
28-
import android.os.Bundle;
29-
import android.os.Parcelable;
30-
31-
/***
32-
* Workaround for https://github.com/robolectric/robolectric/issues/1440
33-
*/
34-
@Implements(Bundle.class)
35-
public class CustomShadowBundle extends ShadowBundle {
36-
37-
@RealObject
38-
private Bundle realObject;
39-
40-
@Implementation
41-
public Parcelable[] getParcelableArray(String key) {
42-
Parcelable[] array = directlyOn(realObject, Bundle.class, "getParcelableArray", new ReflectionHelpers.ClassParameter<String>(String.class, key));
43-
44-
if (array == null) {
45-
return null;
46-
}
47-
48-
return Arrays.copyOf(array, array.length, Parcelable[].class);
49-
}
50-
}

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/FragmentArgsTest.java‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@
2020
import org.junit.Test;
2121
import org.junit.runner.RunWith;
2222
import org.robolectric.RobolectricTestRunner;
23-
import org.robolectric.annotation.Config;
2423

2524
import android.os.Bundle;
2625

27-
@Config(shadows = CustomShadowBundle.class)
2826
@RunWith(RobolectricTestRunner.class)
2927
public class FragmentArgsTest {
3028

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/GenericFragmentArgsTest.java‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@
2424
import org.junit.Test;
2525
import org.junit.runner.RunWith;
2626
import org.robolectric.RobolectricTestRunner;
27-
import org.robolectric.annotation.Config;
2827

2928
import android.accounts.Account;
3029
import android.os.Bundle;
3130

32-
@Config(shadows = CustomShadowBundle.class)
3331
@RunWith(RobolectricTestRunner.class)
3432
public class GenericFragmentArgsTest {
3533

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/InjectExtraTest.java‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@
2626
import org.junit.runner.RunWith;
2727
import org.robolectric.Robolectric;
2828
import org.robolectric.RobolectricTestRunner;
29-
import org.robolectric.annotation.Config;
3029
import org.robolectric.util.ActivityController;
3130

3231
import android.app.Activity;
3332
import android.content.Context;
3433

35-
@Config(shadows = CustomShadowBundle.class)
3634
@RunWith(RobolectricTestRunner.class)
3735
public class InjectExtraTest {
3836

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/instancestate/SaveInstanceStateActivityParameterizedTest.java‎

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,16 @@
2222
import java.util.Arrays;
2323
import java.util.Collection;
2424

25-
import org.androidannotations.test.CustomShadowBundle;
2625
import org.fest.util.Lists;
27-
import org.junit.Ignore;
2826
import org.junit.Test;
2927
import org.junit.runner.RunWith;
28+
import org.robolectric.ParameterizedRobolectricTestRunner;
3029
import org.robolectric.ParameterizedRobolectricTestRunner.Parameters;
31-
import org.robolectric.ParameterizedRobolectricTestRunnerWorkaround;
3230
import org.robolectric.Robolectric;
33-
import org.robolectric.annotation.Config;
3431

3532
import android.os.Bundle;
3633

37-
@Ignore
38-
@Config(shadows = CustomShadowBundle.class)
39-
@RunWith(ParameterizedRobolectricTestRunnerWorkaround.class)
34+
@RunWith(ParameterizedRobolectricTestRunner.class)
4035
public class SaveInstanceStateActivityParameterizedTest {
4136

4237
@Parameters(name = "{0}")

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/trace/TracedActivityTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public void noReturnStringAndIntArrayParam() {
118118
public void noReturnIntentParam() {
119119
activity.noReturnIntentParam(new Intent("TEST", Uri.parse("http://www.androidannotations.org")));
120120

121-
assertTrue(logContains("Entering [void noReturnIntentParam(param = Intent{action=TEST, extras=Bundle[{}], data=http://www.androidannotations.org})]"));
121+
assertTrue(logContains("Entering [void noReturnIntentParam(param = Intent { act=TEST dat=http://www.androidannotations.org })]"));
122122
assertTrue(logContains("Exiting [void noReturnIntentParam(Intent)], duration in ms: "));
123123
}
124124

Original file line numberDiff line numberDiff line change
@@ -1,110 +0,0 @@
1-
/**
2-
* Copyright (C) 2010-2016 eBusiness Information, Excilys Group
3-
*
4-
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5-
* use this file except in compliance with the License. You may obtain a copy of
6-
* 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, WITHOUT
12-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13-
* License for the specific language governing permissions and limitations under
14-
* the License.
15-
*/
16-
package org.robolectric;
17-
18-
import static org.fest.reflect.core.Reflection.constructor;
19-
import static org.fest.reflect.core.Reflection.field;
20-
import static org.fest.reflect.core.Reflection.method;
21-
import static org.fest.reflect.core.Reflection.type;
22-
23-
import java.lang.reflect.Field;
24-
import java.util.Collections;
25-
import java.util.List;
26-
27-
import org.fest.reflect.reference.TypeRef;
28-
import org.junit.runner.Runner;
29-
import org.junit.runners.Suite;
30-
import org.robolectric.annotation.Config;
31-
import org.robolectric.internal.SdkConfig;
32-
import org.robolectric.internal.SdkEnvironment;
33-
import org.robolectric.manifest.AndroidManifest;
34-
35-
public class ParameterizedRobolectricTestRunnerWorkaround extends Suite {
36-
37-
private Object delegate; // ParameterizedRobolectricTestRunner
38-
private Class<?> runnerClass; // ParameterizedRobolectricTestRunner.class
39-
private Class<?> testRunnerClass; // ParameterizedRobolectricTestRunner$TestClassRunnerForParameters.class
40-
private RobolectricTestRunner testrunner;
41-
private List<Runner> runners; // delegate.getChildren()
42-
43-
public ParameterizedRobolectricTestRunnerWorkaround(Class<?> klass) throws Exception {
44-
super(klass, Collections.<Runner> emptyList());
45-
46-
testrunner = new ClassLoaderCreatorRobolectricTestRunner(klass);
47-
48-
Config config = testrunner.getConfig(klass.getMethods()[0]);
49-
50-
AndroidManifest manifest = testrunner.getAppManifest(config);
51-
SdkEnvironment environment = method("getEnvironment").withReturnType(SdkEnvironment.class).withParameterTypes(AndroidManifest.class, Config.class).in(testrunner).invoke(manifest, config);
52-
53-
runnerClass = type(ParameterizedRobolectricTestRunner.class.getName()).withClassLoader(environment.getRobolectricClassLoader()).load();
54-
testRunnerClass = type(runnerClass.getName() + "$TestClassRunnerForParameters").withClassLoader(environment.getRobolectricClassLoader()).load();
55-
56-
Field lastTestRunnerClassField = field("lastTestRunnerClass").ofType(Class.class).in(RobolectricTestRunner.class).info();
57-
lastTestRunnerClassField.setAccessible(true);
58-
lastTestRunnerClassField.set(testrunner, testRunnerClass);
59-
60-
delegate = constructor().withParameterTypes(Class.class).in(runnerClass).newInstance(type(klass.getName()).withClassLoader(environment.getRobolectricClassLoader()).load());
61-
62-
Field lastSdkEnvironmentField = field("lastSdkEnvironment").ofType(SdkEnvironment.class).in(RobolectricTestRunner.class).info();
63-
lastSdkEnvironmentField.setAccessible(true);
64-
65-
Field lastSdkConfigField = field("lastSdkConfig").ofType(SdkConfig.class).in(RobolectricTestRunner.class).info();
66-
lastSdkConfigField.setAccessible(true);
67-
68-
runners = method("getChildren").withReturnType(new TypeRef<List<Runner>>() {
69-
}).in(delegate).invoke();
70-
71-
for (Runner runner : runners) {
72-
lastTestRunnerClassField.set(runner, testRunnerClass);
73-
lastSdkEnvironmentField.set(runner, environment);
74-
lastSdkConfigField.set(runner, environment.getSdkConfig());
75-
}
76-
}
77-
78-
@Override
79-
protected List<Runner> getChildren() {
80-
return runners;
81-
}
82-
83-
private static class ClassLoaderCreatorRobolectricTestRunner extends RobolectricTestRunner {
84-
85-
ClassLoaderCreatorRobolectricTestRunner(Class<?> testClass) throws Exception {
86-
super(testClass);
87-
// TODO
88-
// Map<Class<? extends RobolectricTestRunner>, EnvHolder> envHoldersByTestRunner = field("envHoldersByTestRunner") //
89-
// .ofType(new TypeRef<Map<Class<? extends RobolectricTestRunner>, EnvHolder>>() {
90-
// })//
91-
// .in(this)//
92-
// .get();
93-
//
94-
// EnvHolder envHolder = envHoldersByTestRunner.get(RobolectricTestRunner.class);
95-
//
96-
// if (envHolder != null) {
97-
// Field envHolderField = field("envHolder").ofType(EnvHolder.class).in(RobolectricTestRunner.class).info();
98-
// envHolderField.setAccessible(true);
99-
// envHolderField.set(this, envHolder);
100-
// } else {
101-
// envHoldersByTestRunner.put(RobolectricTestRunner.class, envHolder);
102-
// }
103-
}
104-
105-
@Override
106-
protected void validateConstructor(List<Throwable> errors) {
107-
validateOnlyOneConstructor(errors);
108-
}
109-
}
110-
}

‎AndroidAnnotations/pom.xml‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,25 @@
131131
<properties>
132132
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
133133
<main.basedir>${project.basedir}</main.basedir>
134-
<robolectric.version>3.0</robolectric.version>
134+
<robolectric.version>3.1-SNAPSHOT</robolectric.version> <!-- TODO 3.1-->
135135
</properties>
136136

137137

138138
<prerequisites>
139139
<maven>3.2.1</maven>
140140
</prerequisites>
141141

142+
<repositories> <!-- TODO remove-->
143+
<repository>
144+
<id>oss-sonatype</id>
145+
<name>oss-sonatype</name>
146+
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
147+
<snapshots>
148+
<enabled>true</enabled>
149+
</snapshots>
150+
</repository>
151+
</repositories>
152+
142153
<modules>
143154
<module>androidannotations-core</module>
144155
<module>androidannotations-ormlite</module>

0 commit comments

Comments
 (0)