#!/usr/bin/env python3 # # Copyright (C) 2021 The Android Open Source Project # # 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. import io from pathlib import Path import tempfile import unittest import zipfile import merge_annotation_zips zip_a = { 'android/provider/annotations.xml': """ """, 'android/os/annotations.xml': """ """ } zip_b = { 'android/provider/annotations.xml': """ """ } zip_c = { 'android/app/annotations.xml': """ """ } merged_provider = """ """ class MergeAnnotationZipsTest(unittest.TestCase): def test_merge_zips(self): with tempfile.TemporaryDirectory() as out_dir: for zip_content in [zip_a, zip_b, zip_c]: f = io.BytesIO() with zipfile.ZipFile(f, "w") as zip_file: for filename, content in zip_content.items(): zip_file.writestr(filename, content) merge_annotation_zips.merge_zip_file(out_dir, zip_file) # Unchanged self.assertEqual(zip_a['android/os/annotations.xml'], Path(out_dir, 'android/os/annotations.xml').read_text()) self.assertEqual(zip_c['android/app/annotations.xml'], Path(out_dir, 'android/app/annotations.xml').read_text()) # Merged self.assertEqual(merged_provider, Path(out_dir, 'android/provider/annotations.xml').read_text()) if __name__ == "__main__": unittest.main(verbosity=2)