aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/android
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-12-19 11:04:21 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-19 11:06:32 -0800
commit246ee5601c28e99385a2a722b57c1977d5ef1aa8 (patch)
tree2593cc4f4b6f167bca254b708545d4e580d75f43 /tools/android
parent56d5ba1ee89ac2dfb4eb5b2b8a076bb372258877 (diff)
More updates to tools/android modules for compatibility with python 3.
RELNOTES: None. PiperOrigin-RevId: 179577497
Diffstat (limited to 'tools/android')
-rw-r--r--tools/android/aar_embedded_jars_extractor.py9
-rw-r--r--tools/android/aar_embedded_jars_extractor_test.py46
-rw-r--r--tools/android/aar_native_libs_zip_creator.py6
-rw-r--r--tools/android/aar_native_libs_zip_creator_test.py14
-rw-r--r--tools/android/aar_resources_extractor.py4
-rw-r--r--tools/android/aar_resources_extractor_test.py14
-rw-r--r--tools/android/build_incremental_dexmanifest.py2
-rw-r--r--tools/android/incremental_install.py18
-rw-r--r--tools/android/incremental_install_test.py45
-rw-r--r--tools/android/merge_manifests.py2
-rw-r--r--tools/android/resource_extractor_test.py18
11 files changed, 100 insertions, 78 deletions
diff --git a/tools/android/aar_embedded_jars_extractor.py b/tools/android/aar_embedded_jars_extractor.py
index 393d3f4c5c..2fa85b63a8 100644
--- a/tools/android/aar_embedded_jars_extractor.py
+++ b/tools/android/aar_embedded_jars_extractor.py
@@ -45,13 +45,14 @@ def ExtractEmbeddedJars(aar,
if not output_dir_orig:
output_dir_orig = output_dir
jar_pattern = re.compile("^(classes|libs/.+)\\.jar$")
- singlejar_param_file.write("--exclude_build_data\n")
+ singlejar_param_file.write(b"--exclude_build_data\n")
for name in aar.namelist():
if jar_pattern.match(name):
- singlejar_param_file.write("--sources\n")
+ singlejar_param_file.write(b"--sources\n")
# output_dir may be a temporary junction, so write the original
# (unshortened) path to the params file
- singlejar_param_file.write(output_dir_orig + "/" + name + "\n")
+ singlejar_param_file.write(
+ (output_dir_orig + "/" + name + "\n").encode("utf-8"))
aar.extract(name, output_dir)
@@ -62,7 +63,7 @@ def _Main(input_aar,
if not output_dir_orig:
output_dir_orig = output_dir
with zipfile.ZipFile(input_aar, "r") as aar:
- with open(output_singlejar_param_file, "w") as singlejar_param_file:
+ with open(output_singlejar_param_file, "wb") as singlejar_param_file:
ExtractEmbeddedJars(aar, singlejar_param_file, output_dir,
output_dir_orig)
diff --git a/tools/android/aar_embedded_jars_extractor_test.py b/tools/android/aar_embedded_jars_extractor_test.py
index 30f150e850..6b63520d67 100644
--- a/tools/android/aar_embedded_jars_extractor_test.py
+++ b/tools/android/aar_embedded_jars_extractor_test.py
@@ -14,9 +14,9 @@
"""Tests for aar_embedded_jars_extractor."""
+import io
import os
import shutil
-import StringIO
import unittest
import zipfile
@@ -26,6 +26,12 @@ from tools.android import aar_embedded_jars_extractor
class AarEmbeddedJarsExtractor(unittest.TestCase):
"""Unit tests for aar_embedded_jars_extractor.py."""
+ # Python 2 alias
+ if not hasattr(unittest.TestCase, "assertCountEqual"):
+
+ def assertCountEqual(self, *args):
+ return self.assertItemsEqual(*args)
+
def setUp(self):
os.chdir(os.environ["TEST_TMPDIR"])
@@ -33,47 +39,47 @@ class AarEmbeddedJarsExtractor(unittest.TestCase):
shutil.rmtree("out_dir")
def testNoJars(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
- param_file = StringIO.StringIO()
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
+ param_file = io.BytesIO()
os.makedirs("out_dir")
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir")
self.assertEqual([], os.listdir("out_dir"))
param_file.seek(0)
- self.assertEqual("--exclude_build_data\n", param_file.read())
+ self.assertEqual(b"--exclude_build_data\n", param_file.read())
def testClassesJarAndLibsJars(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
aar.writestr("classes.jar", "")
aar.writestr("libs/a.jar", "")
aar.writestr("libs/b.jar", "")
- param_file = StringIO.StringIO()
+ param_file = io.BytesIO()
os.makedirs("out_dir")
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir")
- self.assertItemsEqual(["classes.jar", "libs"], os.listdir("out_dir"))
- self.assertItemsEqual(["a.jar", "b.jar"], os.listdir("out_dir/libs"))
+ self.assertCountEqual(["classes.jar", "libs"], os.listdir("out_dir"))
+ self.assertCountEqual(["a.jar", "b.jar"], os.listdir("out_dir/libs"))
param_file.seek(0)
self.assertEqual(
- ["--exclude_build_data\n",
- "--sources\n",
- "out_dir/classes.jar\n",
- "--sources\n",
- "out_dir/libs/a.jar\n",
- "--sources\n",
- "out_dir/libs/b.jar\n"],
+ [b"--exclude_build_data\n",
+ b"--sources\n",
+ b"out_dir/classes.jar\n",
+ b"--sources\n",
+ b"out_dir/libs/a.jar\n",
+ b"--sources\n",
+ b"out_dir/libs/b.jar\n"],
param_file.readlines())
def testOnlyClassesJar(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
aar.writestr("classes.jar", "")
- param_file = StringIO.StringIO()
+ param_file = io.BytesIO()
os.makedirs("out_dir")
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir")
self.assertEqual(["classes.jar"], os.listdir("out_dir"))
param_file.seek(0)
self.assertEqual(
- ["--exclude_build_data\n",
- "--sources\n",
- "out_dir/classes.jar\n"],
+ [b"--exclude_build_data\n",
+ b"--sources\n",
+ b"out_dir/classes.jar\n"],
param_file.readlines())
diff --git a/tools/android/aar_native_libs_zip_creator.py b/tools/android/aar_native_libs_zip_creator.py
index 88b9db3216..0348418fb5 100644
--- a/tools/android/aar_native_libs_zip_creator.py
+++ b/tools/android/aar_native_libs_zip_creator.py
@@ -20,6 +20,8 @@ are converted from the AAR directory structure of /jni/<cpu>/foo.so to the APK
directory structure of /lib/<cpu>/foo.so.
"""
+from __future__ import print_function
+
import os
import re
import sys
@@ -63,8 +65,8 @@ def Main(input_aar_path, output_zip_path, cpu, input_aar_path_for_error_msg):
try:
CreateNativeLibsZip(input_aar, cpu, native_libs_zip)
except UnsupportedArchitectureException:
- print(("AAR " + input_aar_path_for_error_msg +
- " missing native libs for requested architecture: " + cpu))
+ print("AAR " + input_aar_path_for_error_msg +
+ " missing native libs for requested architecture: " + cpu)
sys.exit(1)
diff --git a/tools/android/aar_native_libs_zip_creator_test.py b/tools/android/aar_native_libs_zip_creator_test.py
index 0e0210e448..3ec71a617a 100644
--- a/tools/android/aar_native_libs_zip_creator_test.py
+++ b/tools/android/aar_native_libs_zip_creator_test.py
@@ -14,7 +14,7 @@
"""Tests for aar_native_libs_zip_creator."""
-import StringIO
+import io
import unittest
import zipfile
@@ -25,25 +25,25 @@ class AarNativeLibsZipCreatorTest(unittest.TestCase):
"""Unit tests for aar_native_libs_zip_creator.py."""
def testAarWithNoLibs(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
- outzip = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
+ outzip = zipfile.ZipFile(io.BytesIO(), "w")
aar_native_libs_zip_creator.CreateNativeLibsZip(aar, "x86", outzip)
self.assertEquals([], outzip.namelist())
def testAarWithMissingLibs(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
aar.writestr("jni/armeabi/foo.so", "")
- outzip = zipfile.ZipFile(StringIO.StringIO(), "w")
+ outzip = zipfile.ZipFile(io.BytesIO(), "w")
self.assertRaises(
aar_native_libs_zip_creator.UnsupportedArchitectureException,
aar_native_libs_zip_creator.CreateNativeLibsZip,
aar, "x86", outzip)
def testAarWithAllLibs(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
aar.writestr("jni/x86/foo.so", "")
aar.writestr("jni/armeabi/foo.so", "")
- outzip = zipfile.ZipFile(StringIO.StringIO(), "w")
+ outzip = zipfile.ZipFile(io.BytesIO(), "w")
aar_native_libs_zip_creator.CreateNativeLibsZip(aar, "x86", outzip)
self.assertIn("lib/x86/foo.so", outzip.namelist())
self.assertNotIn("lib/armeabi/foo.so", outzip.namelist())
diff --git a/tools/android/aar_resources_extractor.py b/tools/android/aar_resources_extractor.py
index 61f9f4d397..5d875fbe12 100644
--- a/tools/android/aar_resources_extractor.py
+++ b/tools/android/aar_resources_extractor.py
@@ -78,11 +78,11 @@ def ExtractResources(aar, output_res_dir):
with junction.TempJunction(os.path.dirname(empty_xml_filename)) as junc:
xmlpath = os.path.join(junc, os.path.basename(empty_xml_filename))
with open(xmlpath, "wb") as empty_xml:
- empty_xml.write("<resources/>")
+ empty_xml.write(b"<resources/>")
else:
os.makedirs(os.path.dirname(empty_xml_filename))
with open(empty_xml_filename, "wb") as empty_xml:
- empty_xml.write("<resources/>")
+ empty_xml.write(b"<resources/>")
def main():
diff --git a/tools/android/aar_resources_extractor_test.py b/tools/android/aar_resources_extractor_test.py
index d5f630b352..ba93c320b9 100644
--- a/tools/android/aar_resources_extractor_test.py
+++ b/tools/android/aar_resources_extractor_test.py
@@ -14,9 +14,9 @@
"""Tests for aar_resources_extractor."""
+import io
import os
import shutil
-import StringIO
import unittest
import zipfile
@@ -30,6 +30,12 @@ def _HostPath(path):
class AarResourcesExtractorTest(unittest.TestCase):
"""Unit tests for aar_resources_extractor.py."""
+ # Python 2 alias
+ if not hasattr(unittest.TestCase, "assertCountEqual"):
+
+ def assertCountEqual(self, *args):
+ return self.assertItemsEqual(*args)
+
def setUp(self):
os.chdir(os.environ["TEST_TMPDIR"])
@@ -43,7 +49,7 @@ class AarResourcesExtractorTest(unittest.TestCase):
]
def testNoResources(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
os.makedirs("out_dir")
aar_resources_extractor.ExtractResources(aar, "out_dir")
self.assertEqual([_HostPath("out_dir/res/values/empty.xml")],
@@ -52,7 +58,7 @@ class AarResourcesExtractorTest(unittest.TestCase):
self.assertEqual("<resources/>", empty_xml.read())
def testContainsResources(self):
- aar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ aar = zipfile.ZipFile(io.BytesIO(), "w")
aar.writestr("res/values/values.xml", "some values")
aar.writestr("res/layouts/layout.xml", "some layout")
os.makedirs("out_dir")
@@ -61,7 +67,7 @@ class AarResourcesExtractorTest(unittest.TestCase):
_HostPath("out_dir/res/values/values.xml"),
_HostPath("out_dir/res/layouts/layout.xml")
]
- self.assertItemsEqual(expected_resources, self.DirContents("out_dir"))
+ self.assertCountEqual(expected_resources, self.DirContents("out_dir"))
with open("out_dir/res/values/values.xml", "r") as values_xml:
self.assertEqual("some values", values_xml.read())
with open("out_dir/res/layouts/layout.xml", "r") as layout_xml:
diff --git a/tools/android/build_incremental_dexmanifest.py b/tools/android/build_incremental_dexmanifest.py
index 6c372656ec..e912d62a93 100644
--- a/tools/android/build_incremental_dexmanifest.py
+++ b/tools/android/build_incremental_dexmanifest.py
@@ -121,7 +121,7 @@ class DexmanifestBuilder(object):
self.AddDex(input_filename, None, input_filename)
with open(argv[0], "wb") as manifest:
- manifest.write("\n".join(self.manifest_lines))
+ manifest.write(("\n".join(self.manifest_lines)).encode("utf-8"))
def main(argv):
diff --git a/tools/android/incremental_install.py b/tools/android/incremental_install.py
index bad2e29c88..254db274fc 100644
--- a/tools/android/incremental_install.py
+++ b/tools/android/incremental_install.py
@@ -221,7 +221,7 @@ class Adb(object):
"""Push a given string to a given path on the device in parallel."""
local = self._CreateLocalFile()
with open(local, "wb") as f:
- f.write(contents)
+ f.write(contents.encode("utf-8"))
return self.Push(local, remote)
def Pull(self, remote):
@@ -237,7 +237,7 @@ class Adb(object):
try:
self._Exec(["pull", remote, local])
with open(local, "rb") as f:
- return f.read()
+ return f.read().decode("utf-8")
except (AdbError, IOError):
return None
@@ -339,7 +339,7 @@ def ParseManifest(contents):
def GetAppPackage(stub_datafile):
"""Returns the app package specified in a stub data file."""
with open(stub_datafile, "rb") as f:
- return f.readlines()[1].strip()
+ return f.readlines()[1].decode("utf-8").strip()
def UploadDexes(adb, execroot, app_dir, temp_dir, dexmanifest, full_install):
@@ -605,7 +605,7 @@ def UploadNativeLibs(adb, native_lib_args, app_dir, full_install):
f.result()
install_manifest = [
- name + " " + checksum for name, checksum in install_checksums.iteritems()]
+ name + " " + checksum for name, checksum in install_checksums.items()]
adb.PushString("\n".join(install_manifest),
targetpath.join(app_dir, "native",
"native_manifest")).result()
@@ -693,7 +693,7 @@ def SplitIncrementalInstall(adb, app_package, execroot, split_main_apk,
adb.InstallMultiple(targetpath.join(execroot, apk), app_package)
install_manifest = [
- name + " " + checksum for name, checksum in install_checksums.iteritems()]
+ name + " " + checksum for name, checksum in install_checksums.items()]
adb.PushString("\n".join(install_manifest),
targetpath.join(app_dir, "split_manifest")).result()
@@ -744,7 +744,7 @@ def IncrementalInstall(adb_path,
VerifyInstallTimestamp(adb, app_package)
with open(hostpath.join(execroot, dexmanifest), "rb") as f:
- dexmanifest = f.read()
+ dexmanifest = f.read().decode("utf-8")
UploadDexes(adb, execroot, app_dir, temp_dir, dexmanifest, bool(apk))
# TODO(ahumesky): UploadDexes waits for all the dexes to be uploaded, and
# then UploadResources is called. We could instead enqueue everything
@@ -776,16 +776,16 @@ def IncrementalInstall(adb_path,
sys.exit("Error: Device unauthorized. Please check the confirmation "
"dialog on your device.")
except MultipleDevicesError as e:
- sys.exit("Error: " + e.message + "\nTry specifying a device serial with "
+ sys.exit("Error: " + str(e) + "\nTry specifying a device serial with "
"\"blaze mobile-install --adb_arg=-s --adb_arg=$ANDROID_SERIAL\"")
except OldSdkException as e:
sys.exit("Error: The device does not support the API level specified in "
"the application's manifest. Check minSdkVersion in "
"AndroidManifest.xml")
except TimestampException as e:
- sys.exit("Error:\n%s" % e.message)
+ sys.exit("Error:\n%s" % str(e))
except AdbError as e:
- sys.exit("Error:\n%s" % e.message)
+ sys.exit("Error:\n%s" % str(e))
finally:
shutil.rmtree(temp_dir, True)
diff --git a/tools/android/incremental_install_test.py b/tools/android/incremental_install_test.py
index 1181a591ef..5eee83fcad 100644
--- a/tools/android/incremental_install_test.py
+++ b/tools/android/incremental_install_test.py
@@ -49,7 +49,7 @@ class MockAdb(object):
if cmd == "push":
# "/test/adb push local remote"
with open(args[2], "rb") as f:
- content = f.read()
+ content = f.read().decode("utf-8")
self.files[args[3]] = content
elif cmd == "pull":
# "/test/adb pull remote local"
@@ -58,7 +58,7 @@ class MockAdb(object):
content = self.files.get(remote)
if content is not None:
with open(local, "wb") as f:
- f.write(content)
+ f.write(content.encode("utf-8"))
else:
returncode = 1
stderr = "remote object '%s' does not exist\n" % remote
@@ -69,7 +69,7 @@ class MockAdb(object):
elif cmd == "install-multiple":
if args[3] == "-p":
with open(args[5], "rb") as f:
- content = f.read()
+ content = f.read().decode("utf-8")
self.split_apks.add(content)
else:
self.package_timestamp = self._last_package_timestamp
@@ -133,11 +133,12 @@ class IncrementalInstallTest(unittest.TestCase):
# Write the stub datafile which contains the package name of the app.
with open(self._STUB_DATAFILE, "wb") as f:
- f.write("\n".join([self._OLD_APP_PACKGE, self._APP_PACKAGE]))
+ f.write(("\n".join([self._OLD_APP_PACKGE, self._APP_PACKAGE]))
+ .encode("utf-8"))
# Write the local resource apk file.
with open(self._RESOURCE_APK, "wb") as f:
- f.write("resource apk")
+ f.write(b"resource apk")
# Mock out subprocess.Popen to use our mock adb.
self._popen_patch = mock.patch.object(incremental_install, "subprocess")
@@ -157,7 +158,7 @@ class IncrementalInstallTest(unittest.TestCase):
def _CreateLocalManifest(self, *lines):
content = "\n".join(lines)
with open(self._DEXMANIFEST, "wb") as f:
- f.write(content)
+ f.write(content.encode("utf-8"))
return content
def _CreateRemoteManifest(self, *lines):
@@ -205,7 +206,7 @@ class IncrementalInstallTest(unittest.TestCase):
self._CreateZip()
with open("dex1", "wb") as f:
- f.write("content3")
+ f.write(b"content3")
manifest = self._CreateLocalManifest(
"zip1 zp1 ip1 0",
@@ -224,10 +225,10 @@ class IncrementalInstallTest(unittest.TestCase):
def testSplitInstallToPristineDevice(self):
with open("split1", "wb") as f:
- f.write("split_content1")
+ f.write(b"split_content1")
with open("main", "wb") as f:
- f.write("main_Content")
+ f.write(b"main_Content")
self._CallIncrementalInstall(
incremental=False, split_main_apk="main", split_apks=["split1"])
@@ -235,10 +236,10 @@ class IncrementalInstallTest(unittest.TestCase):
def testSplitInstallUnchanged(self):
with open("split1", "wb") as f:
- f.write("split_content1")
+ f.write(b"split_content1")
with open("main", "wb") as f:
- f.write("main_Content")
+ f.write(b"main_Content")
self._CallIncrementalInstall(
incremental=False, split_main_apk="main", split_apks=["split1"])
@@ -250,17 +251,17 @@ class IncrementalInstallTest(unittest.TestCase):
def testSplitInstallChanges(self):
with open("split1", "wb") as f:
- f.write("split_content1")
+ f.write(b"split_content1")
with open("main", "wb") as f:
- f.write("main_Content")
+ f.write(b"main_Content")
self._CallIncrementalInstall(
incremental=False, split_main_apk="main", split_apks=["split1"])
self.assertEqual(set(["split_content1"]), self._mock_adb.split_apks)
with open("split1", "wb") as f:
- f.write("split_content2")
+ f.write(b"split_content2")
self._mock_adb.split_apks = set()
self._CallIncrementalInstall(
incremental=False, split_main_apk="main", split_apks=["split1"])
@@ -269,7 +270,7 @@ class IncrementalInstallTest(unittest.TestCase):
def testMissingNativeManifestWithIncrementalInstall(self):
self._CreateZip()
with open("liba.so", "wb") as f:
- f.write("liba_1")
+ f.write(b"liba_1")
# Upload a library to the device.
native_libs = ["armeabi-v7a:liba.so"]
@@ -285,7 +286,7 @@ class IncrementalInstallTest(unittest.TestCase):
def testNonIncrementalInstallOverwritesNativeLibs(self):
self._CreateZip()
with open("liba.so", "wb") as f:
- f.write("liba_1")
+ f.write(b"liba_1")
# Upload a library to the device.
native_libs = ["armeabi-v7a:liba.so"]
@@ -305,7 +306,7 @@ class IncrementalInstallTest(unittest.TestCase):
def testNativeAbiCompatibility(self):
self._CreateZip()
with open("liba.so", "wb") as f:
- f.write("liba")
+ f.write(b"liba")
native_libs = ["armeabi:liba.so"]
self._mock_adb.SetAbi("arm64-v8a")
@@ -315,9 +316,9 @@ class IncrementalInstallTest(unittest.TestCase):
def testUploadNativeLibs(self):
self._CreateZip()
with open("liba.so", "wb") as f:
- f.write("liba_1")
+ f.write(b"liba_1")
with open("libb.so", "wb") as f:
- f.write("libb_1")
+ f.write(b"libb_1")
native_libs = ["armeabi-v7a:liba.so", "armeabi-v7a:libb.so"]
self._CallIncrementalInstall(incremental=False, native_libs=native_libs)
@@ -326,7 +327,7 @@ class IncrementalInstallTest(unittest.TestCase):
# Change a library
with open("libb.so", "wb") as f:
- f.write("libb_2")
+ f.write(b"libb_2")
self._CallIncrementalInstall(incremental=True, native_libs=native_libs)
self.assertEqual("libb_2", self._GetDeviceFile("native/libb.so"))
@@ -520,7 +521,7 @@ class IncrementalInstallTest(unittest.TestCase):
self._CreateZip()
with open("dex1", "wb") as f:
- f.write("content3")
+ f.write(b"content3")
self._CreateLocalManifest(
"zip1 zp1 ip1 0",
@@ -536,7 +537,7 @@ class IncrementalInstallTest(unittest.TestCase):
self._CreateZip()
with open("dex1", "wb") as f:
- f.write("content3")
+ f.write(b"content3")
self._CreateLocalManifest(
"zip1 zp1 ip1 0",
diff --git a/tools/android/merge_manifests.py b/tools/android/merge_manifests.py
index a12e53836c..520b03219c 100644
--- a/tools/android/merge_manifests.py
+++ b/tools/android/merge_manifests.py
@@ -379,7 +379,7 @@ class MergeManifests(object):
self._MergeTopLevelNamespaces(mergee_dom)
for destination, values in sorted(
- self._NODES_TO_COPY_FROM_MERGEE.iteritems()):
+ self._NODES_TO_COPY_FROM_MERGEE.items()):
for node_to_copy in values:
for node in mergee_dom.getElementsByTagName(node_to_copy):
if self._IsDuplicate(node_to_copy, node):
diff --git a/tools/android/resource_extractor_test.py b/tools/android/resource_extractor_test.py
index de5b6a8b87..ae7a5a629f 100644
--- a/tools/android/resource_extractor_test.py
+++ b/tools/android/resource_extractor_test.py
@@ -14,7 +14,7 @@
"""Tests for resource_extractor."""
-import StringIO
+import io
import unittest
import zipfile
@@ -24,8 +24,14 @@ from tools.android import resource_extractor
class ResourceExtractorTest(unittest.TestCase):
"""Unit tests for resource_extractor.py."""
+ # Python 2 alias
+ if not hasattr(unittest.TestCase, "assertCountEqual"):
+
+ def assertCountEqual(self, *args):
+ return self.assertItemsEqual(*args)
+
def testJarWithEverything(self):
- input_jar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ input_jar = zipfile.ZipFile(io.BytesIO(), "w")
for path in (
# Should not be included
@@ -56,17 +62,17 @@ class ResourceExtractorTest(unittest.TestCase):
"not_CVS/include",
"META-INF/services/foo"):
input_jar.writestr(path, "")
- output_zip = zipfile.ZipFile(StringIO.StringIO(), "w")
+ output_zip = zipfile.ZipFile(io.BytesIO(), "w")
resource_extractor.ExtractResources(input_jar, output_zip)
- self.assertItemsEqual(("c", "a/b", "bar/a", "a/not_package.html",
+ self.assertCountEqual(("c", "a/b", "bar/a", "a/not_package.html",
"not_CVS/include", "META-INF/services/foo"),
output_zip.namelist())
def testTimestampsAreTheSame(self):
- input_jar = zipfile.ZipFile(StringIO.StringIO(), "w")
+ input_jar = zipfile.ZipFile(io.BytesIO(), "w")
entry_info = zipfile.ZipInfo("a", (1982, 1, 1, 0, 0, 0))
input_jar.writestr(entry_info, "")
- output_zip = zipfile.ZipFile(StringIO.StringIO(), "w")
+ output_zip = zipfile.ZipFile(io.BytesIO(), "w")
resource_extractor.ExtractResources(input_jar, output_zip)
self.assertEqual((1982, 1, 1, 0, 0, 0), output_zip.getinfo("a").date_time)