Merge "Add APIs for improved MTS testing"
am: 65c8f94fe4
Change-Id: I79098fb87eb2abb0136c47a6f16dfbc4bbbff1f1
diff --git a/luni/src/main/java/libcore/timezone/TimeZoneDataFiles.java b/luni/src/main/java/libcore/timezone/TimeZoneDataFiles.java
index d95ff50..b4c8976 100644
--- a/luni/src/main/java/libcore/timezone/TimeZoneDataFiles.java
+++ b/luni/src/main/java/libcore/timezone/TimeZoneDataFiles.java
@@ -55,6 +55,7 @@
return System.getenv(ANDROID_DATA_ENV) + "/misc/zoneinfo/";
}
+ // Remove from CorePlatformApi when all users in platform code are removed. http://b/123398797
@libcore.api.CorePlatformApi
public static String getDataTimeZoneFile(String fileName) {
return getDataTimeZoneRootDir() + "current/" + fileName;
diff --git a/luni/src/main/java/libcore/timezone/TzDataSetVersion.java b/luni/src/main/java/libcore/timezone/TzDataSetVersion.java
index c2e7d7b..a404551 100644
--- a/luni/src/main/java/libcore/timezone/TzDataSetVersion.java
+++ b/luni/src/main/java/libcore/timezone/TzDataSetVersion.java
@@ -102,13 +102,17 @@
+ REVISION_PATTERN.pattern()
+ ".*" /* ignore trailing */);
+ @libcore.api.CorePlatformApi
public final int formatMajorVersion;
+
+ @libcore.api.CorePlatformApi
public final int formatMinorVersion;
// Remove from CorePlatformApi when all users in platform code are removed. http://b/123398797
@libcore.api.CorePlatformApi
public final String rulesVersion;
+ @libcore.api.CorePlatformApi
public final int revision;
@libcore.api.CorePlatformApi
@@ -155,6 +159,17 @@
return fromBytes(versionBytes);
}
+ /**
+ * Reads the version of time zone data supplied by the time zone data module.
+ */
+ @libcore.api.CorePlatformApi
+ public static TzDataSetVersion readTimeZoneModuleVersion()
+ throws IOException, TzDataSetException {
+ String tzVersionFileName =
+ TimeZoneDataFiles.getTimeZoneModuleTzFile(TzDataSetVersion.DEFAULT_FILE_NAME);
+ return readFromFile(new File(tzVersionFileName));
+ }
+
// Remove from CorePlatformApi when all users in platform code are removed. http://b/123398797
@libcore.api.CorePlatformApi
public byte[] toBytes() {
diff --git a/luni/src/main/java/libcore/util/CoreLibraryDebug.java b/luni/src/main/java/libcore/util/CoreLibraryDebug.java
index 8ba3853..dc1012f 100644
--- a/luni/src/main/java/libcore/util/CoreLibraryDebug.java
+++ b/luni/src/main/java/libcore/util/CoreLibraryDebug.java
@@ -17,6 +17,7 @@
package libcore.util;
import com.android.icu.util.Icu4cMetadata;
+
import libcore.timezone.TimeZoneDataFiles;
import libcore.timezone.TzDataSetVersion;
import libcore.timezone.TzDataSetVersion.TzDataSetException;
diff --git a/luni/src/test/java/libcore/libcore/timezone/TimeZoneDataFilesTest.java b/luni/src/test/java/libcore/libcore/timezone/TimeZoneDataFilesTest.java
index 282b18e..a74ba30 100644
--- a/luni/src/test/java/libcore/libcore/timezone/TimeZoneDataFilesTest.java
+++ b/luni/src/test/java/libcore/libcore/timezone/TimeZoneDataFilesTest.java
@@ -28,10 +28,12 @@
private static final String ANDROID_TZDATA_ROOT_ENV = "ANDROID_TZDATA_ROOT";
private static final String ANDROID_I18N_ROOT_ENV = "ANDROID_I18N_ROOT";
+ private static final String ANDROID_DATA_ENV = "ANDROID_DATA";
@Test
public void expectedEnvironmentVariables() {
// These environment variables are required to locate data files used by libcore / ICU.
+ assertNotNull(System.getenv(ANDROID_DATA_ENV));
assertNotNull(System.getenv(ANDROID_TZDATA_ROOT_ENV));
assertNotNull(System.getenv(ANDROID_I18N_ROOT_ENV));
}
@@ -41,6 +43,7 @@
String[] paths = TimeZoneDataFiles.getTimeZoneFilePaths("foo");
assertEquals(2, paths.length);
+ assertTrue(paths[0].startsWith(System.getenv(ANDROID_DATA_ENV)));
assertTrue(paths[0].contains("/misc/zoneinfo/current/"));
assertTrue(paths[0].endsWith("/foo"));
@@ -58,6 +61,7 @@
assertEquals(3, paths.length);
String dataDirPath = paths[0];
+ assertTrue(dataDirPath.startsWith(System.getenv(ANDROID_DATA_ENV)));
assertTrue(dataDirPath + " invalid", dataDirPath.contains("/misc/zoneinfo/current/icu"));
String tzdataModulePath = paths[1];
diff --git a/mmodules/core_platform_api/api/platform/current-api.txt b/mmodules/core_platform_api/api/platform/current-api.txt
index 366ca67..8a984ce 100644
--- a/mmodules/core_platform_api/api/platform/current-api.txt
+++ b/mmodules/core_platform_api/api/platform/current-api.txt
@@ -1177,8 +1177,12 @@
method public static int currentFormatMinorVersion();
method public static boolean isCompatibleWithThisDevice(libcore.timezone.TzDataSetVersion);
method public static libcore.timezone.TzDataSetVersion readFromFile(java.io.File) throws java.io.IOException, libcore.timezone.TzDataSetVersion.TzDataSetException;
+ method public static libcore.timezone.TzDataSetVersion readTimeZoneModuleVersion() throws java.io.IOException, libcore.timezone.TzDataSetVersion.TzDataSetException;
method public byte[] toBytes();
field public static final String DEFAULT_FILE_NAME = "tz_version";
+ field public final int formatMajorVersion;
+ field public final int formatMinorVersion;
+ field public final int revision;
field public final String rulesVersion;
}
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 8fc3607..e76142d 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -447,6 +447,7 @@
srcs: [
"luni/src/main/java/libcore/api/CorePlatformApi.java",
"luni/src/main/java/libcore/api/IntraCoreApi.java",
+ "luni/src/main/java/libcore/timezone/TimeZoneDataFiles.java",
"luni/src/main/java/libcore/timezone/TzDataSetVersion.java",
],
}