| #!/usr/bin/env python |
| # |
| # Copyright 2016 Google Inc. |
| # |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| |
| """Tests for zip_utils.""" |
| |
| |
| import filecmp |
| import os |
| import test_utils |
| import unittest |
| import utils |
| import uuid |
| import zip_utils |
| |
| |
| class ZipUtilsTest(unittest.TestCase): |
| def test_zip_unzip(self): |
| with utils.tmp_dir(): |
| fw = test_utils.FileWriter(os.path.join(os.getcwd(), 'input')) |
| # Create input files and directories. |
| fw.mkdir('mydir') |
| fw.mkdir('anotherdir', 0o666) |
| fw.mkdir('dir3', 0o600) |
| fw.mkdir('subdir') |
| fw.write('a.txt', 0o777) |
| fw.write('b.txt', 0o751) |
| fw.write('c.txt', 0o640) |
| fw.write(os.path.join('subdir', 'd.txt'), 0o640) |
| |
| # Zip, unzip. |
| zip_utils.zip('input', 'test.zip') |
| zip_utils.unzip('test.zip', 'output') |
| |
| # Compare the inputs and outputs. |
| test_utils.compare_trees(self, 'input', 'output') |
| |
| def test_to_skip(self): |
| with utils.tmp_dir(): |
| # Create input files and directories. |
| fw = test_utils.FileWriter(os.path.join(os.getcwd(), 'input')) |
| fw.mkdir('.git') |
| fw.write(os.path.join('.git', 'index')) |
| fw.write('somefile') |
| fw.write('.DS_STORE') |
| fw.write('leftover.pyc') |
| fw.write('.pycfile') |
| |
| # Zip, unzip. |
| zip_utils.zip('input', 'test.zip', to_skip=['.git', '.DS*', '*.pyc']) |
| zip_utils.unzip('test.zip', 'output') |
| |
| # Remove the files/dirs we don't expect to see in output, so that we can |
| # use self._compare_trees to check the results. |
| fw.remove(os.path.join('.git', 'index')) |
| fw.remove('.git') |
| fw.remove('.DS_STORE') |
| fw.remove('leftover.pyc') |
| |
| # Compare results. |
| test_utils.compare_trees(self, 'input', 'output') |
| |
| def test_nonexistent_dir(self): |
| with utils.tmp_dir(): |
| with self.assertRaises(IOError): |
| zip_utils.zip('input', 'test.zip') |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |