Bug: 22567809 CTS: Fugu: android.text.format.cts related tests failing
Fixed DateFormatTest#test_is24HourFormat failing due to new permission change in
M by setting appops to allow android:write_settings during test before operation
is executed.
Change-Id: I8b36e5712840acba69bc1d2fc46a24c9b20247f8
diff --git a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
index 61fa37d..8ca1fea 100644
--- a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
@@ -19,19 +19,23 @@
import android.content.ContentResolver;
import android.content.Context;
+import android.os.ParcelFileDescriptor;
import android.provider.Settings;
-import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
import android.text.format.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.io.FileInputStream;
+import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
+import java.util.Scanner;
import java.util.TimeZone;
-public class DateFormatTest extends AndroidTestCase {
+public class DateFormatTest extends InstrumentationTestCase {
private Context mContext;
private ContentResolver mContentResolver;
@@ -50,12 +54,41 @@
@Override
protected void setUp() throws Exception {
super.setUp();
- mContext = getContext();
+ enableAppOps();
+ mContext = getInstrumentation().getContext();
mContentResolver = mContext.getContentResolver();
mIs24HourFormat = DateFormat.is24HourFormat(mContext);
mDefaultLocale = Locale.getDefault();
}
+ private void enableAppOps() {
+ StringBuilder cmd = new StringBuilder();
+ cmd.append("appops set ");
+ cmd.append(getInstrumentation().getContext().getPackageName());
+ cmd.append(" android:write_settings allow");
+ getInstrumentation().getUiAutomation().executeShellCommand(cmd.toString());
+
+ StringBuilder query = new StringBuilder();
+ query.append("appops get ");
+ query.append(getInstrumentation().getContext().getPackageName());
+ query.append(" android:write_settings");
+ String queryStr = query.toString();
+
+ String result = "No operations.";
+ while (result.contains("No operations")) {
+ ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation().executeShellCommand(
+ queryStr);
+ InputStream inputStream = new FileInputStream(pfd.getFileDescriptor());
+ result = convertStreamToString(inputStream);
+ }
+ }
+
+ private String convertStreamToString(InputStream is) {
+ try (Scanner scanner = new Scanner(is).useDelimiter("\\A")) {
+ return scanner.hasNext() ? scanner.next() : "";
+ }
+ }
+
@Override
protected void tearDown() throws Exception {
if (!mIs24HourFormat) {