1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#!/usr/bin/env python 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2016 Google Inc. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file. 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot"""Tests for zip_utils.""" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport filecmp 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport os 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport test_utils 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport unittest 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport utils 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport uuid 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport zip_utils 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass ZipUtilsTest(unittest.TestCase): 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot def test_zip_unzip(self): 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.tmp_dir(): 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw = test_utils.FileWriter(os.path.join(os.getcwd(), 'input')) 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Create input files and directories. 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.mkdir('mydir') 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.mkdir('anotherdir', 0666) 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.mkdir('dir3', 0600) 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.mkdir('subdir') 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('a.txt', 0777) 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('b.txt', 0751) 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('c.txt', 0640) 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write(os.path.join('subdir', 'd.txt'), 0640) 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Zip, unzip. 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zip_utils.zip('input', 'test.zip') 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zip_utils.unzip('test.zip', 'output') 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Compare the inputs and outputs. 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot test_utils.compare_trees(self, 'input', 'output') 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot def test_blacklist(self): 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.tmp_dir(): 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Create input files and directories. 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw = test_utils.FileWriter(os.path.join(os.getcwd(), 'input')) 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.mkdir('.git') 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write(os.path.join('.git', 'index')) 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('somefile') 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('.DS_STORE') 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('leftover.pyc') 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.write('.pycfile') 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Zip, unzip. 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zip_utils.zip('input', 'test.zip', blacklist=['.git', '.DS*', '*.pyc']) 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zip_utils.unzip('test.zip', 'output') 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Remove the files/dirs we don't expect to see in output, so that we can 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # use self._compare_trees to check the results. 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.remove(os.path.join('.git', 'index')) 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.remove('.git') 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.remove('.DS_STORE') 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fw.remove('leftover.pyc') 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Compare results. 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot test_utils.compare_trees(self, 'input', 'output') 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot def test_nonexistent_dir(self): 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.tmp_dir(): 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with self.assertRaises(IOError): 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot zip_utils.zip('input', 'test.zip') 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif __name__ == '__main__': 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unittest.main() 75