fix emulator test breakage from !873
Use Mockito to mock LocaleList rather than changing App.java. The only reliably working emulator tests on gitlab-ci are emulator-22. The change to App.java in 3406edefcd1807cc9352589ac86dbb725c3165b0 broke there: E/ACRA ( 2231): Caused by: java.lang.NoClassDefFoundError: android.os.LocaleList E/ACRA ( 2231): at libcore.reflect.InternalNames.getClass(InternalNames.java:55) E/ACRA ( 2231): at java.lang.Class.getDexCacheType(Class.java:479) E/ACRA ( 2231): at java.lang.reflect.ArtMethod.getDexCacheType(ArtMethod.java:191) E/ACRA ( 2231): at java.lang.reflect.ArtMethod.getReturnType(ArtMethod.java:145) E/ACRA ( 2231): at java.lang.reflect.Method.getReturnType(Method.java:184) E/ACRA ( 2231): at java.lang.Class.getDeclaredMethods(Class.java:771) E/ACRA ( 2231): at com.fasterxml.jackson.databind.util.ClassUtil.getClassMethods(ClassUtil.java:1172) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector._addMemberMethods(AnnotatedMethodCollector.java:117) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector.collect(AnnotatedMethodCollector.java:49) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector.collectMethods(AnnotatedMethodCollector.java:40) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.AnnotatedClass._methods(AnnotatedClass.java:382) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.AnnotatedClass.memberMethods(AnnotatedClass.java:322) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addMethods(POJOPropertiesCollector.java:555) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:323) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:287) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:186) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164) E/ACRA ( 2231): at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._findCreatorsFromProperties(BasicDeserializerFactory.java:292) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._constructDefaultValueInstantiator(BasicDeserializerFactory.java:276) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:224) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:220) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:143) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:414) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) E/ACRA ( 2231): at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:458) E/ACRA ( 2231): at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.createContextual(ObjectArrayDeserializer.java:128) E/ACRA ( 2231): at com.fasterxml.jackson.databind.DeserializationContext.handleSecondaryContextualization(DeserializationContext.java:696) E/ACRA ( 2231): at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:496) E/ACRA ( 2231): at com.fasterxml.jackson.databind.Objec
This commit is contained in:
parent
adc62211aa
commit
0797d82d67
@ -19,7 +19,6 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
|
||||||
import com.fasterxml.jackson.annotation.JacksonInject;
|
import com.fasterxml.jackson.annotation.JacksonInject;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
@ -545,7 +544,7 @@ public class App extends ValueObject implements Comparable<App>, Parcelable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= 24) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
LocaleList localeList = getLocales();
|
LocaleList localeList = Resources.getSystem().getConfiguration().getLocales();
|
||||||
String[] sortedLocaleList = localeList.toLanguageTags().split(",");
|
String[] sortedLocaleList = localeList.toLanguageTags().split(",");
|
||||||
Arrays.sort(sortedLocaleList, new java.util.Comparator<String>() {
|
Arrays.sort(sortedLocaleList, new java.util.Comparator<String>() {
|
||||||
@Override
|
@Override
|
||||||
@ -625,11 +624,6 @@ public class App extends ValueObject implements Comparable<App>, Parcelable {
|
|||||||
tvScreenshots = getLocalizedListEntry(localized, localesToUse, "tvScreenshots");
|
tvScreenshots = getLocalizedListEntry(localized, localesToUse, "tvScreenshots");
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
LocaleList getLocales() {
|
|
||||||
return Resources.getSystem().getConfiguration().getLocales();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the right localized version of this entry, based on an immitation of
|
* Returns the right localized version of this entry, based on an immitation of
|
||||||
* the logic that Android/Java uses. On Android >= 24, this can get the
|
* the logic that Android/Java uses. On Android >= 24, this can get the
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package org.fdroid.fdroid.data;
|
package org.fdroid.fdroid.data;
|
||||||
|
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
import org.fdroid.fdroid.TestUtils;
|
import org.fdroid.fdroid.TestUtils;
|
||||||
@ -20,6 +20,7 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@SuppressWarnings("LocalVariableName")
|
||||||
public class LocaleSelectionTest {
|
public class LocaleSelectionTest {
|
||||||
|
|
||||||
private static final String KEY = "summary";
|
private static final String KEY = "summary";
|
||||||
@ -92,10 +93,12 @@ public class LocaleSelectionTest {
|
|||||||
assertTrue(Build.VERSION.SDK_INT >= 24);
|
assertTrue(Build.VERSION.SDK_INT >= 24);
|
||||||
|
|
||||||
App app = spy(new App());
|
App app = spy(new App());
|
||||||
LocaleList localeList = mock(LocaleList.class);
|
|
||||||
|
|
||||||
// we mock both the getLocales call and the conversion to a language tag string.
|
// we mock both the getLocales call and the conversion to a language tag string.
|
||||||
doReturn(localeList).when(app).getLocales();
|
Configuration configuration = mock(Configuration.class);
|
||||||
|
LocaleList localeList = mock(LocaleList.class);
|
||||||
|
doReturn(localeList).when(configuration).getLocales();
|
||||||
|
|
||||||
// Set both default locale as well as the locale list, because the algorithm uses both...
|
// Set both default locale as well as the locale list, because the algorithm uses both...
|
||||||
Locale.setDefault(new Locale("en", "US"));
|
Locale.setDefault(new Locale("en", "US"));
|
||||||
when(localeList.toLanguageTags()).thenReturn("en-US,de-DE");
|
when(localeList.toLanguageTags()).thenReturn("en-US,de-DE");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user