# Copyright 2016 The Bazel Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for resource_extractor.""" import io import unittest import zipfile 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(io.BytesIO(), "w") for path in ( # Should not be included "foo.aidl", "tmp/foo.aidl", "tmp/foo.java", "tmp/foo.java.swp", "tmp/foo.class", "tmp/flags.xml", "tilde~", "tmp/flags.xml~", ".gitignore", "tmp/.gitignore", "META-INF/", "tmp/META-INF/", "META-INF/MANIFEST.MF", "tmp/META-INF/services/foo", "bar/", "CVS/bar/", "tmp/CVS/bar/", ".svn/CVS/bar/", "tmp/.svn/CVS/bar/", # Should be included "bar/a", "a/b", "c", "a/not_package.html", "not_CVS/include", "META-INF/services/foo"): input_jar.writestr(path, "") output_zip = zipfile.ZipFile(io.BytesIO(), "w") resource_extractor.ExtractResources(input_jar, output_zip) 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(io.BytesIO(), "w") entry_info = zipfile.ZipInfo("a", (1982, 1, 1, 0, 0, 0)) input_jar.writestr(entry_info, "") 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) if __name__ == "__main__": unittest.main()