Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import os | 5 import os |
| 6 import stat | 6 import stat |
| 7 import unittest | 7 import unittest |
| 8 | 8 |
| 9 import mock | 9 import mock |
| 10 | 10 |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 633 self.assertEqual('dep_info2d', dep_manager._GetDependencyInfo( | 633 self.assertEqual('dep_info2d', dep_manager._GetDependencyInfo( |
| 634 'dep2', 'missing_plat')) | 634 'dep2', 'missing_plat')) |
| 635 # Dependency and platform in the dependency manager. A default exists. | 635 # Dependency and platform in the dependency manager. A default exists. |
| 636 self.assertEqual('dep_info23', dep_manager._GetDependencyInfo( | 636 self.assertEqual('dep_info23', dep_manager._GetDependencyInfo( |
| 637 'dep2', 'plat3')) | 637 'dep2', 'plat3')) |
| 638 # Dependency and platform in the dependency manager. No default exists. | 638 # Dependency and platform in the dependency manager. No default exists. |
| 639 self.assertEqual('dep_info12', dep_manager._GetDependencyInfo( | 639 self.assertEqual('dep_info12', dep_manager._GetDependencyInfo( |
| 640 'dep1', 'plat2')) | 640 'dep1', 'plat2')) |
| 641 | 641 |
| 642 | 642 |
| 643 @mock.patch('os.path.exists') | |
| 644 def testLocalPathHelper(self, exists_mock): | |
| 645 dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) | |
| 646 | 643 |
| 644 class TestLocalPath(fake_filesystem_unittest.TestCase): | |
| 645 def setUp(self): | |
| 646 self.setUpPyfakefs() | |
| 647 self.config_path = '/bar/test/dep_config.json' | |
| 648 # local_path0 doesn't exist locally. | |
| 649 self.local_path0 = '/foo/local_path0' | |
| 650 # local_path[1-4] exist locally and have been modified in increasing order. | |
| 651 self.local_path1 = '/foo/local_path1' | |
| 652 self.local_path2 = '/bar/local_path2' | |
| 653 self.local_path3 = '/baz/local_path3' | |
| 654 self.local_path4 = '/foo/local_path4' | |
| 655 self.fs.CreateFile(self.config_path, contents='{}') | |
| 656 file1 = self.fs.CreateFile(self.local_path1, contents='1010110', | |
| 657 st_mode=stat.S_IWOTH) | |
| 658 file2 = self.fs.CreateFile(self.local_path2, contents='1010110', | |
| 659 st_mode=stat.S_IWOTH) | |
| 660 file3 = self.fs.CreateFile(self.local_path3, contents='1010110', | |
| 661 st_mode=stat.S_IWOTH) | |
| 662 file4 = self.fs.CreateFile(self.local_path4, contents='1010110', | |
| 663 st_mode=stat.S_IWOTH) | |
| 664 file2.SetMTime(file1.st_mtime + 1) | |
| 665 file3.SetMTime(file1.st_mtime + 2) | |
| 666 file4.SetMTime(file1.st_mtime + 3) | |
| 667 | |
| 668 def testLocalPathHelper(self): | |
| 647 # There is no local path for the given dependency. | 669 # There is no local path for the given dependency. |
|
eakuefner
2015/10/09 16:29:17
Can you put each of these cases into a separate un
| |
| 648 dep_info.local_paths = {} | 670 dep_info = dependency_manager.DependencyInfo('dep', 'plat', 'config') |
| 671 self.assertFalse(dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 672 | |
| 673 # There is a local path for the given dependency, but it doesn't exist. | |
| 674 dep_info = dependency_manager.DependencyInfo( | |
| 675 'dep', 'plat', 'config', local_paths=[self.local_path0]) | |
| 649 self.assertEqual(None, | 676 self.assertEqual(None, |
| 650 dependency_manager.DependencyManager._LocalPath(dep_info)) | 677 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 651 | 678 |
| 652 # There is a local path for the given dependency, but it doesn't exist. | 679 # There is a local path for the given dependency, and it does exist. |
| 653 exists_mock.side_effect = [False] | 680 dep_info = dependency_manager.DependencyInfo( |
| 654 dep_info.local_paths = {'local_path0'} | 681 'dep', 'plat', 'config', local_paths=[self.local_path1]) |
| 655 self.assertEqual(None, | 682 self.assertEqual(self.local_path1, |
| 656 dependency_manager.DependencyManager._LocalPath(dep_info)) | 683 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 657 exists_mock.assert_called_once_with('local_path0') | |
| 658 exists_mock.reset_mock() | |
| 659 | |
| 660 # There is a local path for the given dependency, and it does exist. | |
| 661 exists_mock.side_effect = [True] | |
| 662 dep_info.local_paths = {'local_path0'} | |
| 663 self.assertEqual('local_path0', | |
| 664 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 665 exists_mock.assert_called_once_with('local_path0') | |
| 666 exists_mock.reset_mock() | |
| 667 | 684 |
| 668 # There are multiple local paths for the given dependency, and the first one | 685 # There are multiple local paths for the given dependency, and the first one |
| 669 # exists. | 686 # exists. |
| 670 exists_mock.side_effect = [True] | 687 local_paths = [self.local_path1, self.local_path2, self.local_path3] |
| 671 dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} | 688 dep_info = dependency_manager.DependencyInfo( |
| 672 self.assertEqual('local_path0', | 689 'dep', 'plat', 'config', local_paths=local_paths) |
| 690 self.assertEqual(self.local_path1, | |
| 673 dependency_manager.DependencyManager._LocalPath(dep_info)) | 691 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 674 exists_mock.assert_called_once_with('local_path0') | |
| 675 exists_mock.reset_mock() | |
| 676 | 692 |
| 677 # There are multiple local paths for the given dependency, and the first one | 693 # There are multiple local paths for the given dependency, and the first one |
| 678 # doesn't exist but the second one does. | 694 # doesn't exist but the second and third do, created in order. |
| 679 exists_mock.side_effect = [False, True] | 695 local_paths = [self.local_path0, self.local_path1, self.local_path2] |
| 680 dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} | 696 dep_info = dependency_manager.DependencyInfo( |
| 681 self.assertEqual('local_path1', | 697 'dep', 'plat', 'config', local_paths=local_paths) |
| 698 self.assertEqual(self.local_path1, | |
| 682 dependency_manager.DependencyManager._LocalPath(dep_info)) | 699 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 683 expected_calls = [mock.call('local_path0'), mock.call('local_path1')] | 700 |
| 684 exists_mock.assert_has_calls(expected_calls, any_order=False) | 701 # There are multiple local paths for the given dependency, and the first one |
| 685 exists_mock.reset_mock() | 702 # doesn't exist but the second and third do, created in reverse order. |
| 703 local_paths = [self.local_path0, self.local_path3, self.local_path2, | |
| 704 self.local_path1] | |
| 705 dep_info = dependency_manager.DependencyInfo( | |
| 706 'dep', 'plat', 'config', local_paths=local_paths) | |
| 707 self.assertEqual(self.local_path3, | |
| 708 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 686 | 709 |
| 687 # There are multiple local paths for the given dependency, and the first and | 710 # There are multiple local paths for the given dependency, and the first and |
| 688 # second ones don't exist but the third one does. | 711 # second ones don't exist but the third one does. |
| 689 exists_mock.side_effect = [False, False, True] | 712 local_paths = ['/nope/local_path0', '/nope/local_path1', self.local_path2] |
| 690 dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} | 713 dep_info = dependency_manager.DependencyInfo( |
| 691 self.assertEqual('local_path2', | 714 'dep', 'plat', 'config', local_paths=local_paths) |
| 715 self.assertEqual(self.local_path2, | |
| 692 dependency_manager.DependencyManager._LocalPath(dep_info)) | 716 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 693 expected_calls = [mock.call('local_path0'), mock.call('local_path1'), | |
| 694 mock.call('local_path2')] | |
| 695 exists_mock.assert_has_calls(expected_calls, any_order=False) | |
| 696 exists_mock.reset_mock() | |
| 697 | 717 |
| 698 # There are multiple local paths for the given dependency, but none of them | 718 # There are multiple local paths for the given dependency, but none of them |
| 699 # exist. | 719 # exist. |
| 700 exists_mock.side_effect = [False, False, False] | 720 local_paths = ['/nope/local_path0', '/nope/local_path1', |
| 701 dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} | 721 '/nope/local_path2'] |
| 722 dep_info = dependency_manager.DependencyInfo( | |
| 723 'dep', 'plat', 'config', local_paths=local_paths) | |
| 702 self.assertEqual(None, | 724 self.assertEqual(None, |
| 703 dependency_manager.DependencyManager._LocalPath(dep_info)) | 725 dependency_manager.DependencyManager._LocalPath(dep_info)) |
| 704 expected_calls = [mock.call('local_path0'), mock.call('local_path1'), | 726 |
| 705 mock.call('local_path2')] | 727 def testLocalPathHelperWithPriorityGroups(self): |
| 706 exists_mock.assert_has_calls(expected_calls, any_order=False) | 728 # There is a local path in a priority group for the given dependency, but it |
| 707 exists_mock.reset_mock() | 729 # doesn't exist. |
| 730 dep_info = dependency_manager.DependencyInfo( | |
| 731 'dep', 'plat', 'config', local_paths=[[self.local_path0]]) | |
| 732 self.assertEqual(None, | |
| 733 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 734 | |
| 735 # There is a local path in a priority group for the given dependency, and it | |
| 736 # does exist. | |
| 737 dep_info = dependency_manager.DependencyInfo( | |
| 738 'dep', 'plat', 'config', local_paths=[[self.local_path1]]) | |
| 739 self.assertEqual(self.local_path1, | |
| 740 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 741 | |
| 742 local_paths = [self.local_path1, [self.local_path2, self.local_path3]] | |
| 743 dep_info = dependency_manager.DependencyInfo( | |
| 744 'dep', 'plat', 'config', local_paths=local_paths) | |
| 745 self.assertEqual(self.local_path1, | |
| 746 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 747 | |
| 748 local_paths = [self.local_path0, [self.local_path2, self.local_path3]] | |
| 749 dep_info = dependency_manager.DependencyInfo( | |
| 750 'dep', 'plat', 'config', local_paths=local_paths) | |
| 751 self.assertEqual(self.local_path3, | |
| 752 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 753 | |
| 754 local_paths = [[self.local_path1, self.local_path2], self.local_path3] | |
| 755 dep_info = dependency_manager.DependencyInfo( | |
| 756 'dep', 'plat', 'config', local_paths=local_paths) | |
| 757 self.assertEqual(self.local_path2, | |
| 758 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 759 | |
| 760 local_paths = [[self.local_path2, self.local_path1, self.local_path4], | |
| 761 self.local_path3] | |
| 762 dep_info = dependency_manager.DependencyInfo( | |
| 763 'dep', 'plat', 'config', local_paths=local_paths) | |
| 764 self.assertEqual(self.local_path4, | |
| 765 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 766 | |
| 767 local_paths = ['/nope/local_path0', ['/nope/local_path1', self.local_path2], | |
| 768 self.local_path3] | |
| 769 dep_info = dependency_manager.DependencyInfo( | |
| 770 'dep', 'plat', 'config', local_paths=local_paths) | |
| 771 self.assertEqual(self.local_path2, | |
| 772 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 773 | |
| 774 local_paths = [['/nope/local_path0', '/nope/local_path1'], self.local_path2] | |
| 775 dep_info = dependency_manager.DependencyInfo( | |
| 776 'dep', 'plat', 'config', local_paths=local_paths) | |
| 777 self.assertEqual(self.local_path2, | |
| 778 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 779 | |
| 780 local_paths = [['/nope/local_path0', '/nope/local_path1'], | |
| 781 '/nope/local_path2'] | |
| 782 dep_info = dependency_manager.DependencyInfo( | |
| 783 'dep', 'plat', 'config', local_paths=local_paths) | |
| 784 self.assertEqual(None, | |
| 785 dependency_manager.DependencyManager._LocalPath(dep_info)) | |
| 708 | 786 |
| 709 | 787 |
| 710 class TestCloudStoragePath(fake_filesystem_unittest.TestCase): | 788 class TestCloudStoragePath(fake_filesystem_unittest.TestCase): |
| 711 def setUp(self): | 789 def setUp(self): |
| 712 self.setUpPyfakefs() | 790 self.setUpPyfakefs() |
| 713 self.config_path = '/test/dep_config.json' | 791 self.config_path = '/test/dep_config.json' |
| 714 self.fs.CreateFile(self.config_path, contents='{}') | 792 self.fs.CreateFile(self.config_path, contents='{}') |
| 715 self.download_path = '/foo/download_path' | 793 self.download_path = '/foo/download_path' |
| 716 self.fs.CreateFile( | 794 self.fs.CreateFile( |
| 717 self.download_path, contents='1010110', st_mode=stat.S_IWOTH) | 795 self.download_path, contents='1010110', st_mode=stat.S_IWOTH) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 775 | 853 |
| 776 cs_get_mock.side_effect = cloud_storage.PermissionError | 854 cs_get_mock.side_effect = cloud_storage.PermissionError |
| 777 self.assertRaises( | 855 self.assertRaises( |
| 778 cloud_storage.PermissionError, | 856 cloud_storage.PermissionError, |
| 779 dependency_manager.DependencyManager._CloudStoragePath, self.dep_info) | 857 dependency_manager.DependencyManager._CloudStoragePath, self.dep_info) |
| 780 | 858 |
| 781 cs_get_mock.side_effect = cloud_storage.CredentialsError | 859 cs_get_mock.side_effect = cloud_storage.CredentialsError |
| 782 self.assertRaises( | 860 self.assertRaises( |
| 783 cloud_storage.CredentialsError, | 861 cloud_storage.CredentialsError, |
| 784 dependency_manager.DependencyManager._CloudStoragePath, self.dep_info) | 862 dependency_manager.DependencyManager._CloudStoragePath, self.dep_info) |
| OLD | NEW |