Index: tools/telemetry/catapult_base/dependency_manager/dependency_manager_unittest.py |
diff --git a/tools/telemetry/catapult_base/dependency_manager/dependency_manager_unittest.py b/tools/telemetry/catapult_base/dependency_manager/dependency_manager_unittest.py |
index e0486b62f7713288ddcd74000c0cae654c8503b3..ed64a19e9355359d53bbdfcf8ca88a0637b2c156 100644 |
--- a/tools/telemetry/catapult_base/dependency_manager/dependency_manager_unittest.py |
+++ b/tools/telemetry/catapult_base/dependency_manager/dependency_manager_unittest.py |
@@ -640,71 +640,149 @@ class DependencyManagerTest(unittest.TestCase): |
'dep1', 'plat2')) |
- @mock.patch('os.path.exists') |
- def testLocalPathHelper(self, exists_mock): |
- dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) |
+class TestLocalPath(fake_filesystem_unittest.TestCase): |
+ def setUp(self): |
+ self.setUpPyfakefs() |
+ self.config_path = '/bar/test/dep_config.json' |
+ # local_path0 doesn't exist locally. |
+ self.local_path0 = '/foo/local_path0' |
+ # local_path[1-4] exist locally and have been modified in increasing order. |
+ self.local_path1 = '/foo/local_path1' |
+ self.local_path2 = '/bar/local_path2' |
+ self.local_path3 = '/baz/local_path3' |
+ self.local_path4 = '/foo/local_path4' |
+ self.fs.CreateFile(self.config_path, contents='{}') |
+ file1 = self.fs.CreateFile(self.local_path1, contents='1010110', |
+ st_mode=stat.S_IWOTH) |
+ file2 = self.fs.CreateFile(self.local_path2, contents='1010110', |
+ st_mode=stat.S_IWOTH) |
+ file3 = self.fs.CreateFile(self.local_path3, contents='1010110', |
+ st_mode=stat.S_IWOTH) |
+ file4 = self.fs.CreateFile(self.local_path4, contents='1010110', |
+ st_mode=stat.S_IWOTH) |
+ file2.SetMTime(file1.st_mtime + 1) |
+ file3.SetMTime(file1.st_mtime + 2) |
+ file4.SetMTime(file1.st_mtime + 3) |
+ |
+ def testLocalPathHelper(self): |
# 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
|
- dep_info.local_paths = {} |
- self.assertEqual(None, |
- dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ dep_info = dependency_manager.DependencyInfo('dep', 'plat', 'config') |
+ self.assertFalse(dependency_manager.DependencyManager._LocalPath(dep_info)) |
# There is a local path for the given dependency, but it doesn't exist. |
- exists_mock.side_effect = [False] |
- dep_info.local_paths = {'local_path0'} |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=[self.local_path0]) |
self.assertEqual(None, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- exists_mock.assert_called_once_with('local_path0') |
- exists_mock.reset_mock() |
# There is a local path for the given dependency, and it does exist. |
- exists_mock.side_effect = [True] |
- dep_info.local_paths = {'local_path0'} |
- self.assertEqual('local_path0', |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=[self.local_path1]) |
+ self.assertEqual(self.local_path1, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- exists_mock.assert_called_once_with('local_path0') |
- exists_mock.reset_mock() |
# There are multiple local paths for the given dependency, and the first one |
# exists. |
- exists_mock.side_effect = [True] |
- dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} |
- self.assertEqual('local_path0', |
+ local_paths = [self.local_path1, self.local_path2, self.local_path3] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path1, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- exists_mock.assert_called_once_with('local_path0') |
- exists_mock.reset_mock() |
# There are multiple local paths for the given dependency, and the first one |
- # doesn't exist but the second one does. |
- exists_mock.side_effect = [False, True] |
- dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} |
- self.assertEqual('local_path1', |
+ # doesn't exist but the second and third do, created in order. |
+ local_paths = [self.local_path0, self.local_path1, self.local_path2] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path1, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ # There are multiple local paths for the given dependency, and the first one |
+ # doesn't exist but the second and third do, created in reverse order. |
+ local_paths = [self.local_path0, self.local_path3, self.local_path2, |
+ self.local_path1] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path3, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- expected_calls = [mock.call('local_path0'), mock.call('local_path1')] |
- exists_mock.assert_has_calls(expected_calls, any_order=False) |
- exists_mock.reset_mock() |
# There are multiple local paths for the given dependency, and the first and |
# second ones don't exist but the third one does. |
- exists_mock.side_effect = [False, False, True] |
- dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} |
- self.assertEqual('local_path2', |
+ local_paths = ['/nope/local_path0', '/nope/local_path1', self.local_path2] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path2, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- expected_calls = [mock.call('local_path0'), mock.call('local_path1'), |
- mock.call('local_path2')] |
- exists_mock.assert_has_calls(expected_calls, any_order=False) |
- exists_mock.reset_mock() |
# There are multiple local paths for the given dependency, but none of them |
# exist. |
- exists_mock.side_effect = [False, False, False] |
- dep_info.local_paths = {'local_path0', 'local_path1', 'local_path2'} |
+ local_paths = ['/nope/local_path0', '/nope/local_path1', |
+ '/nope/local_path2'] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(None, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ def testLocalPathHelperWithPriorityGroups(self): |
+ # There is a local path in a priority group for the given dependency, but it |
+ # doesn't exist. |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=[[self.local_path0]]) |
+ self.assertEqual(None, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ # There is a local path in a priority group for the given dependency, and it |
+ # does exist. |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=[[self.local_path1]]) |
+ self.assertEqual(self.local_path1, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [self.local_path1, [self.local_path2, self.local_path3]] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path1, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [self.local_path0, [self.local_path2, self.local_path3]] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path3, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [[self.local_path1, self.local_path2], self.local_path3] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path2, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [[self.local_path2, self.local_path1, self.local_path4], |
+ self.local_path3] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path4, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = ['/nope/local_path0', ['/nope/local_path1', self.local_path2], |
+ self.local_path3] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path2, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [['/nope/local_path0', '/nope/local_path1'], self.local_path2] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
+ self.assertEqual(self.local_path2, |
+ dependency_manager.DependencyManager._LocalPath(dep_info)) |
+ |
+ local_paths = [['/nope/local_path0', '/nope/local_path1'], |
+ '/nope/local_path2'] |
+ dep_info = dependency_manager.DependencyInfo( |
+ 'dep', 'plat', 'config', local_paths=local_paths) |
self.assertEqual(None, |
dependency_manager.DependencyManager._LocalPath(dep_info)) |
- expected_calls = [mock.call('local_path0'), mock.call('local_path1'), |
- mock.call('local_path2')] |
- exists_mock.assert_has_calls(expected_calls, any_order=False) |
- exists_mock.reset_mock() |
class TestCloudStoragePath(fake_filesystem_unittest.TestCase): |